skip audio reprocessing if necessary
This commit is contained in:
parent
f4f84297ef
commit
2e22cefdd9
@ -87,10 +87,34 @@ class CommonAudioProcessor(MediaProcessor):
|
|||||||
self.entry.media_files['best_quality'] = self.entry \
|
self.entry.media_files['best_quality'] = self.entry \
|
||||||
.media_files['webm_audio']
|
.media_files['webm_audio']
|
||||||
|
|
||||||
|
def _skip_processing(self, keyname, **kwargs):
|
||||||
|
file_metadata = self.entry.get_file_metadata(keyname)
|
||||||
|
skip = True
|
||||||
|
|
||||||
|
if not file_metadata:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if keyname == 'webm_audio':
|
||||||
|
if kwargs.get('quality') != file_metadata.get('quality'):
|
||||||
|
skip = False
|
||||||
|
elif keyname == 'spectrogram':
|
||||||
|
if kwargs.get('max_width') != file_metadata.get('max_width'):
|
||||||
|
skip = False
|
||||||
|
elif kwargs.get('fft_size') != file_metadata.get('fft_size'):
|
||||||
|
skip = False
|
||||||
|
elif keyname == 'thumb':
|
||||||
|
if kwargs.get('size') != file_metadata.get('size'):
|
||||||
|
skip = False
|
||||||
|
|
||||||
|
return skip
|
||||||
|
|
||||||
def transcode(self, quality=None):
|
def transcode(self, quality=None):
|
||||||
if not quality:
|
if not quality:
|
||||||
quality = self.audio_config['quality']
|
quality = self.audio_config['quality']
|
||||||
|
|
||||||
|
if self._skip_processing('webm_audio', quality=quality):
|
||||||
|
return
|
||||||
|
|
||||||
progress_callback = ProgressCallback(self.entry)
|
progress_callback = ProgressCallback(self.entry)
|
||||||
webm_audio_tmp = os.path.join(self.workbench.dir,
|
webm_audio_tmp = os.path.join(self.workbench.dir,
|
||||||
self.name_builder.fill(
|
self.name_builder.fill(
|
||||||
@ -110,12 +134,18 @@ class CommonAudioProcessor(MediaProcessor):
|
|||||||
store_public(self.entry, 'webm_audio', webm_audio_tmp,
|
store_public(self.entry, 'webm_audio', webm_audio_tmp,
|
||||||
self.name_builder.fill('{basename}.medium.webm'))
|
self.name_builder.fill('{basename}.medium.webm'))
|
||||||
|
|
||||||
|
self.entry.set_file_metadata('webm_audio', **{'quality': quality})
|
||||||
|
|
||||||
def create_spectrogram(self, max_width=None, fft_size=None):
|
def create_spectrogram(self, max_width=None, fft_size=None):
|
||||||
if not max_width:
|
if not max_width:
|
||||||
max_width = mgg.global_config['media:medium']['max_width']
|
max_width = mgg.global_config['media:medium']['max_width']
|
||||||
if not fft_size:
|
if not fft_size:
|
||||||
fft_size = self.audio_config['spectrogram_fft_size']
|
fft_size = self.audio_config['spectrogram_fft_size']
|
||||||
|
|
||||||
|
if self._skip_processing('spectrogram', max_width=max_width,
|
||||||
|
fft_size=fft_size):
|
||||||
|
return
|
||||||
|
|
||||||
wav_tmp = os.path.join(self.workbench.dir, self.name_builder.fill(
|
wav_tmp = os.path.join(self.workbench.dir, self.name_builder.fill(
|
||||||
'{basename}.ogg'))
|
'{basename}.ogg'))
|
||||||
|
|
||||||
@ -140,12 +170,19 @@ class CommonAudioProcessor(MediaProcessor):
|
|||||||
store_public(self.entry, 'spectrogram', spectrogram_tmp,
|
store_public(self.entry, 'spectrogram', spectrogram_tmp,
|
||||||
self.name_builder.fill('{basename}.spectrogram.jpg'))
|
self.name_builder.fill('{basename}.spectrogram.jpg'))
|
||||||
|
|
||||||
|
file_metadata = {'max_width': max_width,
|
||||||
|
'fft_size': fft_size}
|
||||||
|
self.entry.set_file_metadata('spectrogram', **file_metadata)
|
||||||
|
|
||||||
def generate_thumb(self, size=None):
|
def generate_thumb(self, size=None):
|
||||||
if not size:
|
if not size:
|
||||||
max_width = mgg.global_config['media:thumb']['max_width']
|
max_width = mgg.global_config['media:thumb']['max_width']
|
||||||
max_height = mgg.global_config['media:thumb']['max_height']
|
max_height = mgg.global_config['media:thumb']['max_height']
|
||||||
size = (max_width, max_height)
|
size = (max_width, max_height)
|
||||||
|
|
||||||
|
if self._skip_processing('thumb', size=size):
|
||||||
|
return
|
||||||
|
|
||||||
thumb_tmp = os.path.join(self.workbench.dir, self.name_builder.fill(
|
thumb_tmp = os.path.join(self.workbench.dir, self.name_builder.fill(
|
||||||
'{basename}-thumbnail.jpg'))
|
'{basename}-thumbnail.jpg'))
|
||||||
|
|
||||||
@ -166,6 +203,8 @@ class CommonAudioProcessor(MediaProcessor):
|
|||||||
store_public(self.entry, 'thumb', thumb_tmp,
|
store_public(self.entry, 'thumb', thumb_tmp,
|
||||||
self.name_builder.fill('{basename}.thumbnail.jpg'))
|
self.name_builder.fill('{basename}.thumbnail.jpg'))
|
||||||
|
|
||||||
|
self.entry.set_file_metadata('thumb', **{'size': size})
|
||||||
|
|
||||||
|
|
||||||
class InitialProcessor(CommonAudioProcessor):
|
class InitialProcessor(CommonAudioProcessor):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user