# Copyright (c) 2004-5 Marek Hnilica. All rights reserved. # Module for reading tag informations in whole directory. # Distributed under GPL version 2, or (at your option) later # ID3v1 will most likely encounter error in file - it seeks file from the end import glob,os,ID3,string,ID3V2,mp3,sys,os.path def CV(v1,v2): if len(v1)>len(v2): return v1 else: return v2 def GetTag(directory): os.chdir(directory) FileList=glob.glob('*.[Mm][Pp]3') Tags=[] Errors=[] if not FileList==[]: FileList.sort() for filename in FileList: try: id1=ID3.ID3(filename) except: Errors.append(filename) continue id2=ID3V2.ID3v2(filename) id2.COMM=id2.COMM[3:] mpfile=mp3.detect_mp3(filename) if not mpfile==0: if mpfile['vbr']: bitrate=mpfile['vbrrate'] else: bitrate=mpfile['bitrate'] time=mpfile['time'] else: Errors.append(filename) continue if id1.has_key('TITLE'): title=id1['TITLE'] else: title='' if id1.has_key('ARTIST'): artist=id1['ARTIST'] else: artist='' if id1.has_key('ALBUM'): album=id1['ALBUM'] else: album='' if id1.has_key('GENRE'): genre=id1['GENRE'] else: genre='' if id1.has_key('TRACKNUMBER'): track=id1['TRACKNUMBER'] else: track='' if id1.has_key('YEAR'): year=id1['YEAR'] else: year='' if id1.has_key('COMMENT'): comm=id1['COMMENT'] else: comm='' title=CV(id2.TITLE,title) artist=CV(id2.ARTIST,artist) album=CV(id2.ALBUM,album) if genre=='Unknown Genre': genre=CV(id2.GENRE,'') else: genre=CV(id2.GENRE,genre) year=CV(id2.YEAR,year) genre=CV(id2.GENRE,genre) track=CV(id2.TRACK,track) comm=CV(id2.COMM,comm) if id2.TagList.has_key('APIC'): APIC=id2.TagList['APIC'] else: APIC='' Tags.append((os.path.abspath(filename),title,artist,album,genre,track,year,bitrate,time,comm,APIC,os.path.abspath(filename))) return Tags,Errors