]> git.parisson.com Git - telemeta.git/commitdiff
Made all exporters generators. Closes: #8 . Input audio raw data is now passed into...
authoryomguy <>
Fri, 11 May 2007 16:08:38 +0000 (16:08 +0000)
committeryomguy <>
Fri, 11 May 2007 16:08:38 +0000 (16:08 +0000)
telemeta/export/__init__.py
telemeta/export/core.py
telemeta/export/flac.py
telemeta/export/mp3.py
telemeta/export/wav.py
tests/export_test.py

index 0e05c9962ae17edda10b035483abbd0df93e8369..6ba2ef16d52301d77454e8f079560ee381612c16 100644 (file)
@@ -1,6 +1,6 @@
 from telemeta.export.api import *
 from telemeta.export.core import *
-#from telemeta.export.ogg import *
-#from telemeta.export.flac import *
-#from telemeta.export.wav import *
+from telemeta.export.ogg import *
+from telemeta.export.flac import *
+from telemeta.export.wav import *
 from telemeta.export.mp3 import *
\ No newline at end of file
index 2cbac609f1af2b1af6d9a6fb08a3aea4e7c8238c..23e0b46cdbb033cea2a18fef8e552ae0f27b1379 100644 (file)
@@ -32,6 +32,7 @@ class ExporterCore(Component):
         self.dest = ''
         self.metadata = []
         self.cache_dir = 'cache'
+        self.buffer_size = 0xFFFF
 
     def set_cache_dir(self,path):
         self.cache_dir = path
index f20849993f76be9b0d4989f496124aaab5cfe020..56334e5a092c5abe0697bef78ad39ae68ac5e07c 100644 (file)
@@ -12,6 +12,7 @@
 
 import os
 import string
+import subprocess
 
 from telemeta.export.core import *
 from telemeta.export.api import IExporter
@@ -31,6 +32,7 @@ class FlacExporter(ExporterCore):
         self.dest = ''
         self.quality_default = '5'
         self.info = []
+        self.buffer_size = 0xFFFF
         
     def get_format(self):
         return 'FLAC'
@@ -115,9 +117,35 @@ class FlacExporter(ExporterCore):
                                          self.cache_dir,
                                          self.options)
 
+            # Initializing
+            chunk = 0
+            file_out = open(self.dest,'w')
+            
+            proc = subprocess.Popen( \
+                    'sox "'+self.source+'" -w -r 44100 -t wav -c2 - '+
+                    '| flac '+args+' -c -',
+                    shell=True,
+                    bufsize=self.buffer_size,
+                    stdin=subprocess.PIPE,
+                    stdout=subprocess.PIPE,
+                    close_fds=True)
+                
+            chunk = proc.stdout.read(self.buffer_size)
+            yield chunk
+            file_out.write(chunk)
+           
+            # Processing
+            while chunk:
+                chunk = proc.stdout.read(self.buffer_size)
+                yield chunk
+                file_out.write(chunk)           
+           
+            file_out.close()
+            
+
             # Encoding
-            os.system('flac '+args+' -o "'+self.dest+'" "'+ \
-                      self.source+'" > /dev/null')
+            #os.system('flac '+args+' -o "'+self.dest+'" "'+ \
+            #          self.source+'" > /dev/null')
 
             # Post-proccessing (self)
             self.write_tags()
@@ -129,8 +157,8 @@ class FlacExporter(ExporterCore):
                          self.options)
 
             # Output
-            return self.dest
+            #return self.dest
 
         except IOError:
-            return 'ExporterError [3]: source file does not exist.'
+            yield 'ExporterError [3]: source file does not exist.'
 
index c32e688b3019bd5243d9a09d34d568acdc04e359..42beade664328489cce2dfae71116480d1e71e0f 100644 (file)
@@ -132,9 +132,8 @@ class Mp3Exporter(ExporterCore):
             file_out = open(self.dest,'w')
             
             proc = subprocess.Popen( \
-                    #'sox "'+self.source+'" -w -r 44100 -t wav -c2 - '+ 
-                    #'| lame '+args+' --tc "default" -',
-                    'lame '+args+' --tc "default" "'+self.source+'" -',
+                    'sox "'+self.source+'" -w -r 44100 -t wav -c2 - '+
+                    '| lame '+args+' --tc "default" - -',
                     shell=True,
                     bufsize=self.buffer_size,
                     stdin=subprocess.PIPE,
index 132f8457f97ee88506772367fabcd420d7e44589..96e68f0314ceb3fc41a987cbeb18cf7a157bdaa6 100644 (file)
@@ -29,6 +29,7 @@ class WavExporter(ExporterCore):
         self.source = ''
         self.dest = ''
         self.options = {}
+        self.buffer_size = 0xFFFF
         
     def get_format(self):
         return 'WAV'
@@ -115,8 +116,26 @@ class WavExporter(ExporterCore):
                                          self.cache_dir,
                                          self.options)
 
+            # Initializing
+            chunk = 0
+            file_in = open(self.source,'rb')
+            file_out = open(self.dest,'w')
+        
+            chunk = file_in.read(self.buffer_size)
+            yield chunk
+            file_out.write(chunk)
+           
+            # Processing
+            while chunk:
+                chunk = file_in.read(self.buffer_size)
+                yield chunk
+                file_out.write(chunk)           
+
+            file_in.close()
+            file_out.close()
+
             #if self.compare_md5_key():
-            os.system('cp -a "'+self.source+'" "'+ self.dest+'"')
+            #os.system('cp -a "'+self.source+'" "'+ self.dest+'"')
             #print 'COPIED'
             
             # Pre-proccessing (self)
@@ -138,8 +157,8 @@ class WavExporter(ExporterCore):
                          self.options)
 
             # Output                
-            return self.dest
+            #return self.dest
 
         except IOError:
-            return 'ExporterError [3]: source file does not exist.'
+            yield 'ExporterError [3]: source file does not exist.'
 
index cdf7d988103c08ed983bfd7763ca0fa5293aaa63..68ca84456817e18c7970ae5a9715d2636639204f 100644 (file)
@@ -17,8 +17,8 @@ from telemeta.core import *
 from telemeta.core import ComponentManager
 
 cache_dir = 'cache/'
-source = 'samples/wav/The Chicken-James Brown.wav'
-#source = 'samples/wav/Cellar - Show Me - 02.wav'
+#source = 'samples/wav/The Chicken-James Brown.wav'
+source = 'samples/wav/Cellar - Show Me - 02.wav'
 item_id = '10'
 metadata = {'identifier': 'Test',  #collection
          'title': 'Show Me',