added audio reprocessing transcoder
authorRodney Ewing <ewing.rj@gmail.com>
Tue, 13 Aug 2013 18:42:42 +0000 (11:42 -0700)
committerRodney Ewing <ewing.rj@gmail.com>
Fri, 16 Aug 2013 22:30:19 +0000 (15:30 -0700)
mediagoblin/media_types/audio/processing.py

index 2f965e45595183d7e4204bfe793b73228046bdf9..7d8fd2d2beec29b715f0ced508c054ba09b264cc 100644 (file)
@@ -274,7 +274,7 @@ class Resizer(CommonAudioProcessor):
         return request_from_args(
             args, ['thumb_size', 'file', 'fft_size', 'medium_width'])
 
-    def process(self, thumb_size=None, file=None, fft_size=None,
+    def process(self, file, thumb_size=None, fft_size=None,
                 medium_width=None):
         self.common_setup()
 
@@ -284,8 +284,44 @@ class Resizer(CommonAudioProcessor):
             self.create_spectrogram(max_width=medium_width, fft_size=fft_size)
 
 
+class Transcoder(CommonAudioProcessor):
+    """
+    Transcoding processing steps for processed audio
+    """
+    name = 'transcode'
+    description = 'Re-transcode audio'
+
+    @classmethod
+    def media_is_eligible(cls, entry=None, state=None):
+        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')
+
+        return parser
+
+    @classmethod
+    def args_to_request(cls, args):
+        return request_from_args(
+            args, ['quality'])
+
+    def process(self, quality=None):
+        self.common_setup()
+        self.transcode(quality=quality)
+
+
 class AudioProcessingManager(ProcessingManager):
     def __init__(self):
         super(self.__class__, self).__init__()
         self.add_processor(InitialProcessor)
         self.add_processor(Resizer)
+        self.add_processor(Transcoder)