From: yomguy <> Date: Sun, 13 May 2007 01:43:06 +0000 (+0000) Subject: Partially fixes #19 by changing MediaCollection.copied_from properties. X-Git-Tag: 1.1~944 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=e9a21a327f3aa684c4c109ffb4ba7c54c3771450;p=telemeta.git Partially fixes #19 by changing MediaCollection.copied_from properties. --- diff --git a/telemeta/export/core.py b/telemeta/export/core.py index 23e0b46c..fd9c1bdb 100644 --- a/telemeta/export/core.py +++ b/telemeta/export/core.py @@ -13,6 +13,7 @@ import os import re import string +import subprocess import mutagen import telemeta.export @@ -113,13 +114,16 @@ class ExporterCore(Component): #self.title = self.metadata['Title'] # Decode the source if needed - if os.path.exists(self.source) and not iswav16(self.source): + #if os.path.exists(self.source) and not iswav16(self.source): # TO FIX ! - self.source = self.export.decode() + # self.source = self.export.decode() # Normalize if demanded - if 'normalize' in self.metadata and self.metadata['normalize']: - self.normalize() + if not options is None: + self.options = options + if 'normalize' in self.options and \ + self.options['normalize'] == True: + self.normalize() # Define the cache directory self.ext = self.get_file_extension() @@ -145,6 +149,17 @@ class ExporterCore(Component): self.dest = os.path.join(self.dest,target_file) return self.dest + def stream(self,command): + """Streams encoded audio data through a generator""" + proc = subprocess.Popen(command, + shell=True, + bufsize=self.buffer_size, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + close_fds=True) + + chunk = proc.stdout.read(self.buffer_size) + return chunk def post_process(self, item_id, source, metadata, ext, cache_dir, options=None): diff --git a/telemeta/export/flac.py b/telemeta/export/flac.py index 56334e5a..212b61e4 100644 --- a/telemeta/export/flac.py +++ b/telemeta/export/flac.py @@ -101,11 +101,11 @@ class FlacExporter(ExporterCore): args = args + ' -s ' if 'flac_quality' in self.options: - args = args+' -f -V -'+self.options['flac_quality'] + args = args+' -f -'+self.options['flac_quality'] else: - args = args+' -f -V -'+self.quality_default + args = args+' -f -'+self.quality_default else: - args = args+' -s -f -V -'+self.quality_default + args = args+' -s -f -'+self.quality_default try: # Pre-proccessing (core) @@ -116,32 +116,32 @@ class FlacExporter(ExporterCore): self.ext, 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 - '+ + 'sox "'+self.source+'" -q -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() + #file_in.close() + file_out.close() # Encoding #os.system('flac '+args+' -o "'+self.dest+'" "'+ \ diff --git a/telemeta/export/mp3.py b/telemeta/export/mp3.py index 42beade6..42155f38 100644 --- a/telemeta/export/mp3.py +++ b/telemeta/export/mp3.py @@ -132,7 +132,7 @@ class Mp3Exporter(ExporterCore): file_out = open(self.dest,'w') proc = subprocess.Popen( \ - 'sox "'+self.source+'" -w -r 44100 -t wav -c2 - '+ + 'sox "'+self.source+'" -q -w -r 44100 -t wav -c2 - '+ '| lame '+args+' --tc "default" - -', shell=True, bufsize=self.buffer_size, diff --git a/telemeta/export/ogg.py b/telemeta/export/ogg.py index 509e9d28..e4c40220 100644 --- a/telemeta/export/ogg.py +++ b/telemeta/export/ogg.py @@ -118,7 +118,7 @@ class OggExporter(ExporterCore): file_out = open(self.dest,'w') proc = subprocess.Popen( \ - 'sox "'+self.source+'" -w -r 44100 -t wav -c2 - '+ + 'sox "'+self.source+'" -q -w -r 44100 -t wav -c2 - '+ '| oggenc '+args+' -', shell=True, bufsize=self.buffer_size, @@ -129,7 +129,7 @@ class OggExporter(ExporterCore): chunk = proc.stdout.read(self.buffer_size) yield chunk file_out.write(chunk) - + # Processing while chunk: chunk = proc.stdout.read(self.buffer_size) diff --git a/telemeta/models.py b/telemeta/models.py index e15348a5..eb1b2c58 100644 --- a/telemeta/models.py +++ b/telemeta/models.py @@ -62,7 +62,7 @@ class MediaCollection(models.Model, MediaCore): publishing_status = models.CharField(maxlength=250, blank=True) is_original = models.CharField(maxlength=250) is_full_copy = models.CharField(maxlength=250) - copied_from = models.ForeignKey('self', null=True) + copied_from = models.ForeignKey('self', blank=True) #copied_from[0].dc_element = 'relation' creator = models.CharField(maxlength=250) creator.dc_element = 'creator' diff --git a/telemeta/views/web.py b/telemeta/views/web.py index 2018506b..19acdf63 100644 --- a/telemeta/views/web.py +++ b/telemeta/views/web.py @@ -105,9 +105,10 @@ class WebView(Component): metadata['Artist'] = metadata['creator'] metadata['Title'] = metadata['title'] - outfile = exporter.process(item.id, infile, metadata, []) + stream = exporter.process(item.id, infile, metadata, []) - response = HttpResponse(self.__file_stream(outfile), mimetype = mime_type) + #response = HttpResponse(self.__file_stream(outfile),mimetype=mime_type) + response = HttpResponse(stream, mimetype = mime_type) response['Content-Disposition'] = 'attachment; filename="download.' + \ exporter.get_file_extension() + '"' return response diff --git a/tests/export_test.py b/tests/export_test.py index 68ca8445..d6063d62 100644 --- a/tests/export_test.py +++ b/tests/export_test.py @@ -25,9 +25,9 @@ metadata = {'identifier': 'Test', #collection 'creator': 'Cellar', 'type': 'House', 'date': '2004', - 'publisher': 'PArISs0n', + 'publisher': 'Parisson', } -options = {'verbose': '1'} +options = {'verbose': '0'} class ExportTest(Component):