Пример #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(
                    Artist=tags["artist"],
                    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
Пример #2
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
Пример #3
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
Пример #4
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
Пример #5
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
            )

            try:
                mp3 = File(filename)
                apic = mp3.tags['APIC:']
                _md5 = md5(apic.data).hexdigest()
                extension = mimetypes.guess_extension(apic.mime)

                try:
                    artwork = Artwork.objects.get(MD5=_md5)
                except Artwork.DoesNotExist:
                    artwork = Artwork(MD5=_md5)
                    artwork.Image.save('image{}'.format(extension),
                                       ContentFile(apic.data))
                    artwork.save()

                song.Artwork = artwork
            except KeyError:
                pass

            song.save()

        except HeaderNotFoundError:
            print "File contains invalid header data: " + filename
        except ID3NoHeaderError:
            print "File does not contain an id3 header: " + filename