diff options
author | Rodney Ewing <ewing.rj@gmail.com> | 2013-08-13 11:30:18 -0700 |
---|---|---|
committer | Rodney Ewing <ewing.rj@gmail.com> | 2013-08-16 15:30:19 -0700 |
commit | 2e50e4b5f374f10630e078216e1a15b99a7354fd (patch) | |
tree | c669724e997d9d2ff038fe9a4f4c1dd135f9d891 | |
parent | d8f886dcb45972881977be6e60fbdaa870ea8115 (diff) | |
download | mediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.tar.lz mediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.tar.xz mediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.zip |
add audio thumbnail and spectrogram resizer
-rw-r--r-- | mediagoblin/media_types/audio/processing.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/mediagoblin/media_types/audio/processing.py b/mediagoblin/media_types/audio/processing.py index b70f7841..362d2d3c 100644 --- a/mediagoblin/media_types/audio/processing.py +++ b/mediagoblin/media_types/audio/processing.py @@ -227,7 +227,71 @@ class InitialProcessor(CommonAudioProcessor): self.delete_queue_file() +class Resizer(CommonAudioProcessor): + """ + Thumbnail and spectogram resizing process steps for processed audio + """ + name = 'resize' + description = 'Resize audio thumbnail or spectogram' + + @classmethod + def media_is_eligible(cls, entry=None, state=None): + """ + Determine if this media entry is eligible for processing + """ + if not state: + state = entry.state + return state in 'processed' + + @classmethod + def generate_parser(cls): + parser = argparse.ArgumentParser( + description=cls.description, + prog=cls.name) + + parser.add_argument( + '--quality', + help='vorbisenc quality. Range: -0.1..1') + + parser.add_argument( + '--fft_size', + type=int, + help='spectrogram fft size') + + parser.add_argument( + '--thumb_size', + nargs=2, + metavar=('max_width', 'max_height'), + type=int) + + parser.add_argument( + '--medium_width', + type=int, + help='The width of the spectogram') + + parser.add_argument( + 'file', + choices=['thumb', 'spectrogram']) + + return parser + + @classmethod + def args_to_request(cls, args): + return request_from_args( + args, ['thumb_size', 'file', 'quality', 'fft_size', 'medium_width']) + + def process(self, thumb_size=None, file=None, quality=None, fft_size=None, + medium_width=None): + self.common_setup() + if file == 'thumb': + self.generate_thumb(size=thumb_size) + elif file == 'spectrogram': + self.create_spectrogram(quality=quality, max_width=medium_width, + fft_size=fft_size) + + class AudioProcessingManager(ProcessingManager): def __init__(self): super(self.__class__, self).__init__() self.add_processor(InitialProcessor) + self.add_processor(Resizer) |