Update of /cvsroot/freevo/freevo/src/mediadb
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16882
Modified Files:
audio_parser.py cache.py db.py item.py listing.py parser.py
video_parser.py
Log Message:
add fast cache option
Index: parser.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/parser.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** parser.py 5 Apr 2005 18:48:18 -0000 1.2
--- parser.py 7 Apr 2005 20:42:11 -0000 1.3
***************
*** 12,15 ****
--- 12,18 ----
import util.vfs as vfs
+ # mediadb imports
+ import db
+
# list of external parser
_parser = []
***************
*** 105,114 ****
! def parse(filename, object):
"""
Add additional informations to filename, object.
"""
mminfo = None
! if not object['ext'] in [ 'xml', 'fxd' ]:
mminfo = mmpython.parse(filename)
title = getname(filename)
--- 108,120 ----
! def parse(basename, filename, object, quick=False):
"""
Add additional informations to filename, object.
"""
+ if object.has_key('type'):
+ del object['url']
+ del object['type']
mminfo = None
! if not quick and not object['ext'] in [ 'xml', 'fxd' ]:
mminfo = mmpython.parse(filename)
title = getname(filename)
***************
*** 130,160 ****
if os.path.isdir(filename):
object['isdir'] = True
! listing = vfs.listdir(filename, include_overlay=True)
! # get directory cover
! for l in listing:
! if l.endswith('/cover.png') or l.endswith('/cover.jpg') or \
! l.endswith('/cover.gif'):
! object['cover'] = l
! break
! else:
! if object.has_key('cover'):
! del object['cover']
! if object.has_key('audiocover'):
! del object['audiocover']
! files = util.find_matches(listing, ('jpg', 'gif', 'png' ))
! if len(files) == 1:
! object['audiocover'] = files[0]
! elif len(files) > 1 and len(files) < 10:
! files = filter(cover_filter, files)
! if files:
object['audiocover'] = files[0]
! # save directory overlay mtime
! overlay = vfs.getoverlay(filename)
! if os.path.isdir(overlay):
! mtime = os.stat(overlay)[stat.ST_MTIME]
! object['overlay_mtime'] = mtime
! else:
! object['overlay_mtime'] = 0
else:
if object.has_key('isdir'):
--- 136,181 ----
if os.path.isdir(filename):
object['isdir'] = True
! if vfs.abspath(filename + '/' + basename + '.fxd'):
! # directory is covering a fxd file
! object['type'] = 'fxd'
! if not quick:
! # Create a simple (quick) cache of subdirs to get some basic idea
! # about the files inside the directory
! c = db.Cache(filename)
! if c.num_changes():
! c.add_missing()
! listing = vfs.listdir(filename, include_overlay=True)
! # get directory cover
! for l in listing:
! if l.endswith('/cover.png') or l.endswith('/cover.jpg') or \
! l.endswith('/cover.gif'):
! object['cover'] = l
! break
! else:
! if object.has_key('cover'):
! del object['cover']
! if object.has_key('audiocover'):
! del object['audiocover']
! files = util.find_matches(listing, ('jpg', 'gif', 'png' ))
! if len(files) == 1:
object['audiocover'] = files[0]
+ elif len(files) > 1 and len(files) < 10:
+ files = filter(cover_filter, files)
+ if files:
+ object['audiocover'] = files[0]
! # check for fxd files in the directory
! fxd = vfs.abspath(filename + '/folder.fxd')
! if fxd:
! object['fxd'] = fxd
! elif object.has_key('fxd'):
! del object['fxd']
! # save directory overlay mtime
! overlay = vfs.getoverlay(filename)
! if os.path.isdir(overlay):
! mtime = os.stat(overlay)[stat.ST_MTIME]
! object['overlay_mtime'] = mtime
! else:
! object['overlay_mtime'] = 0
else:
if object.has_key('isdir'):
Index: video_parser.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/video_parser.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** video_parser.py 5 Apr 2005 18:48:18 -0000 1.2
--- video_parser.py 7 Apr 2005 20:42:11 -0000 1.3
***************
*** 3,11 ****
Parse additional data for video files.
"""
- if object.has_key('type') and object['type'] in ('DVD',):
- del object['url']
- del object['type']
if mminfo and mminfo.type == 'DVD':
! object['url'] = 'dvd://' + filename
object['type'] = 'dvd'
--- 3,8 ----
Parse additional data for video files.
"""
if mminfo and mminfo.type == 'DVD':
! object['url'] = 'dvd://' + filename
object['type'] = 'dvd'
Index: cache.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/cache.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** cache.py 5 Apr 2005 18:48:18 -0000 1.2
--- cache.py 7 Apr 2005 20:42:11 -0000 1.3
***************
*** 76,82 ****
sys.__stdout__.flush()
! # config.AUDIO_ITEMS = [ ( 'foo', '/local/mp3/Artists/Dixie Chicks' ) ]
! # config.VIDEO_ITEMS = [ ( 'foo', '/local/video/movie' ) ]
! # config.IMAGE_ITEMS = [ ( 'foo', '/local/images/fotos/misc' ) ]
directories = []
--- 76,82 ----
sys.__stdout__.flush()
! config.AUDIO_ITEMS = [ ( 'foo', '/local/mp3/Artists/Dixie Chicks' ) ]
! config.VIDEO_ITEMS = [ ( 'foo', '/local/video/incoming' ) ]
! config.IMAGE_ITEMS = [ ( 'foo', '/local/images/fotos/misc' ) ]
directories = []
Index: item.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/item.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** item.py 4 Apr 2005 18:28:15 -0000 1.2
--- item.py 7 Apr 2005 20:42:11 -0000 1.3
***************
*** 47,50 ****
--- 47,52 ----
if not attr:
attr = {}
+ if basename:
+ attr['ext'] = basename[basename.rfind('.')+1:].lower()
self.attr = attr
self.basename = basename
Index: db.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/db.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** db.py 5 Apr 2005 18:48:18 -0000 1.3
--- db.py 7 Apr 2005 20:42:11 -0000 1.4
***************
*** 40,44 ****
# freevo imports
- import config
import util.vfs as vfs
import util.cache as cache
--- 40,43 ----
***************
*** 111,115 ****
# 'normal' files
self.items = self.data['items']
! # file sin the overlay dir
self.overlay = self.data['overlay']
# internal stuff about changes
--- 110,114 ----
# 'normal' files
self.items = self.data['items']
! # files in the overlay dir
self.overlay = self.data['overlay']
# internal stuff about changes
***************
*** 250,254 ****
'mtime_dep': []
}
! parser.parse(filename, info)
prefix = basename[:-len(ext)]
--- 249,253 ----
'mtime_dep': []
}
! parser.parse(basename, filename, info)
prefix = basename[:-len(ext)]
***************
*** 277,281 ****
# check changed files
log.debug('changed: %s' % filename)
! parser.parse(filename, info)
log.debug(info['mtime_dep'])
for key in info['mtime_dep']:
--- 276,280 ----
# check changed files
log.debug('changed: %s' % filename)
! parser.parse(basename, filename, info)
log.debug(info['mtime_dep'])
for key in info['mtime_dep']:
***************
*** 326,329 ****
--- 325,351 ----
+ def add_missing(self):
+ """
+ Add the new files still missing in the databse with
+ basic attributes.
+ """
+ if not self.__added:
+ return
+
+ for basename, filename in self.__added:
+ ext = basename[basename.rfind('.')+1:].lower()
+ if ext == basename:
+ ext = ''
+ info = { 'ext' : ext,
+ 'mtime' : 1,
+ 'mtime_dep': []
+ }
+ parser.parse(basename, filename, info, True)
+ if vfs.isoverlay(filename):
+ self.overlay[basename] = info
+ else:
+ self.items[basename] = info
+
+
def list(self):
"""
***************
*** 378,382 ****
# is saved to a new file.
self.changed = True
! parser.parse(filename, self.data)
self.save()
--- 400,405 ----
# is saved to a new file.
self.changed = True
! basename = filename[filename.rfind('/'):]
! parser.parse(basename, filename, self.data)
self.save()
Index: audio_parser.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/audio_parser.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** audio_parser.py 5 Apr 2005 18:56:28 -0000 1.3
--- audio_parser.py 7 Apr 2005 20:42:11 -0000 1.4
***************
*** 91,96 ****
return False
! # get a new listing again
! listing = Listing(dirinfo.filename)
# variables to scan
--- 91,96 ----
return False
! # reset listing
! listing.reset()
# variables to scan
Index: listing.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mediadb/listing.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** listing.py 5 Apr 2005 18:48:18 -0000 1.3
--- listing.py 7 Apr 2005 20:42:11 -0000 1.4
***************
*** 63,70 ****
! def update(self, callback=None):
if self.num_changes == 0:
return
! self.cache.parse(callback)
dirname = self.dirname
cache = self.cache
--- 63,73 ----
! def update(self, callback=None, quick=False):
if self.num_changes == 0:
return
! if quick:
! self.cache.add_missing()
! else:
! self.cache.parse(callback)
dirname = self.dirname
cache = self.cache
***************
*** 110,114 ****
! def match_type(self, type_list):
visible = self.visible
self.visible = []
--- 113,117 ----
! def match_type(self, type):
visible = self.visible
self.visible = []
***************
*** 122,125 ****
--- 125,133 ----
return ret
+
+ def reset(self):
+ self.visible = self.data
+
+
def __iter__(self):
return self.visible.__iter__()
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog