diff --git a/README.md b/README.md index 5c9d1cbb9..c39b13616 100644 --- a/README.md +++ b/README.md @@ -409,11 +409,6 @@ Alternatively, refer to the [developer instructions](#developer-instructions) fo webm and mkv videos) --embed-thumbnail Embed thumbnail in the audio as cover art --add-metadata Write metadata to the video file - --preferred-info References a JSON file that contains the - metadata that will be used preferentially - over the extracted metadata and upated onto - the output file. This argument will only be - utilized when add-metadata is used --metadata-from-title FORMAT Parse additional metadata like song title / artist from the video title. The format syntax is the same as --output. Regular diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 03066181a..94d19f51b 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -276,12 +276,11 @@ def _real_main(argv=None): # source and target containers. From this point the container won't change, # so metadata can be added here. if opts.addmetadata: - if hasattr(opts, 'preferredinfo'): - with open(opts.preferredinfo) as read_file: - preferredinfo = json.load(read_file) + if hasattr(opts, 'preferredmetadatatoembed'): + preferredmetadatatoembed = json.loads(opts.preferredmetadatatoembed) postprocessors.append({ 'key': 'FFmpegMetadata', - 'preferredinfo': preferredinfo, + 'preferredmetadatatoembed': preferredmetadatatoembed, }) else: postprocessors.append({ diff --git a/youtube_dl/options.py b/youtube_dl/options.py index f3335c564..83b96d548 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -819,9 +819,12 @@ def parseOpts(overrideArguments=None): action='store_true', dest='addmetadata', default=False, help='Write metadata to the video file') postproc.add_option( - '--preferred-info', - dest='preferredinfo', metavar='FILE', + '--preferred-metadata-to-embed', + dest='preferredmetadatatoembed', metavar='JSON', type=str, help='Override metadata on the outputted file') + postproc.add_option( + '--preferred-metadata-json' + ) postproc.add_option( '--metadata-from-title', metavar='FORMAT', dest='metafromtitle', diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index e2722c8ef..39e6b6cde 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -431,11 +431,13 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor): class FFmpegMetadataPP(FFmpegPostProcessor): - def __init__(self, downloader=None, preferredinfo=None): + def __init__(self, downloader=None, preferredmetadatatoembed=None): super(FFmpegMetadataPP, self).__init__(downloader) - if not (isinstance(preferredinfo, dict) or preferredinfo == None): - raise TypeError('preferredinfo must be a dictionary, if provided') - self._preferredinfo = preferredinfo + assert ( + (isinstance(preferredmetadatatoembed, dict) or + preferredmetadatatoembed != None) + ), 'preferredmetadatatoembed must be a dictionary, if provided' + self._preferredmetadatatoembed = preferredmetadatatoembed def run(self, info): metadata = {} @@ -456,7 +458,7 @@ class FFmpegMetadataPP(FFmpegPostProcessor): meta_list = (meta_list,) if not isinstance(info_list, (list, tuple)): info_list = (info_list,) - preferred_key = add_info(meta_list, info_list, metadata, self._preferredinfo) + preferred_key = add_info(meta_list, info_list, metadata, self._preferredmetadatatoembed) if preferred_key is None: add_info(meta_list, info_list, metadata, info)