mirror of https://github.com/yt-dlp/yt-dlp.git
Field `additional_urls` to download additional videos from metadata
This commit is contained in:
parent
856bb8f99d
commit
9c2b75b561
|
@ -1279,7 +1279,9 @@ The metadata obtained the the extractors can be modified by using `--parse-metad
|
||||||
|
|
||||||
Note that any field created by this can be used in the [output template](#output-template) and will also affect the media file's metadata added when using `--add-metadata`.
|
Note that any field created by this can be used in the [output template](#output-template) and will also affect the media file's metadata added when using `--add-metadata`.
|
||||||
|
|
||||||
You can also use this to change only the metadata that is embedded in the media file. To do this, set the value of the corresponding field with a `meta_` prefix. For example, any value you set to `meta_description` field will be added to the `description` field in the file. You can use this to set a different "description" and "synopsis", for example.
|
This option also has a few special uses:
|
||||||
|
1. You can use this to change the metadata that is embedded in the media file. To do this, set the value of the corresponding field with a `meta_` prefix. For example, any value you set to `meta_description` field will be added to the `description` field in the file. You can use this to set a different "description" and "synopsis", for example
|
||||||
|
2. You can download an additional URL based on the metadata of the currently downloaded video. To do this, set the field `additional_urls` to the URL that you want to download. Eg: `--parse-metadata "description:(?P<additional_urls>https?://www\.vimeo\.com/\d+)` will download the first vimeo video found in the description
|
||||||
|
|
||||||
## Modifying metadata examples
|
## Modifying metadata examples
|
||||||
|
|
||||||
|
|
|
@ -1187,7 +1187,22 @@ class YoutubeDL(object):
|
||||||
|
|
||||||
if result_type == 'video':
|
if result_type == 'video':
|
||||||
self.add_extra_info(ie_result, extra_info)
|
self.add_extra_info(ie_result, extra_info)
|
||||||
return self.process_video_result(ie_result, download=download)
|
ie_result = self.process_video_result(ie_result, download=download)
|
||||||
|
additional_urls = ie_result.get('additional_urls')
|
||||||
|
if additional_urls:
|
||||||
|
# TODO: Improve MetadataFromFieldPP to allow setting a list
|
||||||
|
if isinstance(additional_urls, compat_str):
|
||||||
|
additional_urls = [additional_urls]
|
||||||
|
self.to_screen(
|
||||||
|
'[info] %s: %d additional URL(s) requested' % (ie_result['id'], len(additional_urls)))
|
||||||
|
self.write_debug('Additional URLs: "%s"' % '", "'.join(additional_urls))
|
||||||
|
ie_result['additional_entries'] = [
|
||||||
|
self.extract_info(
|
||||||
|
url, download, extra_info,
|
||||||
|
force_generic_extractor=self.params.get('force_generic_extractor'))
|
||||||
|
for url in additional_urls
|
||||||
|
]
|
||||||
|
return ie_result
|
||||||
elif result_type == 'url':
|
elif result_type == 'url':
|
||||||
# We have to add extra_info to the results because it may be
|
# We have to add extra_info to the results because it may be
|
||||||
# contained in a playlist
|
# contained in a playlist
|
||||||
|
|
Loading…
Reference in New Issue