except IOError:
return 'Exporter error: Cannot normalize, path does not exist.'
-
- def create_md5_key(self):
- """ Create the md5 keys of the dest """
- try:
- os.system('md5sum -b "'+self.dest+'" >"'+self.dest+'.md5"')
- except IOError:
- return 'Exporter error: Cannot create the md5 key...'
def check_md5_key(self):
""" Check if the md5 key is OK and return a boolean """
except IOError:
return 'Exporter error: Cannot check the md5 key...'
- def create_par_key(self):
- """ Create the par2 keys of the dest """
- args = 'c -n1 '
- if self.verbose == '0':
- args = args + '-q -q '
- try:
- os.system('par2 '+args+' "'+self.dest+'"')
- except IOError:
- return 'Exporter error: Cannot create the par2 key...'
-
def get_file_info(self):
""" Return the list of informations of the dest """
return self.export.get_file_info()
xml.dom.ext.PrettyPrint(doc, xml_file)
xml_file.close()
- def process(self, item_id, source, metadata):
- """ Export the source """
+
+ def pre_process(self, item_id, source, metadata, ext, cache_dir):
+ """ Pre processing of the core. Prepare the export path and
+ return it"""
self.item_id = item_id
self.source = source
file_name = get_file_name(self.source)
file_name_wo_ext, file_ext = split_file_name(file_name)
+ self.cache_dir = cache_dir
self.metadata = metadata
self.collection = self.metadata['Collection']
self.artist = self.metadata['Artist']
self.title = self.metadata['Title']
- self.verbose = self.metadata['verbose']
-
- # The Loop
- for format in self.metadata['export_formats']:
-
- # Implement the exporter object with the given format
- if format == 'OGG':
- self.export = telemeta.export.ogg.OggExporter()
- if format == 'FLAC':
- self.export = telemeta.export.FlacExporter()
- if format == 'WAV':
- self.export = telemeta.export.WavExporter()
-
- # Decode the source if needed
- if os.path.exists(self.source) and not iswav16(self.source):
- # TO FIX !
- self.source = self.export.decode()
-
- # Normalize if demanded
- if 'normalize' in self.metadata and self.metadata['normalize']:
- self.normalize()
-
- # Define the cache directory
- self.export.set_cache_dir(self.cache_dir)
- self.ext = self.export.get_file_extension()
-
- # Define and create the destination path
- # At the moment, the target directory is built with this scheme in
- # the cache directory : ./%Format/%Collection/%Artist/
- self.dest = self.cache_dir
- export_dir = os.path.join(self.ext,self.collection,self.artist)
-
- if not os.path.exists(os.path.join(self.dest,export_dir)):
- for _dir in export_dir.split(os.sep):
- self.dest = os.path.join(self.dest,_dir)
- if not os.path.exists(self.dest):
- os.mkdir(self.dest)
- else:
- self.dest = os.path.join(self.dest,export_dir)
-
- # Set the target file
- target_file = file_name_wo_ext+'.'+self.ext
- self.dest = os.path.join(self.dest,target_file)
- self.export.dest = self.dest
-
- # Process
- try:
- self.export.process(self.item_id,
- self.source,
- self.metadata)
- except IOError:
- return 'Encoding failed !'
-
- if self.verbose != '0':
- print self.dest
- print self.export.get_file_info()
+
+ # Decode the source if needed
+ if os.path.exists(self.source) and not iswav16(self.source):
+ # TO FIX !
+ self.source = self.export.decode()
+
+ # Normalize if demanded
+ if 'normalize' in self.metadata and self.metadata['normalize']:
+ self.normalize()
+
+ # Define the cache directory
+ self.ext = self.get_file_extension()
+
+ # Define and create the destination path
+ # At the moment, the target directory is built with this scheme in
+ # the cache directory : ./%Format/%Collection/%Artist/
+ self.dest = self.cache_dir
+ export_dir = os.path.join(self.ext,self.collection,self.artist)
+
+ if not os.path.exists(os.path.join(self.dest,export_dir)):
+ for _dir in export_dir.split(os.sep):
+ self.dest = os.path.join(self.dest,_dir)
+ if not os.path.exists(self.dest):
+ os.mkdir(self.dest)
+ else:
+ self.dest = os.path.join(self.dest,export_dir)
+
+ # Set the target file
+ target_file = file_name_wo_ext+'.'+self.ext
+ self.dest = os.path.join(self.dest,target_file)
+ return self.dest
+
+
+ def post_process(self, item_id, source, metadata, ext, cache_dir):
+ """ Post processing of the Core. Print infos, etc..."""
+ if 'verbose' in self.metadata and self.verbose != '0':
+ print self.dest
+ print self.get_file_info()
# External functions
self.item_id = item_id
self.source = source
self.metadata = metadata
- self.quality = self.metadata['ogg_quality']
- self.bitrate = self.metadata['ogg_bitrate']
+ #self.quality = self.metadata['ogg_quality']
+ #self.bitrate = self.metadata['ogg_bitrate']
- if self.bitrate != '':
- args = '-b '+self.bitrate
- elif self.quality != '':
- args = '-q '+self.quality
+ if 'ogg_bitrate' in self.metadata:
+ args = '-b '+self.metadata['ogg_bitrate']
+ elif 'ogg_quality' in self.metadata:
+ args = '-q '+self.metadata['ogg_quality']
else:
args = '-b '+self.bitrate_default
- if self.metadata['verbose'] == '0':
- args = args+' -Q'
-
+ if not 'verbose' in self.metadata or self.metadata['verbose'] == '0':
+ args = args + ' -Q'
+
if os.path.exists(self.source) and not iswav16(self.source):
self.source = self.decode()
try:
+ # Pre-proccessing (core)
+ self.ext = self.get_file_extension()
+ self.dest = self.pre_process(self.item_id,
+ self.source,
+ self.metadata,
+ self.ext,
+ self.cache_dir)
+
# Encoding
os.system('oggenc '+args+' -o "'+self.dest+
'" "'+self.source+'"')
- # Write tags
+
+ # Pre-proccessing (self)
self.write_tags()
+ self.post_process(self.item_id,
+ self.source,
+ self.metadata,
+ self.ext,
+ self.cache_dir)
+
+ # Output
return self.dest
+
except IOError:
return 'ExporterError [3]: source file does not exist.'
def write_tags(self):
# Create metadata XML file !
self.write_metadata_xml(self.dest+'.xml')
-
+
+ def create_md5_key(self):
+ """ Create the md5 keys of the dest """
+ try:
+ os.system('md5sum -b "'+self.dest+'" >"'+self.dest+'.md5"')
+ except IOError:
+ return 'Exporter error: Cannot create the md5 key...'
+
+ def create_par_key(self):
+ """ Create the par2 keys of the dest """
+ args = 'c -n1 '
+ if not 'verbose' in self.metadata or self.metadata['verbose'] == '0':
+ args = args + '-q -q '
+ try:
+ os.system('par2 '+args+' "'+self.dest+'"')
+ except IOError:
+ return 'Exporter error: Cannot create the par2 key...'
+
def process(self, item_id, source, metadata):
self.item_id = item_id
self.source = source
self.metadata = metadata
- self.verbose = self.metadata['verbose']
try:
+ # Pre-proccessing (core)
+ self.ext = self.get_file_extension()
+ self.dest = self.pre_process(self.item_id,
+ self.source,
+ self.metadata,
+ self.ext,
+ self.cache_dir)
+
#if self.compare_md5_key():
os.system('cp -a "'+self.source+'" "'+ self.dest+'"')
#print 'COPIED'
- # Write tags
+
+ # Pre-proccessing (self)
self.write_tags()
+ self.post_process(self.item_id,
+ self.source,
+ self.metadata,
+ self.ext,
+ self.cache_dir)
+ # Special post process
# Create the md5 key
- if 'md5' in self.metadata and self.metadata['md5']:
- self.create_md5_key()
+ #if 'md5' in self.metadata and self.metadata['md5']:
+ self.create_md5_key()
# Create the par2 key
- if 'par2' in self.metadata and self.metadata['par2']:
- self.create_par_key()
-
+ #if 'par2' in self.metadata and self.metadata['par2']:
+ self.create_par_key()
+
+ # Output
return self.dest
except IOError:
-#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007 Parisson SARL
#
# Author: Guillaume Pellerin <pellerin@parisson.com>
+
import os
+
from telemeta.export import *
-class ExportTest:
- """Test the 'export' features"""
- def __init__(self):
- self.cache_dir = 'cache/'
- self.source = 'samples/wav/Cellar - Show Me - 02.wav'
- self.item_id = '1'
-
- self.metadata = {'Collection': 'Test_Collection',
- 'Title': 'Show Me',
- 'Artist': 'Cellar',
- 'Encoder': 'Telemeta',
- 'Item_id': self.item_id,
- 'export_formats': ['WAV','OGG','FLAC'],
- 'normalize': True,
- 'md5': True,
- 'par2': True,
- 'ogg_bitrate': '192',
- 'ogg_quality': '4',
- 'flac_quality': '5',
- 'verbose': '1',
- }
-
- self.dest = core.ExporterCore()
- self.dest.set_cache_dir = self.cache_dir
-
- def process(self):
- self.dest.process(self.item_id, self.source, self.metadata)
-
-
-media = ExportTest()
-media.process()
\ No newline at end of file
+cache_dir = 'cache/'
+source = 'samples/wav/Cellar - Show Me - 02.wav'
+item_id = '1'
+metadata = {'Collection': 'Test',
+ 'Title': 'Show Me',
+ 'Artist': 'Cellar',
+ 'Encoder': 'Telemeta',
+ }
+
+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)
+
+media3 = WavExporter()
+media3.set_cache_dir(cache_dir)
+media3.process(item_id,source,metadata)
+
+