From: yomguy Date: Tue, 24 Nov 2009 15:02:34 +0000 (+0000) Subject: fix decoder output and metadata management X-Git-Tag: 0.3.2~234 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=ce2118fac8fd524f88ccab1e33b684faa53ea08c;p=timeside.git fix decoder output and metadata management --- diff --git a/encode/__init__.py b/encode/__init__.py index cfed4ed..c4f0419 100644 --- a/encode/__init__.py +++ b/encode/__init__.py @@ -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 diff --git a/encode/core.py b/encode/core.py index 31a031d..8ba366f 100644 --- a/encode/core.py +++ b/encode/core.py @@ -71,7 +71,6 @@ class EncoderCore(Component): break yield __chunk - # External functions def get_type(value): diff --git a/encode/flac.py b/encode/flac.py index 8ab2f1f..a9ea413 100644 --- a/encode/flac.py +++ b/encode/flac.py @@ -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) diff --git a/encode/mp3.py b/encode/mp3.py index 2bde51f..4f04ab5 100644 --- a/encode/mp3.py +++ b/encode/mp3.py @@ -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] diff --git a/encode/wav.py b/encode/wav.py index a79f80f..f1b8017 100644 --- a/encode/wav.py +++ b/encode/wav.py @@ -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: diff --git a/tests/test.py b/tests/test.py index 2f0f6ca..3916820 100755 --- a/tests/test.py +++ b/tests/test.py @@ -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)