1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 import os
40 import string
41 import datetime
42 from mutagen.oggvorbis import OggVorbis
43 from utils import *
44
45
46 -class Ogg(MediaBase):
47 """An OGG file object"""
48
50 MediaBase.__init__(self)
51
52 self.description = "OGG Vorbis"
53 self.mime_type = 'audio/ogg'
54 self.extension = 'ogg'
55 self.format = 'OGG'
56
57 self.media = media
58 self.sourceobj = OggVorbis(self.media)
59 self.source = self.media
60 self.bitrate_default = '192'
61
62 self.tagdata = {
63 'title': '',
64 'artist': '',
65 'album': '',
66 'date': '',
67 'comment': '',
68 'genre': '',
69 'copyright': ''
70 }
71
72 self.info = self.sourceobj.info
73 self.bitrate = int(str(self.info.bitrate)[:-3])
74 self.length = datetime.timedelta(0, self.info.length)
75 self.read_file_metadata()
76 self.media_info = get_file_info(self.media)
77 self.file_name = self.media_info[0]
78 self.file_title = self.media_info[1]
79 self.file_ext = self.media_info[2]
80 self.size = os.path.getsize(self.media)
81
83 try:
84 file_out1, file_out2 = os.popen4('ogginfo "' + self.source + '"')
85 info = []
86 for line in file_out2.readlines():
87 info.append(clean_word(line[:-1]))
88 self.info = info
89 return self.info
90 except:
91 raise IOError('ExporterError: file does not exist.')
92
94 if not self.item_id:
95 raise IOError('ExporterError: Required item_id parameter not set.')
96 try:
97 p = os.path.join(self.cache_dir, (self.item_id + '.wav'))
98 os.system('oggdec -o "' + p + '" "' + self.source + '"')
99 return p
100 except:
101 raise IOError('ExporterError: decoder is not compatible.')
102
108
110 """Get process options and return arguments for the encoder"""
111 args = []
112 if options is not None:
113 self.options = options
114 if not ('verbose' in self.options and self.options['verbose'] != '0'):
115 args.append('-Q ')
116 if 'ogg_bitrate' in self.options:
117 args.append('-b ' + self.options['ogg_bitrate'])
118 elif 'ogg_quality' in self.options:
119 args.append('-q ' + self.options['ogg_quality'])
120 else:
121 args.append('-b ' + self.bitrate_default)
122 else:
123 args.append('-Q -b ' + self.bitrate_default)
124
125 for tag in self.metadata.keys():
126 value = clean_word(self.metadata[tag])
127 args.append('-c %s="%s"' % (tag, value))
128 if tag in self.tagdata:
129 arg = self.tagdata[tag]
130 if arg:
131 args.append('-c %s="%s"' % (arg, value))
132
133 return args
134