FFmpegMetadataPP; Write temporary file to `something.temp.{ext}` (fixes #2079)

ffmpeg correctly recognize the formats of extensions like m4a, but it doesn’t works if it’s passed with the `—format` option.
pull/8/head
Jaime Marquínez Ferrándiz 11 years ago
parent 9887c9b2d6
commit 91d7d0b333

@ -10,6 +10,7 @@ from .utils import (
PostProcessingError, PostProcessingError,
shell_quote, shell_quote,
subtitles_filename, subtitles_filename,
prepend_extension,
) )
@ -496,13 +497,11 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
return True, info return True, info
filename = info['filepath'] filename = info['filepath']
ext = os.path.splitext(filename)[1][1:] temp_filename = prepend_extension(filename, 'temp')
temp_filename = filename + u'.temp'
options = ['-c', 'copy'] options = ['-c', 'copy']
for (name, value) in metadata.items(): for (name, value) in metadata.items():
options.extend(['-metadata', '%s=%s' % (name, value)]) options.extend(['-metadata', '%s=%s' % (name, value)])
options.extend(['-f', ext])
self._downloader.to_screen(u'[ffmpeg] Adding metadata to \'%s\'' % filename) self._downloader.to_screen(u'[ffmpeg] Adding metadata to \'%s\'' % filename)
self.run_ffmpeg(filename, temp_filename, options) self.run_ffmpeg(filename, temp_filename, options)

@ -1119,3 +1119,8 @@ def parse_duration(s):
if m.group('hours'): if m.group('hours'):
res += int(m.group('hours')) * 60 * 60 res += int(m.group('hours')) * 60 * 60
return res return res
def prepend_extension(filename, ext):
name, real_ext = os.path.splitext(filename)
return u'{0}.{1}{2}'.format(name, ext, real_ext)

Loading…
Cancel
Save