]> git.parisson.com Git - telemeta.git/commitdiff
Added Trac Components links. Added options dict to exporter arguments
authoryomguy <>
Thu, 19 Apr 2007 17:20:54 +0000 (17:20 +0000)
committeryomguy <>
Thu, 19 Apr 2007 17:20:54 +0000 (17:20 +0000)
telemeta/export/api.py
telemeta/export/core.py
telemeta/export/flac.py
telemeta/export/ogg.py
telemeta/export/wav.py
tests/export_test.py

index ac5a1ab39bd3cf4ff9a24377854affce5e6d8d61..020ea24895a0219d5928e9eca91ca82eda543b97 100644 (file)
@@ -12,7 +12,9 @@
 # Author: Olivier Guilyardi <olivier@samalyse.com>
 #                Guillaume Pellerin <pellerin@parisson.com>
 
-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.
 
index cf7c0d5df6653639ed011a89d1debbe9cf76b938..c54eed952d49f4f1f13e2816b5f7bea4c0a42216 100644 (file)
@@ -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 <pellerin@parisson.com>
@@ -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
index 8f8d04c2455205bf08c9b8afcdc5084456014c0b..101331e371c5e2f25ab88733803b623273a2a014 100644 (file)
@@ -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
index 493175d64228b3d0221f8e7b7af624a9144fbee3..2e88400de761456c2913e8f88bafa5ffc9e4ba57 100644 (file)
@@ -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
index 6dee6999362970bfa52d5bce8889c091ad44cf14..4d4cf97f4c2894126c3ecf64cc0b60b49891f4c3 100644 (file)
@@ -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
index 9f665dde5c29cdab2efa161a19909245ebcb8a4b..9cce862156a215dca7eb5bdc0ee52cde40a8251c 100644 (file)
@@ -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()