Update of /cvsroot/freevo/freevo/src/audio In directory sc8-pr-cvs1:/tmp/cvs-serv27629
Modified Files: __init__.py audioitem.py Log Message: changes for mmpython support Index: __init__.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/audio/__init__.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** __init__.py 6 Jun 2003 21:41:54 -0000 1.3 --- __init__.py 29 Jun 2003 20:42:14 -0000 1.4 *************** *** 10,13 **** --- 10,16 ---- # ----------------------------------------------------------------------- # $Log$ + # Revision 1.4 2003/06/29 20:42:14 dischi + # changes for mmpython support + # # Revision 1.3 2003/06/06 21:41:54 dischi # Set AUDIO_CACHE_VERSION to 2 to audio-rebuild the cache if the *************** *** 41,55 **** #endif import config import util - import cPickle as pickle - import md5 - import os - - from audioitem import AudioItem - AUDIO_CACHE_VERSION = 2 def cwd(parent, files): --- 44,53 ---- #endif + import mmpython import config import util from audioitem import AudioItem def cwd(parent, files): *************** *** 59,94 **** items = [] - if parent and parent.type == 'dir': - cache_file = '%s/audio/%s' % (config.FREEVO_CACHEDIR, - util.hexify(md5.new(parent.dir).digest())) - else: - cache_file = None - - if cache_file and os.path.isfile(cache_file): - version, cache = pickle.load(open(cache_file, 'r')) - if version != AUDIO_CACHE_VERSION: - print 'cache file has a wrong version' - cache = {} - else: - cache = {} - - - new_cache = {} - for file in util.find_matches(files, config.SUFFIX_AUDIO_FILES): ! try: ! data = cache[file] ! items += [ AudioItem(file, parent, data) ] ! new_cache[file] = data ! except KeyError: ! item = AudioItem(file, parent) ! new_cache[file] = item.dump() ! items += [ item ] ! files.remove(file) - - - if cache_file: - pickle.dump((AUDIO_CACHE_VERSION, new_cache), open(cache_file, 'w')) return items --- 57,68 ---- items = [] for file in util.find_matches(files, config.SUFFIX_AUDIO_FILES): ! if parent.media: ! url = 'cd://%s:%s:%s' % (parent.media.devicename, parent.media.mountdir, ! file[len(parent.media.mountdir)+1:]) ! else: ! url = file ! items.append(AudioItem(file, parent, mmpython.parse(url))) files.remove(file) return items Index: audioitem.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/audio/audioitem.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** audioitem.py 9 Jun 2003 18:12:50 -0000 1.26 --- audioitem.py 29 Jun 2003 20:42:14 -0000 1.27 *************** *** 10,13 **** --- 10,16 ---- # ----------------------------------------------------------------------- # $Log$ + # Revision 1.27 2003/06/29 20:42:14 dischi + # changes for mmpython support + # # Revision 1.26 2003/06/09 18:12:50 outlyer # Rename eyed3 to eyeD3 *************** *** 70,74 **** import time import re - import eyeD3 import imghdr import traceback --- 73,76 ---- *************** *** 91,112 **** """ ! def __init__(self, file, parent, cache = None, name = None): ! Item.__init__(self, parent) self.filename = file[:] if name: self.name = name ! else: self.name = util.getname(file) self.type = 'audio' - # variables only for AudioItem - self.title = '' - self.album = '' - self.artist = '' - self.length = 0 - self.track = 0 - self.trackof = 0 - self.year = 0 - self.url = '' self.start = 0 self.elapsed = 0 --- 93,106 ---- """ ! def __init__(self, file, parent, info = None, name = None): ! Item.__init__(self, parent, info) self.filename = file[:] + self.url = None if name: self.name = name ! elif not self.name: self.name = util.getname(file) self.type = 'audio' self.start = 0 self.elapsed = 0 *************** *** 116,146 **** self.valid = 1 ! if cache: ! self.restore(cache) ! ! else: ! # XXX This is really not a very smart way to do it. We should be ! # XXX able to handle files with messed up extentions. ! ! if re.match('.*[oO][gG]{2}$', self.filename): ! if DEBUG > 1: print "Got ogg..." ! self.set_info_ogg(self.filename) ! ! elif re.match('.*[mM][pP]3$', self.filename): ! if DEBUG > 1: print "Got mp3..." ! self.set_info_mp3(self.filename) ! ! elif re.match('.*[fF][xX][dD]$', self.filename): ! if DEBUG > 1: print "Got FXD...." ! self.set_info_radio(self.filename) ! ! else: ! if DEBUG > 1: print "Got something else..." ! ! if self.title: ! self.name = self.format_track() ! else: ! self.title = self.name ! cover_logo = os.path.dirname(file)+'/cover.' --- 110,118 ---- self.valid = 1 ! try: ! self.length = self.info['length'] ! except: ! self.length = 0 ! cover_logo = os.path.dirname(file)+'/cover.' *************** *** 195,213 **** self.image = image - if DEBUG > 1: - try: - print "DEBUG:" - print " Album: " + str(self.album) - print " Artist: " + str(self.artist) - print " Title: " + str(self.title) - print " Track: " + str(self.track) - print " Year: " + str(self.year) - print " Length: " + str(self.length) - print " Image: " + str(self.image) - print " URL: " + str(self.url) - except UnicodeError: - print "Oops.. Got UnicodeError.. doing nothing.. :)" - - def copy(self, obj): --- 167,170 ---- *************** *** 218,228 **** if obj.type == 'audio': self.title = obj.title - self.album = obj.album - self.artist = obj.artist - self.length = onj.length - self.track = obj.track - self.trackof = obj.trackof - self.year = obj.year self.start = obj.start self.elapsed = obj.elapsed self.remain = obj.remain --- 175,180 ---- if obj.type == 'audio': self.title = obj.title self.start = obj.start + self.length = obj.length self.elapsed = obj.elapsed self.remain = obj.remain *************** *** 233,243 **** - def dump(self): - return ( self.title, self.album, self.artist, self.length, - self.track, self.trackof, self.year, self.url ) - - def restore(self, data): - self.title, self.album, self.artist, self.length, self.track, \ - self.trackof, self.year, self.url = data def sort(self, mode=None): --- 185,188 ---- *************** *** 254,261 **** return the specific attribute as string or an empty string """ - if attr == 'year': - if self.year: - return str(self.year) - return '' if attr == 'length': return '%d:%02d' % (int(self.length / 60), int(self.length % 60)) --- 199,202 ---- *************** *** 311,428 **** return 1 - def set_info_ogg(self, file): - """ - Sets all the info variables with useful info from the oggfile. - - Arguments: Filename of file to get info from - Returns: 1 if success. - """ - try: - import ogg.vorbis - except ImportError: - return None - try: - vf = ogg.vorbis.VorbisFile(file) - vc = vf.comment() - except ogg.vorbis.VorbisError: - if DEBUG: print "Got VorbisError.. not an ogg file." - self.valid = 0 - return 0 - except IOError: - if DEBUG: print "Couldn't read the file %s." % (file) - self.valid = 0 - return 0 - - try: - if 'ALBUM' in vc.keys(): - self.album = vc['ALBUM'][0].encode('latin-1') - else: - self.album = '' - - if 'ARTIST' in vc.keys(): - self.artist = vc['ARTIST'][0].encode('latin-1') - else: - self.artist = '' - - if 'TITLE' in vc.keys(): - self.title = vc['TITLE'][0].encode('latin-1') - - if 'TRACK' in vc.keys(): - self.track = str(vc['TRACK'][0]) - elif 'TRACKNUMBER' in vc.keys(): - self.track = str(vc['TRACKNUMBER'][0]) - else: - self.track = '' - - if 'YEAR' in vc.keys(): - self.year = str(vc['YEAR'][0]) - else: - self.year = '' - except UnicodeError: - if DEBUG: print "Oops, got UnicodeError" - - self.length = vf.time_total( -1 ) - return 1 - - - def set_info_mp3(self, filename): - """ - Sets the info variables with info from the mp3 - - Arguments: filename - Returns: 1 if success - """ - - id3 = None - try: - id3 = eyeD3.Mp3AudioFile(filename) - except eyeD3.TagException: - try: - id3 = eyeD3.Mp3AudioFile(filename, 1) - except eyeD3.InvalidAudioFormatException: - # File is not an MP3 - self.valid = 0 - return 0 - except: - # The MP3 tag decoder crashed, assume the file is still - # MP3 and try to play it anyway - print 'music: oops, mp3 tag parsing failed!' - print 'music: filename = "%s"' % filename - traceback.print_exc() - except: - # The MP3 tag decoder crashed, assume the file is still - # MP3 and try to play it anyway - print 'music: oops, mp3 tag parsing failed!' - print 'music: filename = "%s"' % filename - traceback.print_exc() - - - if id3: - if id3.tag: - self.album = id3.tag.getAlbum() - self.artist = id3.tag.getArtist() - self.title = id3.tag.getTitle() - self.track,self.trackof = id3.tag.getTrackNum() - self.year = id3.tag.getYear() - self.length = id3.getPlayTime() - else: - self.album = 'Broken MP3 tag!' - - if not self.name: - self.name = os.path.splitext(os.path.basename(filename))[0] - if not self.track: - self.track = '' - return 1 - def set_info(self, artist, album, title, track, trackof, year): - self.album = album - self.track = track - self.trackof = trackof - self.artist = artist - self.year = year - self.title = title - - # ---------------------------------------------------------------------------- --- 252,257 ---- ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01 _______________________________________________ Freevo-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freevo-cvslog