Author: duncan
Date: Tue Mar 27 19:48:47 2007
New Revision: 9399
Modified:
branches/rel-1/freevo/src/audio/__init__.py
branches/rel-1/freevo/src/directory.py
branches/rel-1/freevo/src/util/mediainfo.py
Log:
[ 1687649 ] front.jpg won't show on audio items
Some fixes applied.
Modified: branches/rel-1/freevo/src/audio/__init__.py
==============================================================================
--- branches/rel-1/freevo/src/audio/__init__.py (original)
+++ branches/rel-1/freevo/src/audio/__init__.py Tue Mar 27 19:48:47 2007
@@ -85,14 +85,14 @@
"""
set informations for a diritem based on the content, etc.
"""
- if not diritem.image and os.path.exists(diritem.dir):
+ if os.path.exists(diritem.dir):
timestamp = os.stat(diritem.dir)[stat.ST_MTIME]
if not diritem['coversearch_timestamp'] or \
timestamp > diritem['coversearch_timestamp']:
# Pick an image if it is the only image in this dir, or it
matches
# the configurable regexp
files = util.find_matches(vfs.listdir(diritem.dir,
include_overlay=True),
- ('jpg', 'gif', 'png' ))
+ ('jpg', 'gif', 'png'))
if len(files) == 1:
diritem.image = os.path.join(diritem.dir, files[0])
elif len(files) > 1:
@@ -101,7 +101,7 @@
diritem.image = os.path.join(diritem.dir, covers[0])
diritem.store_info('coversearch_timestamp', timestamp)
diritem.store_info('coversearch_result', diritem.image)
- else:
+ elif not diritem['coversearch_result']:
diritem.image = diritem['coversearch_result']
if not diritem.info.has_key('title') and diritem.parent:
Modified: branches/rel-1/freevo/src/directory.py
==============================================================================
--- branches/rel-1/freevo/src/directory.py (original)
+++ branches/rel-1/freevo/src/directory.py Tue Mar 27 19:48:47 2007
@@ -35,6 +35,8 @@
import stat
import copy
import rc
+from pprint import pformat
+
import util.mediainfo as mediainfo
import kaa.metadata as mmpython
@@ -101,7 +103,7 @@
self.autovars = [ ('num_dir_items', 0), ('show_all_items', False) ]
Playlist.__init__(self, parent=parent, display_type=display_type)
self.type = 'dir'
- self.menu = None
+ self.menu = None
# store FileInformation for moving/copying
self.files = FileInformation()
@@ -112,19 +114,25 @@
self.dir = os.path.abspath(directory)
self.info = mediainfo.get_dir(directory)
- mminfo = mmpython.parse(directory)
+ #FIXME This should be done in the cache create
+ if not self.image:
+ mminfo = mmpython.parse(directory)
+ if mminfo['image']:
+ self.image = mminfo['image']
+ if mminfo['title']:
+ self.title = mminfo['title']
+ if mminfo['comment']:
+ self.comment = mminfo['comment']
if name:
self.name = Unicode(name)
elif self.info['title:filename']:
self.name = self.info['title:filename']
- elif mminfo['title']:
- self.name = mminfo['title']
+ elif self.info['title']:
+ self.name = self.info['title']
else:
self.name = util.getname(directory, skip_ext=False)
- self.comment = mminfo['comment']
-
if add_args == None and hasattr(parent, 'add_args'):
add_args = parent.add_args
@@ -164,13 +172,14 @@
self.modified_vars = []
# Check for a cover in current dir
- if mminfo['image']:
- image = mminfo['image']
- else:
- image = util.getimage(os.path.join(directory, 'cover'))
+ image = util.getimage(os.path.join(directory, 'cover'))
+ if self.info['image']:
+ image = self.info['image']
if image:
self.image = image
self.files.image = image
+
+ # Check for a folder.fxd in current dir
self.folder_fxd = directory+'/folder.fxd'
if vfs.isfile(self.folder_fxd):
self.set_fxd_file(self.folder_fxd)
@@ -188,19 +197,15 @@
def __str__(self):
- s = '\ndirectory:DirItem:s:'
- s += ' name=%r' % self.name
- s += ' dir=%r' % self.dir
- s += ' info=%r' % self.info
- #s += ' __dict__=%r' % self.__dict__
+ s = pformat(self, depth=2)
return s
def __repr__(self):
- s = '\ndirectory:DirItem:r:'
- s += ' name=%r' % self.name
- s += ' dir=%r' % self.dir
- s += ' info=%r' % self.info
+ if hasattr(self, 'name'):
+ s = '<%s: %r>' % (self.name, self.__class__)
+ else:
+ s = '<%r>' % (self.__class__)
return s
@@ -371,7 +376,7 @@
"""
create some metainfo for the directory
"""
- display_type = self.display_type
+ display_type = self.display_type
if self.display_type == 'tv':
display_type = 'video'
@@ -387,7 +392,7 @@
( 'num_%s_items' % name, 0 ) ]
try:
- timestamp = os.stat(self.dir)[stat.ST_MTIME]
+ timestamp = os.stat(self.dir)[stat.ST_MTIME]
except OSError:
return
Modified: branches/rel-1/freevo/src/util/mediainfo.py
==============================================================================
--- branches/rel-1/freevo/src/util/mediainfo.py (original)
+++ branches/rel-1/freevo/src/util/mediainfo.py Tue Mar 27 19:48:47 2007
@@ -35,6 +35,7 @@
from pprint import pformat
import kaa.metadata as mmpython
+import kaa.metadata
import config
import util
@@ -264,7 +265,7 @@
self.uncachable_keys = [ 'thumbnail', 'url' ]
- def simplify(self, object):
+ def simplify(self, object, debug=0):
"""
kaa metadata has huge objects to cache, we don't need them.
This function simplifies them to be only string, intger, dict or
@@ -274,6 +275,8 @@
"""
ret = {}
for k in object.keys():
+ if debug:
+ print 'object[%s] = %r' % (k, getattr(object, k))
if not k in self.uncachable_keys and getattr(object,k) != None:
value = getattr(object,k)
if isstring(value):
@@ -281,7 +284,7 @@
if value:
ret[k] = value
- for k in ( 'video', 'audio', 'chapters', 'subtitles', 'tracks'):
+ for k in ( 'video', 'audio', 'chapters', 'subtitles', 'tracks' ):
# if it's an AVCORE object, also simplify video and audio
# lists to string and it
if hasattr(object, k) and getattr(object, k):
@@ -289,10 +292,12 @@
for o in getattr(object, k):
ret[k].append(self.simplify(o))
- for k in ('mime', 'name', 'pos' ):
+ for k in ( 'mime', 'name', 'pos', 'title', 'comment', 'media', 'image'
):
if hasattr(object, k) and getattr(object, k) != None:
ret[k] = getattr(object, k)
+ if debug:
+ print ret
return ret
@@ -300,13 +305,20 @@
"""
create mmpython information about the given file
"""
+ data = os.path.split(filename)
+ if len(data) == 2:
+ if data[1] == '.directory':
+ filename = data[0]
+
info = mmpython.parse(filename)
+
if info:
thumbnail = None
if info.has_key('thumbnail'):
thumbnail = info.thumbnail
info = self.simplify(info)
+
name = util.getname(filename)
if name == name.upper() and info.has_key('type') and \
info['type'] in ('DVD', 'VCD'):
@@ -325,6 +337,8 @@
elif config.CACHE_IMAGES and info.has_key('mime') and info['mime']
and \
info['mime'].startswith('image'):
util.cache_image(filename)
+ if info.has_key('media') and info['media'] == 'MEDIA_DIRECTORY':
+ pass
return info
return {}
@@ -418,23 +432,15 @@
def __str__(self):
- s = '\nutil:mediainfo:Info:s:'
- s += ' filename=%r' % self.filename
- s += ' disc=%r' % self.disc
- s += ' variables=%r' % self.variables
- s += ' mmdata=%r' % self.mmdata
- s += ' metadata=%r' % self.metadata
- s += ' self.__dict__=%r' % self.__dict__
+ s = pformat(self, depth=2)
return s
def __repr__(self):
- s = '\nutil:mediainfo:Info:r:'
- s += ' filename=%r' % self.filename
- s += ' disc=%r' % self.disc
- s += ' variables=%r' % self.variables
- s += ' mmdata=%r' % self.mmdata
- s += ' metadata=%r' % self.metadata
+ if hasattr(self, 'filename'):
+ s = '%s: %r' % (self.filename, self.__class__)
+ else:
+ s = '%r' % (self.__class__)
return s
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog