]> git.parisson.com Git - timeside.git/commitdiff
fix decoder output and metadata management
authoryomguy <yomguy@parisson.com>
Tue, 24 Nov 2009 15:02:34 +0000 (15:02 +0000)
committeryomguy <yomguy@parisson.com>
Tue, 24 Nov 2009 15:02:34 +0000 (15:02 +0000)
encode/__init__.py
encode/core.py
encode/flac.py
encode/mp3.py
encode/wav.py
tests/test.py

index cfed4ed4817e6fd9f3262561a690a1d0712a8dc4..c4f041995c45de7893aaac2b02dc4502a2629924 100644 (file)
@@ -3,6 +3,6 @@
 from timeside.encode.api import *
 from timeside.encode.core import *
 from timeside.encode.ogg import *
-from timeside.encode.flac import *
 from timeside.encode.wav import *
-from timeside.encode.mp3 import *
\ No newline at end of file
+from timeside.encode.mp3 import *
+from timeside.encode.flac import *
\ No newline at end of file
index 31a031dfefc74852ef19b101fe1bffe77d86829c..8ba366fdbf23dab553f6b8d88787bef41d32436e 100644 (file)
@@ -71,7 +71,6 @@ class EncoderCore(Component):
                 break
             yield __chunk
 
-
 # External functions
 
 def get_type(value):
index 8ab2f1f503b7408fdc55e403967aaac2dfc534ad..a9ea413b4f53ccdbadebb2ee962f1f95a40f26d4 100644 (file)
@@ -34,6 +34,9 @@ class FlacEncoder(EncoderCore):
 
     def __init__(self):
         self.quality_default = '-5'
+        self.dub2args_dict = {'creator': 'artist',
+                             'relation': 'album'
+                             }
 
     def format(self):
         return 'FLAC'
@@ -71,7 +74,9 @@ class FlacEncoder(EncoderCore):
         for tag in self.metadata:
             name = tag[0]
             value = clean_word(tag[1])
-            if name == 'COMMENT':
+            if name in self.dub2args_dict.keys():
+                name = self.dub2args_dict[name]
+            if name == 'comment':
                 media['DESCRIPTION'] = unicode(value)
             else:
                 media[name] = unicode(value)
@@ -80,6 +85,7 @@ class FlacEncoder(EncoderCore):
         except:
             raise IOError('EncoderError: cannot write tags.')
 
+
     def get_args(self,options=None):
         """Get process options and return arguments for the encoder"""
         args = []
@@ -105,19 +111,22 @@ class FlacEncoder(EncoderCore):
 
     def process(self, source, metadata, options=None):
         buffer_size = 0xFFFF
+        self.metadata= metadata
         self.options = options
         args = self.get_args()
         args = ' '.join(args)
         ext = self.file_extension()
-        command = 'flac -c %s -' % args
+        temp_file = NamedTemporaryFile()
+        command = 'flac %s - -o %s ' % (args, temp_file.name)
 
         stream = self.core_process(command, source)
-        temp_file = NamedTemporaryFile()
+        
         for __chunk in stream:
-            temp_file.write(__chunk)
-            temp_file.flush()
+            #temp_file.write(__chunk)
+            #temp_file.flush()
+            pass
 
-        #self.write_tags(temp_file)
+        self.write_tags(temp_file.name)
 
         while True:
             __chunk = temp_file.read(buffer_size)
index 2bde51f1126e27d2eb7534dd10a16049ef3cdefd..4f04ab5e84736386578b15b7573895ec1b232628 100644 (file)
@@ -114,7 +114,7 @@ class Mp3Encoder(EncoderCore):
             #Copyrights, etc..
             args.append('-c -o')
         else:
-            args.append('-S -c -o')
+            args.append('-S -c --tt "unknown" -o')
 
         for tag in self.metadata:
             name = tag[0]
index a79f80fd2143429335ac6f8857beddb1df1246f2..f1b8017e89ace8a7cd8ef46a5674014f7830dbea 100644 (file)
@@ -68,7 +68,7 @@ class WavEncoder(EncoderCore):
     def process(self, source, metadata, options=None):
         self.metadata = metadata
         self.options = options
-        command = 'sox - -s -q -b 16 -r 44100 -t wav -c2 -'
+        command = 'sox -t wav - -s -q -b 16 -r 44100 -t wav -c2 -'
 
         stream = self.core_process(command, source)
         for __chunk in stream:
index 2f0f6caed33b3140ecc33312341579360180f5cb..39168200fdde50537301bdbda312af49431c7c21 100755 (executable)
@@ -39,8 +39,7 @@ class TestDecoders(Component):
     def run(self, media, format):
         for decoder in self.decoders:
             if decoder.format() == format:
-                break
-        return decoder.process(media)
+                return decoder.process(media)
 
 
 class TestEncoders(Component):
@@ -58,8 +57,10 @@ class TestEncoders(Component):
         print '\n=== Encoder testing ===\n'
         for encoder in self.encoders:
             format = encoder.format()
+            decoders = TestDecoders(comp_mgr)
+            decoded = decoders.run(source, 'WAV')
             ext = encoder.file_extension()
-            stream = encoder.process(source, metadata)
+            stream = encoder.process(decoded, metadata)
             file_path = 'results/sweep' + '.' + ext
             file = open(file_path, 'w')
             for chunk in stream:
@@ -95,7 +96,7 @@ class TestGraphers(Component):
 
 if __name__ == '__main__':
     sample = 'samples/sweep.wav'
-    metadata = {'creator': 'yomguy', 'date': '2009', 'name': 'test'}
+    metadata = (('creator', 'yomguy'), ('date', '2009'), ('name', 'test'))
     comp_mgr = ComponentManager()
     a = TestAnalyzers(comp_mgr)
     d = TestDecoders(comp_mgr)
@@ -107,7 +108,6 @@ if __name__ == '__main__':
     g.list()
     a.run(sample)
     g.run(sample)
-    audio = d.run(sample, 'WAV')
-    e.run(audio, metadata)
+    e.run(sample, metadata)