def parse(self): print os.path.abspath(self.filename) tag = MutagenFile(self.filename) if tag == None: print self.filename else: for key, value in tag.iteritems(): if key in GENERAL_KEYS.keys(): self.dict[ GENERAL_KEYS[key] ] = unicode(value) elif key in MP3_KEYS.keys(): self.dict[ MP3_KEYS[key] ] = unicode(value) elif key in MP4_KEYS.keys(): self.dict[ MP4_KEYS[key] ] = unicode(value)
class Metadata(object): """Get the metadata for a file. Data you probably need: artist title album tracknumber date""" def __init__(self, filename): self._audio = File(filename, easy=True) for k, v in self._audio.iteritems(): # drop any unicode character we can't decode into ascii so md5 # works (because md5 uses bytes, not characters) self._audio[k] = v[0].encode("ascii", "ignore") def __getattr__(self, name): return self._audio[name][0]
class Vorbis(object): def __init__(self, filename): self.filename = filename ext = os.path.splitext(filename)[1].lower() if ext == u'.flac': self.file = FLAC(filename) elif ext == u'.wma': self.file = ASF(filename) elif ext == u'.wv': self.file = WavPack(filename) elif ext in [u'.mpc', u'.mpp', u'.mp+']: self.file = Musepack(filename) elif ext in [u'.ogg', u'.ape']: self.file = File(filename) else: raise TypeError def readAll(self): return {k: unicode(v[0]) for k, v in self.file.iteritems()}