From 41604ad65311960dbafd65991bb3a07b725511c0 Mon Sep 17 00:00:00 2001 From: yomguy <> Date: Tue, 16 Dec 2008 01:02:27 +0000 Subject: [PATCH] Fix flac metadata teansport during encoding, Change 'length' analyzer to 'duration' --- telemeta/analysis/__init__.py | 2 +- telemeta/analysis/{length.py => duration.py} | 8 +++----- telemeta/export/flac.py | 21 ++++++++++---------- 3 files changed, 14 insertions(+), 17 deletions(-) rename telemeta/analysis/{length.py => duration.py} (87%) diff --git a/telemeta/analysis/__init__.py b/telemeta/analysis/__init__.py index f3b7d832..748879ee 100644 --- a/telemeta/analysis/__init__.py +++ b/telemeta/analysis/__init__.py @@ -5,7 +5,7 @@ from telemeta.analysis.format import * from telemeta.analysis.encoding import * from telemeta.analysis.resolution import * from telemeta.analysis.samplerate import * -from telemeta.analysis.length import * +from telemeta.analysis.duration import * from telemeta.analysis.max_level import * from telemeta.analysis.mean_level import * diff --git a/telemeta/analysis/length.py b/telemeta/analysis/duration.py similarity index 87% rename from telemeta/analysis/length.py rename to telemeta/analysis/duration.py index 83ce8425..a215b78a 100644 --- a/telemeta/analysis/length.py +++ b/telemeta/analysis/duration.py @@ -12,16 +12,16 @@ from telemeta.analysis.api import IMediaItemAnalyzer import numpy import datetime -class LengthAnalyzer(AudioProcessor): +class DurationAnalyzer(AudioProcessor): """Media item analyzer driver interface""" implements(IMediaItemAnalyzer) def get_id(self): - return "length" + return "duration" def get_name(self): - return "Length" + return "Duration" def get_unit(self): return "h:m:s" @@ -29,6 +29,4 @@ class LengthAnalyzer(AudioProcessor): def render(self, media_item, options=None): self.pre_process(media_item) media_time = numpy.round(float(self.frames)/(float(self.samplerate)*float(self.channels)),0) - #return str(media_time) return datetime.timedelta(0,media_time) - \ No newline at end of file diff --git a/telemeta/export/flac.py b/telemeta/export/flac.py index c7ff2ea9..116878bb 100644 --- a/telemeta/export/flac.py +++ b/telemeta/export/flac.py @@ -31,7 +31,7 @@ class FlacExporter(ExporterCore): self.options = {} self.description = '' self.dest = '' - self.quality_default = '5' + self.quality_default = '-5' self.info = [] self.buffer_size = 0xFFFF @@ -116,9 +116,8 @@ class FlacExporter(ExporterCore): self.args = self.get_args(options) self.ext = self.get_file_extension() self.args = ' '.join(self.args) - self.command = 'sox "%s" -s -q -r 44100 -t wav -c2 - | flac %s -c -' % (self.source, self.args) - tmp_file_name = NamedTemporaryFile(suffix = '.' + self.ext).name - tmp_file = open(tmp_file_name, 'w') + self.command = 'sox "%s" -s -q -r 44100 -t wav -c2 - | flac -c %s - ' \ + % (self.source, self.args) # Pre-proccessing self.dest = self.pre_process(self.item_id, @@ -130,20 +129,20 @@ class FlacExporter(ExporterCore): # Processing (streaming + cache writing) stream = self.core_process(self.command, self.buffer_size, self.dest) + for chunk in stream: - tmp_file.write(chunk) - - tmp_file.close() - self.write_tags(tmp_file) - tmp_file = open(tmp_file_name.name, 'r') + pass + self.write_tags(self.dest) + file = open(self.dest,'r') + while True: - chunk = tmp_file.read(self.buffer_size) + chunk = file.read(self.buffer_size) if len(chunk) == 0: break yield chunk - tmp_file.close() + file.close() # Post-proccessing #self.post_process(self.item_id, -- 2.39.5