]> git.parisson.com Git - telemeta.git/commitdiff
Adds main id3 tags during MP3 streaming
authoryomguy <>
Mon, 21 May 2007 15:19:37 +0000 (15:19 +0000)
committeryomguy <>
Mon, 21 May 2007 15:19:37 +0000 (15:19 +0000)
telemeta/export/core.py
telemeta/export/flac.py
telemeta/export/mp3.py
telemeta/export/ogg.py
telemeta/export/wav.py
telemeta/templates/collection_detail.html

index 39bd8f5edcc22a3e5c78062a701a10c200f871df..8ad0fafe2b4b786f666eba235c2a25184c844196 100644 (file)
@@ -177,7 +177,8 @@ class ExporterCore(Component):
 
     def post_process(self, item_id, source, metadata, ext, 
                      cache_dir, options=None):
-        """ Post processing of the Core. Print infos, etc..."""
+        """ Post processing : write tags, print infos, etc..."""
+        self.write_tags()
         if not options is None:
             if 'verbose' in self.options and self.options['verbose'] != '0':
                 print self.dest
index 6c1d9fc42bc003b70e644235bf271d74ffc3186e..972938a3b2dfe8096405e8841ace1e64db6b2f93 100644 (file)
@@ -19,7 +19,7 @@ from telemeta.export.api import IExporter
 from mutagen.flac import FLAC
 
 class FlacExporter(ExporterCore):
-    """Defines methods to export to OGG Vorbis"""
+    """Defines methods to export to FLAC"""
 
     implements(IExporter)
     
@@ -132,7 +132,6 @@ class FlacExporter(ExporterCore):
 
         # Post-proccessing
         try:
-            self.write_tags()        
             self.post_process(self.item_id,
                          self.source,
                          self.metadata,
index a764e92e0a16c122b286651a480add7c94ff451e..537f7e4fb23d4ffbbc4fe9631733b0dedc551074 100644 (file)
@@ -36,14 +36,20 @@ class Mp3Exporter(ExporterCore):
         self.buffer_size = 0xFFFF
         self.dub2id3_dict = {'title': 'TIT2', #title2
                              'creator': 'TCOM', #composer
-                     'creator': 'TPE1', #lead
-                     'identifier': 'UFID', #Unique ID...
-                     'identifier': 'TALB', #album
-                     #'date': 'TYER', #year
-                     'type': 'TCON', #genre
-                     'publisher': 'TPUB', #comment
-                     }
-
+                             'creator': 'TPE1', #lead
+                             'identifier': 'UFID', #Unique ID...
+                             'identifier': 'TALB', #album
+                             'type': 'TCON', #genre
+                             'publisher': 'TPUB', #comment
+                             #'date': 'TYER', #year
+                             }
+        self.dub2args_dict = {'title': 'tt', #title2
+                             'creator': 'ta', #composer
+                             'identifier': 'tl', #album
+                             #'type': 'tg', #genre
+                             'publisher': 'tc', #comment
+                             'date': 'ty', #year
+                             }
     def get_format(self):
         return 'MP3'
     
@@ -78,8 +84,7 @@ class Mp3Exporter(ExporterCore):
     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
-        
+        from mutagen import id3  
         id3 = id3.ID3(self.dest)
         for tag in self.metadata.keys():
             if tag in self.dub2id3_dict.keys():
@@ -90,7 +95,7 @@ class Mp3Exporter(ExporterCore):
                 id3.add(frame)
         id3.save()
 
-    def get_args(self,options=None):
+    def get_args(self, metadata, options=None):
         """Get process options and return arguments for the encoder"""
         args = ''
         if not options is None: 
@@ -110,6 +115,12 @@ class Mp3Exporter(ExporterCore):
         else:
             args = args + ' -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 = args + ' --' + arg + ' "' +value +'" '
+
         return args
 
     def process(self, item_id, source, metadata, options=None):
@@ -117,10 +128,10 @@ class Mp3Exporter(ExporterCore):
         self.source = source
         self.metadata = metadata
         #self.options = {}
-        self.args = self.get_args(options)
+        self.args = self.get_args(self.metadata,options)
         self.ext = self.get_file_extension()
         self.command = 'sox "'+self.source+'" -q -w -r 44100 -t wav -c2 - '+ \
-                       '| lame '+self.args+' --tc "default" - -'
+                       '| lame '+self.args+' - -'
             
         # Pre-proccessing
         try:
@@ -142,8 +153,7 @@ class Mp3Exporter(ExporterCore):
             yield 'ExporterError: core_process'
 
         # Post-proccessing
-        try:
-            self.write_tags()        
+        try:       
             self.post_process(self.item_id,
                          self.source,
                          self.metadata,
index 6c4a26332029b028c77918e616b1d7c3a3d829e0..d807dfb6c19e96d7a9b5506ad5fca4d3263f37f6 100644 (file)
@@ -127,7 +127,6 @@ class OggExporter(ExporterCore):
 
         # Post-proccessing
         try:
-            self.write_tags()        
             self.post_process(self.item_id,
                          self.source,
                          self.metadata,
index 06c8f8a6db91d8a85a3c5b1e51d1ec780150fd9f..5bb15d71e61c7aa0f3a62482a1c02b23e93987d9 100644 (file)
@@ -17,7 +17,7 @@ from telemeta.export.core import *
 from telemeta.export.api import IExporter
 
 class WavExporter(ExporterCore):
-    """Defines methods to export to OGG Vorbis"""
+    """Defines methods to export to WAV"""
 
     implements(IExporter)
     
@@ -107,7 +107,7 @@ class WavExporter(ExporterCore):
         if not options is None:
             self.options = options
         try:
-            # Pre-proccessing (core)
+            # Pre-proccessing
             self.ext = self.get_file_extension()
             self.dest = self.pre_process(self.item_id,
                                          self.source,
@@ -125,7 +125,7 @@ class WavExporter(ExporterCore):
             yield chunk
             file_out.write(chunk)
            
-            # Processing
+            # Core Processing
             while chunk:
                 chunk = file_in.read(self.buffer_size)
                 yield chunk
@@ -133,7 +133,6 @@ class WavExporter(ExporterCore):
 
             file_in.close()
             file_out.close()
-            self.write_tags()
 
             # Create the md5 key
             #if 'md5' in self.metadata and self.metadata['md5']:
@@ -143,6 +142,7 @@ class WavExporter(ExporterCore):
             #if 'par2' in self.metadata and self.metadata['par2']:
             self.create_par_key()
 
+            # Pre-proccessing
             self.post_process(self.item_id,
                          self.source,
                          self.metadata,
index 55361774b2a44d0dd16c87fe296fc539fb8f37df..5e37e3a32908b838cab98fa38fe1ceaee1ad9de2 100644 (file)
@@ -17,7 +17,7 @@
       <p><b>Listen to this collection</b>
       (<a href="{% url telemeta-collection-m3u object.id|urlencode %}">M3U</a>,
       <a href="{% url telemeta-collection-xspf object.id|urlencode %}">XSPF</a>)</p>
-      {% if 0 %} {# Use 1/0 for alternate player #}
+      {% if 1 %} {# Use 1/0 for alternate player #}
         <!-- This is the XSPF Web Music Player, under the BSD license, 
           from: http://musicplayer.sourceforge.net/-->
         <object type="application/x-shockwave-flash" width="300" height="200"