aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodney Ewing <ewing.rj@gmail.com>2013-08-13 11:30:18 -0700
committerRodney Ewing <ewing.rj@gmail.com>2013-08-16 15:30:19 -0700
commit2e50e4b5f374f10630e078216e1a15b99a7354fd (patch)
treec669724e997d9d2ff038fe9a4f4c1dd135f9d891
parentd8f886dcb45972881977be6e60fbdaa870ea8115 (diff)
downloadmediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.tar.lz
mediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.tar.xz
mediagoblin-2e50e4b5f374f10630e078216e1a15b99a7354fd.zip
add audio thumbnail and spectrogram resizer
-rw-r--r--mediagoblin/media_types/audio/processing.py64
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)