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
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
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
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
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