Update of /cvsroot/freevo/freevo/src/util
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19740/src/util

Modified Files:
        fileops.py mediainfo.py misc.py 
Log Message:
improve caching

Index: misc.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/util/misc.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -d -r1.34 -r1.35
*** misc.py     28 Feb 2004 21:04:17 -0000      1.34
--- misc.py     22 Mar 2004 11:04:51 -0000      1.35
***************
*** 11,14 ****
--- 11,17 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.35  2004/03/22 11:04:51  dischi
+ # improve caching
+ #
  # Revision 1.34  2004/02/28 21:04:17  dischi
  # unicode fixes
***************
*** 347,351 ****
      return string[0].upper() + string[1:]
  
!     
  def tagmp3 (filename, title=None, artist=None, album=None, track=None,
              tracktotal=None, year=None):
--- 350,354 ----
      return string[0].upper() + string[1:]
  
! 
  def tagmp3 (filename, title=None, artist=None, album=None, track=None,
              tracktotal=None, year=None):

Index: mediainfo.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/util/mediainfo.py,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** mediainfo.py        21 Mar 2004 09:39:54 -0000      1.37
--- mediainfo.py        22 Mar 2004 11:04:51 -0000      1.38
***************
*** 11,14 ****
--- 11,17 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.38  2004/03/22 11:04:51  dischi
+ # improve caching
+ #
  # Revision 1.37  2004/03/21 09:39:54  dischi
  # check for updated mmpython
***************
*** 71,74 ****
--- 74,78 ----
  
  import os, stat
+ import sys
  import copy
  
***************
*** 345,348 ****
--- 349,356 ----
          info = mmpython.Factory().create(filename)
          if info:
+             thumbnail = None
+             if info.has_key('thumbnail'):
+                 thumbnail = info.thumbnail
+                 
              info = self.simplify(info)
              name = util.getname(filename)
***************
*** 359,362 ****
--- 367,377 ----
                              info[variable] = video[variable]
  
+             if thumbnail and config.IMAGE_USE_EXIF_THUMBNAIL:
+                 util.cache_image(filename, thumbnail)
+             else:
+                 if info.has_key('mime') and info['mime'] and \
+                    info['mime'].startswith('image'):
+                     util.cache_image(filename)
+ 
              return info
          return {}
***************
*** 551,554 ****
--- 566,582 ----
  
  
+ class CacheStatus:
+     def __init__(self, num_changes, txt):
+         self.num_changes = num_changes
+         self.txt         = txt
+         self.pos         = 0
+         self.callback()
+         
+     def callback(self):
+         print '\r%-70s %3d%%' % (self.txt, (self.pos * 100 / self.num_changes)),
+         sys.__stdout__.flush()
+         self.pos += 1
+ 
+ 
  def cache_recursive(dirlist, verbose=False):
      """
***************
*** 578,585 ****
          if verbose:
              dname = d
!             if len(dname) > 65:
!                 dname = dname[:20] + ' [...] ' + dname[-40:]
!             print '  %4d/%-4d %s' % (all_dirs.index(d)+1, len(all_dirs), dname)
!         cache_dir(d)
      if all_dirs:
          print
--- 606,617 ----
          if verbose:
              dname = d
!             if len(dname) > 55:
!                 dname = dname[:15] + ' [...] ' + dname[-35:]
!             cache_status = CacheStatus(check_cache(d), '  %4d/%-4d %s' % \
!                                        (all_dirs.index(d)+1, len(all_dirs), dname))
!             cache_dir(d, cache_status.callback)
!             print
!         else:
!             cache_dir(d)
      if all_dirs:
          print

Index: fileops.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/util/fileops.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** fileops.py  27 Feb 2004 20:07:28 -0000      1.16
--- fileops.py  22 Mar 2004 11:04:51 -0000      1.17
***************
*** 11,14 ****
--- 11,17 ----
  # -----------------------------------------------------------------------
  # $Log$
+ # Revision 1.17  2004/03/22 11:04:51  dischi
+ # improve caching
+ #
  # Revision 1.16  2004/02/27 20:07:28  dischi
  # add function to check if a media is mounted
***************
*** 53,56 ****
--- 56,60 ----
  import os
  import sys
+ import stat
  import statvfs
  import string
***************
*** 59,62 ****
--- 63,68 ----
  import fnmatch
  import traceback
+ import Image
+ import cStringIO
  
  if float(sys.version[0:3]) < 2.3:
***************
*** 452,453 ****
--- 458,502 ----
  
  
+ #
+ # cache utils
+ #
+ 
+ def cache_image(filename, thumbnail=None):
+     """
+     cache image for faster access
+     """
+     sinfo = os.stat(filename)
+     thumb = vfs.getoverlay(filename + '.raw')
+     try:
+         if os.stat(thumb)[stat.ST_MTIME] > sinfo[stat.ST_MTIME]:
+             return
+     except OSError:
+         pass
+ 
+     if thumbnail:
+         image = Image.open(cStringIO.StringIO(thumbnail))
+     else:
+         try:
+             image = Image.open(filename)
+         except:
+             return
+ 
+     if not image:
+         return
+ 
+     try:
+         if image.size[0] > 300 and image.size[1] > 300:
+             image.thumbnail((300,300), Image.ANTIALIAS)
+ 
+         if image.mode == 'P':
+             image = image.convert('RGB')
+ 
+         # save for future use
+         data = (image.tostring(), image.size, image.mode)
+         save_pickle(data, thumb)
+     except Exception, e:
+         print 'error caching image %s' % filename
+         if config.DEBUG:
+             print e
+         
+     



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to