From a3e86f3be768c8fa1fc2af12d5e5d66d9d9b82e8 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 16 Aug 2011 14:49:40 +0200 Subject: Implemented basic cuesheet support, some playlist fixes. --- recode.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'recode.py') diff --git a/recode.py b/recode.py index 8b3ebb0..e67328e 100644 --- a/recode.py +++ b/recode.py @@ -33,8 +33,14 @@ class Codec(object): class FFmpeg(Decoder): decoder_name = 'ffmpeg' - def decode(self, source, dest, *args): - cmd = (x.format(infile = source, outfile = dest) for x in 'ffmpeg -loglevel quiet -i {infile} -y {outfile}'.split()) + def decode(self, source, dest, *args, **kwargs): + cmd = 'ffmpeg -loglevel quiet'.split() + if 'start_time' in kwargs: + cmd += ['-ss', str(kwargs['start_time'])] + if 'end_time' in kwargs and kwargs['end_time']: + cmd += ['-t', str(kwargs['end_time'] - kwargs['start_time'])] + cmd += ['-i', source, '-y', dest] + #cmd = (x.format(infile = source, outfile = dest) for x in 'ffmpeg -loglevel quiet -i {infile} -y {outfile}'.split()) p = subprocess.Popen(cmd, stderr = subprocess.PIPE, close_fds = True) p.stderr.close() p.wait() @@ -42,7 +48,7 @@ class FFmpeg(Decoder): class Ogg(Encoder): encoder_name = 'ogg' - def encode(self, source, dest, *args): + def encode(self, source, dest, *args, **kwargs): options = config.get('options', 'encoder/ogg', '') cmd = ['oggenc', '-Q'] + options.split() + [source, '-o', dest] subprocess.call(cmd) @@ -52,18 +58,13 @@ class Recoder(object): self.decoder = decoder self.encoder = encoder - def recode(self, source, dest): + def recode(self, source, dest, **kwargs): if self.decoder.__class__ == self.encoder.__class__ and hasattr(self.decoder, 'recode'): - print 'recoding' - print self.decoder self.decoder.recode(source, dest) else: with tempfile.NamedTemporaryFile(mode = 'wb', prefix = 'foo', suffix = '.wav', delete = True) as temp: - print 'temp file:', temp.name - print 'decoding' - self.decoder.decode(source, temp.name) - print 'encoding' - self.encoder.encode(temp.name, dest) + self.decoder.decode(source, temp.name, **kwargs) + self.encoder.encode(temp.name, dest, **kwargs) class RecodeThread(threading.Thread): lock = threading.Lock() -- cgit v1.2.3