]> git.parisson.com Git - deefuzzer.git/commitdiff
close and reopen channel if sync error
authorGuillaume Pellerin <yomguy@parisson.com>
Wed, 15 Apr 2009 17:57:58 +0000 (17:57 +0000)
committerGuillaume Pellerin <yomguy@parisson.com>
Wed, 15 Apr 2009 17:57:58 +0000 (17:57 +0000)
deefuzz.py
tools/ogg.py

index c8be76be247aa10d429c1425f97de2078c194241..8bf15377270af6606e3656b518e80217c9430ab0 100755 (executable)
@@ -237,7 +237,7 @@ class Station(Thread):
             sub_title = '(playlist)'
 
         for media in media_list:
-            media_link = self.channel.url + self.media_url_dir + media.file_name
+            media_link = self.channel.url + self.media_url_dir + media.file_name.decode()
             media_description = '<table>'
             for key in media.metadata.keys():
                 if media.metadata[key] != '':
@@ -402,11 +402,13 @@ class Station(Thread):
 
                 for __chunk in stream:
                     it = q.get(1)
-                    self.channel.send(__chunk)
                     try:
+                        self.channel.send(__chunk)
                         self.channel.sync()
                     except:
-                        raise DeeFuzzError('Could not sync the buffer... ')
+                        self.logger.write('Error : Station ' + self.short_name + ' : could not sync the buffer... ')
+                        self.channel.close()
+                        self.channel.open()
                     q.task_done()
                 #stream.close()
 
index 70b97c6e0571c8c5d4ba2fb86ab5b4f95f8fe771..cf8f5daadada94859215f04f4e21c9855aaae865 100644 (file)
@@ -44,18 +44,27 @@ class Ogg:
     """An OGG file object"""
     
     def __init__(self, media):
+        self.media = media
+        self.media_obj = OggVorbis(self.media)
         self.item_id = ''
-        self.metadata = {}
-        self.description = ''
-        self.info = []
-        self.source = ''
-        self.dest = ''
+        self.source = self.media
         self.options = {}
         self.bitrate_default = '192'
-        self.buffer_size = 0xFFFF
-        self.dub2args_dict = {'creator': 'artist',
-                             'relation': 'album'
-                             }
+        self.cache_dir = os.sep + 'tmp'
+        self.keys2ogg = {'title': 'title',
+                    'artist': 'artist',
+                    'album': 'album',
+                    'date': 'date',
+                    'comment': 'comment',
+                    'genre': 'genre',
+                    }
+        self.metadata = self.get_file_metadata()
+        self.description = self.get_description()
+        self.mime_type = self.get_mime_type()
+        self.extension = self.get_file_extension()
+        self.size = os.path.getsize(media)
+        self.file_name = media.split(os.sep)[-1].decode()
+        #self.args = self.get_args()
         
     def get_format(self):
         return 'OGG'
@@ -83,6 +92,16 @@ class Ogg:
     def set_cache_dir(self,path):
        self.cache_dir = path
 
+    def get_file_metadata(self):
+        metadata = {}
+        for key in self.keys2ogg.keys():
+            try:
+                text = self.media_obj[key][0].decode()
+                metadata[key] = text
+            except:
+                metadata[key] = ''
+        return metadata
+        
     def decode(self):
         try:
             os.system('oggdec -o "'+self.cache_dir+os.sep+self.item_id+
@@ -92,10 +111,9 @@ class Ogg:
             raise IOError('ExporterError: decoder is not compatible.')
 
     def write_tags(self):
-        media = OggVorbis(self.dest)
         for tag in self.metadata.keys():
-            media[tag] = str(self.metadata[tag])
-        media.save()
+            self.media_obj[tag] = str(self.metadata[tag])
+        media_obj.save()
 
     def get_args(self,options=None):
         """Get process options and return arguments for the encoder"""