Пример #1
0
    def index(self, filename):
        # skip already indexed
        if self.is_indexed(filename):
            return

        try:
            id3 = EasyID3(filename)
            tags = {
                "artist": None,
                "title": None,
                "album": None,
                "genre": None,
                "date": None,
                "length": None,
            }

            for k, v in id3.items():
                tags[k] = v[0].lower()

            if tags["artist"] is None or tags["title"] is None:
                print "Artist or title not set in " + \
                    filename + " - skipping file"
                return

            if tags["artist"] is not None:
                tags["artist"], created = Artist.objects.get_or_create(
                    Name=tags["artist"])
            if tags["album"] is not None and tags["artist"] is not None:
                tags["album"], created = Album.objects.get_or_create(
                    Title=tags["album"])
            if tags["genre"] is not None:
                tags["genre"], created = Genre.objects.get_or_create(
                    Name=tags["genre"])
            if tags["date"] is not None:
                try:
                    tags["date"] = int(tags["date"])
                except ValueError:
                    tags["date"] = None

            audio = MP3(filename)
            tags["length"] = int(audio.info.length)

            song = Song(Artist=tags["artist"],
                        Album=tags["album"],
                        Genre=tags["genre"],
                        Title=tags["title"],
                        Year=tags["date"],
                        Length=tags["length"],
                        Filename=filename)
            song.save()
        except HeaderNotFoundError:
            print "File contains invalid header data: " + filename
        except ID3NoHeaderError:
            print "File does not contain an id3 header: " + filename
        except IndexError:
            print "Index error for file: " + filename
Пример #2
0
 def addSong(self,
             artist,
             album=None,
             genre=None,
             title="TestTitle",
             year=2000,
             length=100,
             filename="/path/to/test.mp3"):
     # save a song
     song = Song(Artist=artist,
                 Album=album,
                 Genre=genre,
                 Title=title,
                 Year=year,
                 Length=length,
                 Filename=filename)
     song.save()
     return song