Refactor Options and CombinedOptions

Options are now renamed to Option.
CombinedOptions are renamed to OptionStore.
This commit is contained in:
Mathias Koehler 2011-11-04 22:52:48 +01:00
parent d12a628c3b
commit f25981a46f
5 changed files with 27 additions and 26 deletions

View file

@ -2,18 +2,18 @@
from itertools import chain
from .options import CombinedOptions
from .options import OptionStore
NO_AUDIO = ['-an']
NO_VIDEO = ['-vn']
class Codec(CombinedOptions):
class Codec(OptionStore):
def __init__(self, name, *args):
self.name = name
CombinedOptions.__init__(self, *args)
OptionStore.__init__(self, *args)
class VideoCodec(Codec):

View file

@ -16,38 +16,39 @@ from select import select
from subprocess import Popen, PIPE, STDOUT
from itertools import chain
from .options import CombinedOptions, Options
from .options import OptionStore, Option
class Input(CombinedOptions):
class Input(OptionStore):
def __init__(self, file, *args):
self.file = file
CombinedOptions.__init__(self, *args)
OptionStore.__init__(self, *args)
def __iter__(self):
return chain(CombinedOptions.__iter__(self), ['-i', self.file])
return chain(OptionStore.__iter__(self), ['-i', self.file])
class Output(OptionStore):
class Output(CombinedOptions):
def __init__(self, file, *args):
self.file = file
CombinedOptions.__init__(self, *args)
OptionStore.__init__(self, *args)
def overwrite(self):
self.add_option('-y', None)
return self
def __iter__(self):
return chain(CombinedOptions.__iter__(self), [self.file])
return chain(OptionStore.__iter__(self), [self.file])
class FFmpeg(CombinedOptions):
class FFmpeg(OptionStore):
def __init__(self, binary="ffmpeg", *args):
self.binary = binary
CombinedOptions.__init__(self, *args)
OptionStore.__init__(self, *args)
def run(self):
self.pipe = Popen(self, executable=self.binary,

View file

@ -2,23 +2,23 @@
from itertools import chain
from .options import CombinedOptions
from .options import OptionStore
class CombinedFilter(CombinedOptions):
class FilterStore(OptionStore):
def __str__(self):
return ",".join(CombinedFilter.__iter__(self))
return ",".join(FilterStore.__iter__(self))
def __iter__(self):
for key, value in CombinedOptions.iteritems(self):
for key, value in OptionStore.iteritems(self):
if value is not None:
yield "=".join([key, str(value)])
else:
yield key
class VideoFilter(CombinedFilter):
class VideoFilter(FilterStore):
def blackframe(self, amount, threshold):
filter = self._format_parameter(amount, threshold)
@ -171,14 +171,14 @@ class VideoFilter(CombinedFilter):
return self
def __iter__(self):
return chain(['-vf', CombinedFilter.__str__(self)])
return chain(['-vf', FilterStore.__str__(self)])
class AudioFilter(CombinedFilter):
class AudioFilter(FilterStore):
def null(self):
self.add_option('null', None)
return self
def __iter__(self):
return chain(['-af', CombinedFilter.__str__(self)])
return chain(['-af', FilterStore.__str__(self)])

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
class Options(dict):
class Option(dict):
def __init__(self, *args, **kwargs):
dict.__init__(self, *args, **kwargs)
@ -25,7 +25,7 @@ class Options(dict):
cls=self.__class__.__name__)
class CombinedOptions(object):
class OptionStore(object):
def __init__(self, *args):
self._list = list(args)
@ -52,7 +52,7 @@ class CombinedOptions(object):
return self._list.index(item)
def add_option(self, key, value):
self._list.append(Options({key: value}))
self._list.append(Option({key: value}))
@property
def option_containers(self):

View file

@ -4,7 +4,7 @@ import unittest
from ffmpegwrapper import FFmpeg, Input, Output, \
VideoCodec, AudioCodec, VideoFilter
from ffmpegwrapper.options import Options
from ffmpegwrapper.options import Option
class FFmpegTestCase(unittest.TestCase):
@ -14,7 +14,7 @@ class FFmpegTestCase(unittest.TestCase):
self.assertEqual(list(input), ['-i', '/old'])
self.assertEqual(input.file, '/old')
option = Options({'-vf': 'x11grab'})
option = Option({'-vf': 'x11grab'})
input.append(option)
self.assertEqual(list(input), ['-vf', 'x11grab', '-i', '/old'])
self.assertEqual(input.pop(), option)
@ -27,7 +27,7 @@ class FFmpegTestCase(unittest.TestCase):
self.assertEqual(list(output), ['/new'])
self.assertEqual(output.file, '/new')
option = Options({'-vcodec': 'libx264'})
option = Option({'-vcodec': 'libx264'})
output.append(option)
self.assertEqual(list(output), ['-vcodec', 'libx264', '/new'])
self.assertEqual(output.pop(), option)