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