]> git.parisson.com Git - deefuzzer.git/commitdiff
modify write tags for mp3, linked to telecaster now with relaying mode,
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 8 Jul 2010 23:07:37 +0000 (23:07 +0000)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 8 Jul 2010 23:07:37 +0000 (23:07 +0000)
MAYBE buggy on playing

tools/mp3.py
tools/station.py

index 4599d89449287a5214ef4a5529060d516e8de000..9d61dae3c06412425920a911b886a7cd1a5a2308 100644 (file)
@@ -41,6 +41,7 @@ import string
 import datetime
 from mutagen.easyid3 import EasyID3
 from mutagen.mp3 import MP3, MPEGInfo
+from mutagen import id3
 from tools import *
 
 EasyID3.valid_keys["comment"]="COMM::'XXX'"
@@ -68,7 +69,18 @@ class Mp3:
         self.info = self.mp3.info
         self.bitrate = int(str(self.info.bitrate)[:-3])
         self.length = datetime.timedelta(0,self.info.length)
-        self.metadata = self.get_file_metadata()
+        try:
+            self.metadata = self.get_file_metadata()
+        except:
+            self.metadata = {'title': '',
+                    'artist': '',
+                    'album': '',
+                    'date': '',
+                    'comment': '',
+                    'genre': '',
+                    'copyright': '',
+                    }
+        
         self.description = self.get_description()
         self.mime_type = self.get_mime_type()
         self.media_info = get_file_info(self.media)
@@ -98,60 +110,27 @@ class Mp3:
                 metadata[key] = self.mp3[key][0]
             except:
                 metadata[key] = ''
+        self.mp3.close()
         return metadata
-
-    def decode(self):
-        try:
-            os.system('sox "'+self.media+'" -s -q -r 44100 -t wav "' \
-                        +self.cache_dir+os.sep+self.item_id+'"')
-            return self.cache_dir+os.sep+self.metadata['title']+'.wav'
-        except:
-            raise IOError('ExporterError: decoder is not compatible.')
-
+            
     def write_tags(self):
         """Write all ID3v2.4 tags by mapping dub2id3_dict dictionnary with the
             respect of mutagen classes and methods"""
-        from mutagen import id3
+       
         m = MP3(self.media)
         m.add_tags()
         m.tags['TIT2'] = id3.TIT2(encoding=2, text=u'text')
         m.save()
+
         media = id3.ID3(self.media)
-        for tag in self.metadata.keys():
-            if tag in self.keys2id3.keys():
-                frame_text = self.keys2id3[tag]
-                value = self.metadata[tag]
-                frame = id3.Frames[frame_text](3,value)
-                try:
-                    media.add(frame)
-                except:
-                    raise IOError('ExporterError: cannot tag "'+tag+'"')
+        media.add(id3.TIT2(encoding=3, text=self.metadata['title'].decode('utf8')))
+        media.add(id3.TP1(encoding=3, text=self.metadata['artist'].decode('utf8')))
+        media.add(id3.TAL(encoding=3, text=self.metadata['album'].decode('utf8')))
+        media.add(id3.TDRC(encoding=3, text=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
+        media.add(id3.TCO(encoding=3, text=self.metadata['genre'].decode('utf8')))
         try:
             media.save()
         except:
             raise IOError('ExporterError: cannot write tags')
 
-    def get_args(self, options=None):
-        """Get process options and return arguments for the encoder"""
-        args = []
-        if not options is None:
-            self.options = options
-            if not ( 'verbose' in self.options and self.options['verbose'] != '0' ):
-                args.append('-S')
-            if 'mp3_bitrate' in self.options:
-                args.append('-b ' + self.options['mp3_bitrate'])
-            else:
-                args.append('-b '+self.bitrate_default)
-            #Copyrights, etc..
-            args.append('-c -o')
-        else:
-            args.append('-S -c -o')
-
-        for tag in self.metadata.keys():
-            if tag in self.dub2args_dict.keys():
-                arg = self.dub2args_dict[tag]
-                value = self.metadata[tag]
-                args.append('--' + arg)
-                args.append('"' + value + '"')
-
-        return args
+
index 0d257f22eb63729ffecc52b23749de1eb4ce159f..18aa9bad06a7ad9a0f78d6fb2c044334b5afa982 100644 (file)
@@ -132,6 +132,7 @@ class Station(Thread):
         if 'relay' in self.station:
             self.relay_mode = int(self.station['relay']['mode'])
             self.relay_url = self.station['relay']['url']
+            self.relay_author = self.station['relay']['author']
             if self.relay_mode == 1:
                 self.relay_callback('/relay', [1])
 
@@ -235,10 +236,10 @@ class Station(Thread):
                 media = Mp3(self.record_dir + os.sep + self.rec_file)
             if self.channel.format == 'ogg':
                 media = Ogg(self.record_dir + os.sep + self.rec_file)
-            media.metadata = {'artist': self.artist, 'title': self.title, 'date': str(datetime.datetime.now().strftime("%Y"))}
+            media.metadata = {'artist': self.artist, 'title': self.title, 'album': self.short_name, 'genre': self.channel.genre}
             media.write_tags()
         self.record_mode = value
-        message = "Received OSC message '%s' with arguments '%d'" % (path, value)
+        message = "Received OSC message '%s' with arguments '%d' : Writing metatada to the file..." % (path, value)
         self.logger.write_info(message)
 
     def player_callback(self, path, value):
@@ -411,10 +412,12 @@ class Station(Thread):
 
     def set_relay_mode(self):
         self.prefix = '#nowplaying (relaying #LIVE)'
-        song = self.relay_url
-        self.song = song.encode('utf-8')
-        self.artist = 'Various'
-        self.channel.set_metadata({'song': self.short_name + ' relaying : ' + self.song, 'charset': 'utf8',})
+        self.title = self.channel.description.encode('utf-8')
+        self.artist = self.relay_author.encode('utf-8')
+        self.title = self.title.replace('_', ' ')
+        self.artist = self.artist.replace('_', ' ')
+        self.song = self.artist + ' : ' + self.title
+        self.channel.set_metadata({'song': self.song, 'charset': 'utf8',})
         self.stream = self.player.relay_read()
 
     def set_read_mode(self):