From 78dafe3abc60b8eb5c6ffcfbf7dc4df4075cc6b3 Mon Sep 17 00:00:00 2001 From: yomguy <> Date: Thu, 19 Apr 2007 17:20:54 +0000 Subject: [PATCH] Added Trac Components links. Added options dict to exporter arguments --- telemeta/export/api.py | 6 ++++-- telemeta/export/core.py | 14 ++++++-------- telemeta/export/flac.py | 12 +++++++++--- telemeta/export/ogg.py | 14 +++++++++----- telemeta/export/wav.py | 12 +++++++++--- tests/export_test.py | 25 ++++++++++++++++--------- 6 files changed, 53 insertions(+), 30 deletions(-) diff --git a/telemeta/export/api.py b/telemeta/export/api.py index ac5a1ab3..020ea248 100644 --- a/telemeta/export/api.py +++ b/telemeta/export/api.py @@ -12,7 +12,9 @@ # Author: Olivier Guilyardi # Guillaume Pellerin -class IExporter: +from telemeta.core import * + +class IExporter(Interface): """Export driver interface""" # Remark: the method prototypes do not include any self or cls argument @@ -45,7 +47,7 @@ class IExporter: temporary directory should be used if that's not the case. """ - def process(item_id, source, metadata): + def process(item_id, source, metadata, options): """Perform the exporting process and return the absolute path to the resulting file. diff --git a/telemeta/export/core.py b/telemeta/export/core.py index cf7c0d5d..c54eed95 100644 --- a/telemeta/export/core.py +++ b/telemeta/export/core.py @@ -5,7 +5,7 @@ # All rights reserved. # # This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms +# yo"u should have received as part of this distribution. The terms # are also available at http://svn.parisson.org/telemeta/TelemetaLicense. # # Author: Guillaume Pellerin @@ -16,17 +16,15 @@ import string import telemeta.export from telemeta.export import * -from telemeta.export.api import IExporter +from telemeta.core import * from telemeta.export.default import Tags, Options, Collection import xml.dom.minidom import xml.dom.ext -class ExporterCore: +class ExporterCore(Component): """Defines the main parts of the exporting tools : paths, formats, metadata...""" - #implements(IExporter) ? - def __init__(self): self.source = '' self.collection = '' @@ -49,7 +47,6 @@ class ExporterCore: except IOError: return 'Exporter error: Cannot normalize, path does not exist.' - def check_md5_key(self): """ Check if the md5 key is OK and return a boolean """ try: @@ -100,7 +97,7 @@ class ExporterCore: xml_file.close() - def pre_process(self, item_id, source, metadata, ext, cache_dir): + def pre_process(self, item_id, source, metadata, ext, cache_dir, options): """ Pre processing of the core. Prepare the export path and return it""" self.item_id = item_id @@ -108,6 +105,7 @@ class ExporterCore: file_name = get_file_name(self.source) file_name_wo_ext, file_ext = split_file_name(file_name) self.cache_dir = cache_dir + self.options = options self.metadata = metadata self.collection = self.metadata['Collection'] @@ -146,7 +144,7 @@ class ExporterCore: return self.dest - def post_process(self, item_id, source, metadata, ext, cache_dir): + def post_process(self, item_id, source, metadata, ext, cache_dir, options): """ Post processing of the Core. Print infos, etc...""" if 'verbose' in self.metadata and self.verbose != '0': print self.dest diff --git a/telemeta/export/flac.py b/telemeta/export/flac.py index 8f8d04c2..101331e3 100644 --- a/telemeta/export/flac.py +++ b/telemeta/export/flac.py @@ -14,11 +14,14 @@ import os import string from telemeta.export.core import * +from telemeta.export.api import IExporter from mutagen.flac import FLAC class FlacExporter(ExporterCore): """Defines methods to export to OGG Vorbis""" + implements(IExporter) + def __init__(self): self.item_id = '' self.metadata = [] @@ -79,10 +82,11 @@ class FlacExporter(ExporterCore): media[tag] = str(self.metadata[tag]) media.save() - def process(self, item_id, source, metadata): + def process(self, item_id, source, metadata, options): self.item_id = item_id self.source = source self.metadata = metadata + self.options = options if 'flac_quality' in self.metadata and \ self.metadata['flac_quality'] != '': @@ -100,7 +104,8 @@ class FlacExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) # Encoding os.system('flac '+args+' -o "'+self.dest+'" "'+ \ @@ -112,7 +117,8 @@ class FlacExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) # Output return self.dest diff --git a/telemeta/export/ogg.py b/telemeta/export/ogg.py index 493175d6..2e88400d 100644 --- a/telemeta/export/ogg.py +++ b/telemeta/export/ogg.py @@ -14,11 +14,14 @@ import os import string from telemeta.export.core import * +from telemeta.export.api import IExporter from mutagen.oggvorbis import OggVorbis class OggExporter(ExporterCore): """Defines methods to export to OGG Vorbis""" + implements(IExporter) + def __init__(self): self.item_id = '' self.metadata = [] @@ -68,12 +71,11 @@ class OggExporter(ExporterCore): media[tag] = str(self.metadata[tag]) media.save() - def process(self, item_id, source, metadata): + def process(self, item_id, source, metadata, options): self.item_id = item_id self.source = source self.metadata = metadata - #self.quality = self.metadata['ogg_quality'] - #self.bitrate = self.metadata['ogg_bitrate'] + self.options = options if 'ogg_bitrate' in self.metadata: args = '-b '+self.metadata['ogg_bitrate'] @@ -95,7 +97,8 @@ class OggExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) # Encoding os.system('oggenc '+args+' -o "'+self.dest+ @@ -107,7 +110,8 @@ class OggExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) # Output return self.dest diff --git a/telemeta/export/wav.py b/telemeta/export/wav.py index 6dee6999..4d4cf97f 100644 --- a/telemeta/export/wav.py +++ b/telemeta/export/wav.py @@ -14,10 +14,13 @@ import os import string from telemeta.export.core import * +from telemeta.export.api import IExporter class WavExporter(ExporterCore): """Defines methods to export to OGG Vorbis""" + implements(IExporter) + def __init__(self): self.item_id = '' self.metadata = [] @@ -91,10 +94,11 @@ class WavExporter(ExporterCore): except IOError: return 'Exporter error: Cannot create the par2 key...' - def process(self, item_id, source, metadata): + def process(self, item_id, source, metadata, options): self.item_id = item_id self.source = source self.metadata = metadata + self.options = options try: # Pre-proccessing (core) @@ -103,7 +107,8 @@ class WavExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) #if self.compare_md5_key(): os.system('cp -a "'+self.source+'" "'+ self.dest+'"') @@ -115,7 +120,8 @@ class WavExporter(ExporterCore): self.source, self.metadata, self.ext, - self.cache_dir) + self.cache_dir, + self.options) # Special post process # Create the md5 key diff --git a/tests/export_test.py b/tests/export_test.py index 9f665dde..9cce8621 100644 --- a/tests/export_test.py +++ b/tests/export_test.py @@ -14,6 +14,8 @@ import os from telemeta.export import * +from telemeta.core import * +from telemeta.core import ComponentManager cache_dir = 'cache/' source = 'samples/wav/Cellar - Show Me - 02.wav' @@ -23,17 +25,22 @@ metadata = {'Collection': 'Test', 'Artist': 'Cellar', 'Encoder': 'Telemeta', } +options = {'verbose': '1'} -media1 = OggExporter() -media1.set_cache_dir(cache_dir) -media1.process(item_id,source,metadata) -media2 = FlacExporter() -media2.set_cache_dir(cache_dir) -media2.process(item_id,source,metadata) +class ExportTest(Component): + exporters = ExtensionPoint(IExporter) -media3 = WavExporter() -media3.set_cache_dir(cache_dir) -media3.process(item_id,source,metadata) + def run(self): + for exporter in self.exporters: + format = exporter.get_format() + print "+------------------------------------------" + print '| Testing exporter format: ' + format + print "+------------------------------------------" + exporter.set_cache_dir(cache_dir) + exporter.process(item_id,source,metadata,options) +compmgr = ComponentManager() +test = ExportTest(compmgr) +test.run() -- 2.39.5