file_meta = Ogg(media)
elif file_ext.lower() == 'webm' or mimetypes.guess_type(media)[0] == 'video/webm':
file_meta = WebM(media)
- except:
+ except Exception, e:
+ self._err('Could not get specific media type class for %s' % (media))
+ self._err('Error: %s' % (str(e)))
pass
- file_meta.metadata['filename'] = file_name.decode("utf-8") # decode needed for some weird filenames
- file_meta.metadata['filepath'] = media.decode("utf-8") # decode needed for some weird filenames
self.q.task_done()
media_objs.append(file_meta)
return media_objs
media_description += media_description_item % (key.capitalize(),
media.metadata[key])
json_item[key] = media.metadata[key]
+ if self.feeds_showfilepath:
+ media_description += media_description_item % ('Filepath', media.media)
+ json_item['filepath'] = media.media
+ if self.feeds_showfilename:
+ media_description += media_description_item % ('Filename', media.file_name)
+ json_item['filename'] = media.file_name
media_description += '</table>'
title, artist, song = self.get_songmeta(media)
m = self.media_to_objs([self.media])
self.current_media_obj = m[0]
except:
+ self._info("Failed to get media object for %s" % (self.media))
pass
self.title, self.artist, self.song = self.get_songmeta(self.current_media_obj)
def set_read_mode(self):
self.prefix = '#nowplaying'
- self.get_currentsongmeta()
-
- self.metadata_file = self.metadata_dir + os.sep + self.current_media_obj.file_name + '.xml'
- self.update_feeds([self.current_media_obj], self.feeds_current_file, '(currently playing)')
- self._info('DeeFuzzing: id = %s, name = %s'
- % (self.id, self.current_media_obj.file_name))
+
+ try:
+ self.get_currentsongmeta()
+ fn = self.current_media_obj.file_name
+ if fn:
+ self.metadata_file = self.metadata_dir + os.sep + fn + '.xml'
+ self.update_feeds([self.current_media_obj], self.feeds_current_file, '(currently playing)')
+ if fn:
+ self._info('DeeFuzzing: id = %s, name = %s' % (self.id, fn))
+ except:
+ pass
self.player.set_media(self.media)
self.q.get(1)
# tagdata contains a dictionary of tags to use to gather metadata from the sourceobj
self.tagdata = {}
- self.media = None
+ self.media = ''
self.item_id = ''
- self.source = None
+ self.source = ''
self.options = {}
self.bitrate_default = 0
- self.info = None
+ self.info = {}
self.bitrate = 0
self.length = 0
"""Returns the metadata for the media, filtered by the tagdata dictionary for this media type. Return value is
read from cache if possible (or unless clear_cache is set to True)"""
if not self.metadata or clear_cache:
- self.__read_file_metadata()
+ self.read_file_metadata()
return self.metadata
- def __read_file_metadata(self):
+ def read_file_metadata(self):
"""Reads the metadata for the media, filtered by the tagdata dictionary for this media type"""
self.metadata = {}
for key in self.tagdata.keys():
try:
self.metadata[key] = self.sourceobj[key][0]
except:
- try:
- if self.tagdata[key] != '':
- self.metadata[key] = self.sourceobj[self.tagdata[key]][0]
- except:
- pass
+ pass
+
+ try:
+ if self.tagdata[key] != '' and self.metadata[key] == "":
+ self.metadata[key] = self.sourceobj[self.tagdata[key]][0]
+ except:
+ pass
- def get_metadata_value(self, key, clean=False):
+ def get_metadata_value(self, key, clean=False, clear_cache=False):
"""Returns a metadata value for a give key. If clean is True, then the resulting string will
- be cleaned before it is returned. If the key does not exist, an empty string is returned."""
+ be cleaned before it is returned. If the key does not exist, an empty string is returned. Return
+ value is read from cache if possible (or unless clear_cache is set to True)"""
+ if not self.metadata or clear_cache:
+ self.read_file_metadata()
+
if key not in self.metadata:
return ''
r = self.metadata[key]
+ if not r:
+ r = "";
if clean:
r = r.replace('_',' ').strip()
return r.encode('utf-8')
a = self.get_metadata_value('artist', True)
t = self.get_metadata_value('title', True)
if len(a) == 0 and len(t) == 0 and usefn:
- a = self.file_name.encode('utf-8')
+ if self.file_name:
+ a = self.file_name.encode('utf-8')
r = a
if len(a) > 0 and len(t) > 0:
r += ' - '
self.bitrate = int(self.info.bitrate / 1024)
except:
pass
- self.length = datetime.timedelta(0, self.info.length)
- self.__read_file_metadata()
self.media_info = get_file_info(self.media)
self.file_name = self.media_info[0]
self.file_title = self.media_info[1]
self.file_ext = self.media_info[2]
self.size = os.path.getsize(self.media)
+ self.length = datetime.timedelta(0, self.info.length)
+ self.read_file_metadata()
def write_tags(self):
"""Write all ID3v2.4 tags by mapping dub2id3_dict dictionnary with the
self.info = self.sourceobj.info
self.bitrate = int(str(self.info.bitrate)[:-3])
self.length = datetime.timedelta(0, self.info.length)
- self.__read_file_metadata()
+ self.read_file_metadata()
self.media_info = get_file_info(self.media)
self.file_name = self.media_info[0]
self.file_title = self.media_info[1]