source: telemeta/export/wav.py @ c2aa673

cremcrem2devdev2diademsdj1.6feature/breadcrumbsfeature/ts-0.5feature/ts-0.5.4feature/writecacheformagenericinstru_searchlamlam2mapsv3mergenlivemultiproductionrelease/1.4.4sabiodsecurityserversocialstoragetelecastertestvideo
Last change on this file since c2aa673 was c2aa673, checked in by yomguy <>, 7 years ago

Temporary fixed mp3 date

  • Property mode set to 100644
File size: 3.6 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2007 Parisson SARL
4# Copyright (c) 2006-2007 Guillaume Pellerin <pellerin@parisson.com>
5# All rights reserved.
6#
7# This software is licensed as described in the file COPYING, which
8# you should have received as part of this distribution. The terms
9# are also available at http://svn.parisson.org/telemeta/TelemetaLicense.
10#
11# Author: Guillaume Pellerin <pellerin@parisson.com>
12
13import os
14import string
15
16from telemeta.export.core import *
17from telemeta.export.api import IExporter
18
19class WavExporter(ExporterCore):
20        """Defines methods to export to OGG Vorbis"""
21
22        implements(IExporter)
23       
24        def __init__(self):
25                self.item_id = ''
26                self.metadata = {}
27                self.description = ''
28                self.info = []
29                self.source = ''
30                self.dest = ''
31                self.options = {}
32               
33        def get_format(self):
34                return 'WAV'
35       
36        def get_file_extension(self):
37                return 'wav'
38
39        def get_mime_type(self):
40                return 'audio/x-wav'
41
42        def get_description(self):
43                return 'FIXME'
44
45        def get_file_info(self):
46                try:
47                        file1, file2 = os.popen4('wavinfo "'+self.dest+'"')
48                        info = []
49                        for line in file2.readlines():
50                                info.append(clean_word(line[:-1]))
51                        self.info = info
52                        return self.info
53                except IOError:
54                        return 'Exporter error [1]: file does not exist.'
55
56        def set_cache_dir(self,path):
57                """Set the directory where cached files should be stored. Does nothing
58        if the exporter doesn't support caching.
59       
60        The driver shouldn't assume that this method will always get called. A
61        temporary directory should be used if that's not the case.
62        """
63                self.cache_dir = path
64
65        def decode(self):
66                try:
67                        file_name, ext = get_file_name(self.source)
68                        dest = self.cache_dir+os.sep+file_name+'.wav'
69                        os.system('sox "'+self.source+'" -w -r 44100 -t wav -c2 "'+ \
70                                          dest+'.wav"')
71                        self.source = dest
72                        return dest
73                except IOError:
74                        return 'ExporterError [2]: decoder not compatible.'
75
76        def write_tags(self):
77                # Create metadata XML file !
78                self.write_metadata_xml(self.dest+'.xml')
79       
80        def create_md5_key(self):
81                """ Create the md5 keys of the dest """
82                try:
83                        os.system('md5sum -b "'+self.dest+'" >"'+self.dest+'.md5"')
84                except IOError:
85                        return 'Exporter error: Cannot create the md5 key...'
86       
87        def create_par_key(self):
88                """ Create the par2 keys of the dest """
89                args = 'c -n1 '
90                if 'verbose' in self.options and self.options['verbose'] != '0':
91                        args = args
92                else:
93                        args = args + '-q -q '
94
95                try:
96                        os.system('par2 '+args+' "'+self.dest+'"')
97                except IOError:
98                        return 'Exporter error: Cannot create the par2 key...'
99
100        def process(self, item_id, source, metadata, options=None):
101                self.item_id = item_id
102                self.source = source
103                self.metadata = metadata
104                self.options = {}
105               
106                if not options is None:
107                        self.options = options
108                try:
109                        # Pre-proccessing (core)
110                        self.ext = self.get_file_extension()
111                        self.dest = self.pre_process(self.item_id,
112                                                                                 self.source,
113                                                                                 self.metadata,
114                                                                                 self.ext,
115                                                                                 self.cache_dir,
116                                                                                 self.options)
117
118                        #if self.compare_md5_key():
119                        os.system('cp -a "'+self.source+'" "'+ self.dest+'"')
120                        #print 'COPIED'
121                       
122                        # Pre-proccessing (self)
123                        self.write_tags()
124
125                        # Create the md5 key
126                        #if 'md5' in self.metadata and self.metadata['md5']:
127                        self.create_md5_key()
128
129                        # Create the par2 key
130                        #if 'par2' in self.metadata and self.metadata['par2']:
131                        self.create_par_key()
132
133                        self.post_process(self.item_id,
134                                                 self.source,
135                                                 self.metadata,
136                                                 self.ext,
137                                                 self.cache_dir,
138                                                 self.options)
139
140                        # Output                               
141                        return self.dest
142
143                except IOError:
144                        return 'ExporterError [3]: source file does not exist.'
145
Note: See TracBrowser for help on using the repository browser.