diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 3917ca9dc..787f90221 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -91,6 +91,7 @@ from .postprocessor import ( FFmpegFixupM4aPP, FFmpegFixupStretchedPP, FFmpegMergerPP, + FFmpegMetadataPP, FFmpegPostProcessor, get_postprocessor, ) @@ -1782,13 +1783,26 @@ class YoutubeDL(object): files_to_delete, info = pp.run(info) except PostProcessingError as e: self.report_error(e.msg) - if files_to_delete and not self.params.get('keepvideo', False): - for old_filename in files_to_delete: + for old_filename in files_to_delete: + if not self.params.get('keepvideo', False): self.to_screen('Deleting original file %s (pass -k to keep)' % old_filename) try: os.remove(encodeFilename(old_filename)) except (IOError, OSError): self.report_warning('Unable to remove downloaded original file') + elif self.params.get('addmetadata', False): + filepath = info['filepath'] + ext = info['ext'] + info['filepath'] = old_filename + info['ext'] = old_filename[old_filename.rfind('.') + 1:] + try: + FFmpegMetadataPP(self).run(info) + except PostProcessingError as e: + self.report_error(e.msg) + finally: + info['filepath'] = filepath + info['ext'] = ext + def _make_archive_id(self, info_dict): # Future-proof against any change in case diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index ae0177878..d7317a490 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -222,8 +222,6 @@ def _real_main(argv=None): 'titleformat': opts.metafromtitle }) if opts.extractaudio: - if opts.addmetadata and opts.keepvideo: - postprocessors.append({'key': 'FFmpegMetadata'}) postprocessors.append({ 'key': 'FFmpegExtractAudio', 'preferredcodec': opts.audioformat, @@ -384,6 +382,7 @@ def _real_main(argv=None): 'external_downloader_args': external_downloader_args, 'postprocessor_args': postprocessor_args, 'cn_verification_proxy': opts.cn_verification_proxy, + 'addmetadata': opts.addmetadata, } with YoutubeDL(ydl_opts) as ydl: