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

Reply via email to