]> git.parisson.com Git - deefuzzer.git/commitdiff
Additional cleanup of MediaBase.metadata instances, calls, and methods
authorachbed <github@achbed.org>
Wed, 28 Jan 2015 05:34:37 +0000 (23:34 -0600)
committerachbed <github@achbed.org>
Wed, 28 Jan 2015 05:34:37 +0000 (23:34 -0600)
Fixed exception failure in URLReader class
Fixed two outstanding MediaBase reference issues in station.py

Signed-off-by: achbed <github@achbed.org>
deefuzzer/player.py
deefuzzer/station.py
deefuzzer/tools/mediabase.py
deefuzzer/tools/mp3.py
deefuzzer/tools/ogg.py
deefuzzer/tools/webm.py

index 27bab04cf7613eacc3b0186c1f02d46198aa5d4c..ac7fe06799a272d17653099eb6a9b865d9e9ea9c 100644 (file)
@@ -37,6 +37,7 @@
 # Author: Guillaume Pellerin <yomguy@parisson.com>
 
 from relay import *
+import time
 
 
 class Player:
@@ -120,7 +121,8 @@ class FileReader:
 class URLReader:
 
     def __init__(self, relay):
-        self.relay = urllib.urlopen(relay)
+        self.__relayparam = relay
+        self.relay = urllib.urlopen(self.__relayparam)
         self.rec_mode = 0
 
     def set_recorder(self, recorder, mode=1):
@@ -135,7 +137,7 @@ class URLReader:
         except:
             while True:
                 try:
-                    self.relay = urllib.urlopen(relay)
+                    self.relay = urllib.urlopen(self.__relayparam)
                     chunk = self.relay.read(size)
                     break
                 except:
index 1e2ae72610e98d85515e0e6e928457d1d4b9e828..62724340fb22c1b29bd92e4e7a794e384b9e0441 100644 (file)
@@ -694,10 +694,10 @@ class Station(Thread):
         self.prefix = '#nowplaying'
         self.get_currentsongmeta()
 
-        self.metadata_file = self.metadata_dir + os.sep + self.current_media_obj[0].file_name + '.xml'
+        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[0].file_name))
+                   % (self.id, self.current_media_obj.file_name))
         self.player.set_media(self.media)
 
         self.q.get(1)
index 4474e6361c084be0fd6b4de364ef329412e50357..ef71132a00412d092756b9175fca360ea06d3ddd 100644 (file)
@@ -36,16 +36,6 @@ class MediaBase(object):
         self.info = None
         self.bitrate = 0
         self.length = 0
-        self.metadata = {
-            'title': '',
-            'artist': '',
-            'album': '',
-            'date': '',
-            'comment': '',
-            'country': '',
-            'genre': '',
-            'copyright': ''
-        }
 
         # sourceobj contains the metadata information for the referenced object
         self.sourceobj = {}
@@ -55,6 +45,7 @@ class MediaBase(object):
         self.file_title = ''
         self.file_ext = ''
         self.size = 0
+        self.metadata = {}
 
         # A more cross-platform way to do this
         self.cache_dir = tempfile.gettempdir()
@@ -79,22 +70,28 @@ class MediaBase(object):
         """Sets an alternate location for temporary cache files used in this media object"""
         self.cache_dir = path
 
-    def get_file_metadata(self):
-        """Returns the metadata for the media, filtered by the tagdata dictionary for this media type"""
-        metadata = {}
+    def get_file_metadata(self, clear_cache=False):
+        """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()
+        return self.metadata
+
+    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():
-            metadata[key] = ''
+            self.metadata[key] = ''
             try:
-                metadata[key] = self.sourceobj[key][0]
+                self.metadata[key] = self.sourceobj[key][0]
             except:
                 try:
                     if self.tagdata[key] != '':
-                        metadata[key] = self.sourceobj[self.tagdata[key]][0]
+                        self.metadata[key] = self.sourceobj[self.tagdata[key]][0]
                 except:
                     pass
-        return metadata
 
-    def __get_metadata_value(self, key, clean=False):
+    def get_metadata_value(self, key, clean=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."""
         if key not in self.metadata:
@@ -106,18 +103,18 @@ class MediaBase(object):
 
     def get_title(self):
         """Returns the cleaned title for this media"""
-        return self.__get_metadata_value('title', True)
+        return self.get_metadata_value('title', True)
 
     def get_artist(self):
         """Returns the cleaned artist for this media"""
-        return self.__get_metadata_value('artist', True)
+        return self.get_metadata_value('artist', True)
 
     def get_song(self, usefn=True):
         """Returns a string in the form "artist - title" for this media.  If either artist or title are blank,
         only the non-blank field is returned.  If both fields are blank, and the usefn parameter is True, then
         the filename is returned instead.  Otherwise, an empty string is returned."""
-        a = self.__get_metadata_value('artist', True)
-        t = self.__get_metadata_value('title', True)
+        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')
         r = a
index fbb102012ab85f54bb987a915bcc082b8f0ece95..a1cafd09b461644e53cacac2826ffb07b8693972 100644 (file)
@@ -82,25 +82,13 @@ class Mp3(MediaBase):
         except:
             pass
         self.length = datetime.timedelta(0, self.info.length)
-        try:
-            self.metadata = self.get_file_metadata()
-        except:
-            self.metadata = {
-                'title': '',
-                'artist': '',
-                'album': '',
-                'date': '',
-                'comment': '',
-                'country': '',
-                'genre': '',
-                'copyright': ''
-            }
+        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(mediabase)
+        self.size = os.path.getsize(self.media)
 
     def write_tags(self):
         """Write all ID3v2.4 tags by mapping dub2id3_dict dictionnary with the
index c9834c8fdf9ce6362cbaefba2c9598e3fae2e801..93ec0d8bc599b2c79fd3c768aab480249b24b194 100644 (file)
@@ -72,12 +72,12 @@ class Ogg(MediaBase):
         self.info = self.sourceobj.info
         self.bitrate = int(str(self.info.bitrate)[:-3])
         self.length = datetime.timedelta(0, self.info.length)
-        self.metadata = self.get_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]
         self.file_ext = self.media_info[2]
-        self.size = os.path.getsize(media)
+        self.size = os.path.getsize(self.media)
 
     def get_file_info(self):
         try:
index fc7d25e665beab8dcf13ae35b46dbcef3c262c30..f39eff07b4460c8776e5788663fbe60de8bfdb2d 100644 (file)
@@ -55,5 +55,4 @@ class WebM(MediaBase):
 
         self.media = media
         self.source = self.media
-        self.metadata = {}
         self.file_name, self.file_title, self.file_ext = get_file_info(media)