mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-21 20:46:36 -05:00
New option --no-write-playlist-metafiles to NOT write playlist metadata files
This commit is contained in:
parent
7c245ce877
commit
cac96421d9
3 changed files with 64 additions and 44 deletions
|
@ -378,6 +378,11 @@ ## Filesystem Options:
|
||||||
--write-annotations Write video annotations to a
|
--write-annotations Write video annotations to a
|
||||||
.annotations.xml file
|
.annotations.xml file
|
||||||
--no-write-annotations Do not write video annotations (default)
|
--no-write-annotations Do not write video annotations (default)
|
||||||
|
--write-playlist-metafiles Write playlist metadata in addition to the
|
||||||
|
video metadata when using --write-info-json,
|
||||||
|
--write-description etc. (default)
|
||||||
|
--no-write-playlist-metafiles Do not write playlist metadata when using
|
||||||
|
--write-info-json, --write-description etc.
|
||||||
--get-comments Retrieve video comments to be placed in the
|
--get-comments Retrieve video comments to be placed in the
|
||||||
.info.json file
|
.info.json file
|
||||||
--load-info-json FILE JSON file containing the video information
|
--load-info-json FILE JSON file containing the video information
|
||||||
|
|
|
@ -206,6 +206,7 @@ class YoutubeDL(object):
|
||||||
unless writeinfojson is also given
|
unless writeinfojson is also given
|
||||||
writeannotations: Write the video annotations to a .annotations.xml file
|
writeannotations: Write the video annotations to a .annotations.xml file
|
||||||
writethumbnail: Write the thumbnail image to a file
|
writethumbnail: Write the thumbnail image to a file
|
||||||
|
allow_playlist_files: Also write playlists' description, infojson etc in a seperate file
|
||||||
write_all_thumbnails: Write all thumbnail formats to files
|
write_all_thumbnails: Write all thumbnail formats to files
|
||||||
writelink: Write an internet shortcut file, depending on the
|
writelink: Write an internet shortcut file, depending on the
|
||||||
current platform (.url/.webloc/.desktop)
|
current platform (.url/.webloc/.desktop)
|
||||||
|
@ -1108,54 +1109,56 @@ def __process_playlist(self, ie_result, download):
|
||||||
# We process each entry in the playlist
|
# We process each entry in the playlist
|
||||||
playlist = ie_result.get('title') or ie_result.get('id')
|
playlist = ie_result.get('title') or ie_result.get('id')
|
||||||
self.to_screen('[download] Downloading playlist: %s' % playlist)
|
self.to_screen('[download] Downloading playlist: %s' % playlist)
|
||||||
ie_copy = {
|
|
||||||
'playlist': playlist,
|
|
||||||
'playlist_id': ie_result.get('id'),
|
|
||||||
'playlist_title': ie_result.get('title'),
|
|
||||||
'playlist_uploader': ie_result.get('uploader'),
|
|
||||||
'playlist_uploader_id': ie_result.get('uploader_id'),
|
|
||||||
'playlist_index': 0
|
|
||||||
}
|
|
||||||
ie_copy.update(dict(ie_result))
|
|
||||||
|
|
||||||
def ensure_dir_exists(path):
|
if self.params.get('allow_playlist_files', True):
|
||||||
return make_dir(path, self.report_error)
|
ie_copy = {
|
||||||
|
'playlist': playlist,
|
||||||
|
'playlist_id': ie_result.get('id'),
|
||||||
|
'playlist_title': ie_result.get('title'),
|
||||||
|
'playlist_uploader': ie_result.get('uploader'),
|
||||||
|
'playlist_uploader_id': ie_result.get('uploader_id'),
|
||||||
|
'playlist_index': 0
|
||||||
|
}
|
||||||
|
ie_copy.update(dict(ie_result))
|
||||||
|
|
||||||
if self.params.get('writeinfojson', False):
|
def ensure_dir_exists(path):
|
||||||
infofn = replace_extension(
|
return make_dir(path, self.report_error)
|
||||||
self.prepare_filepath(self.prepare_filename(ie_copy), 'infojson'),
|
|
||||||
'info.json', ie_result.get('ext'))
|
|
||||||
if not ensure_dir_exists(encodeFilename(infofn)):
|
|
||||||
return
|
|
||||||
if self.params.get('overwrites', True) and os.path.exists(encodeFilename(infofn)):
|
|
||||||
self.to_screen('[info] Playlist metadata is already present')
|
|
||||||
else:
|
|
||||||
self.to_screen('[info] Writing playlist metadata as JSON to: ' + infofn)
|
|
||||||
playlist_info = dict(ie_result)
|
|
||||||
playlist_info.pop('entries')
|
|
||||||
try:
|
|
||||||
write_json_file(self.filter_requested_info(playlist_info), infofn)
|
|
||||||
except (OSError, IOError):
|
|
||||||
self.report_error('Cannot write playlist metadata to JSON file ' + infofn)
|
|
||||||
|
|
||||||
if self.params.get('writedescription', False):
|
if self.params.get('writeinfojson', False):
|
||||||
descfn = replace_extension(
|
infofn = replace_extension(
|
||||||
self.prepare_filepath(self.prepare_filename(ie_copy), 'description'),
|
self.prepare_filepath(self.prepare_filename(ie_copy), 'infojson'),
|
||||||
'description', ie_result.get('ext'))
|
'info.json', ie_result.get('ext'))
|
||||||
if not ensure_dir_exists(encodeFilename(descfn)):
|
if not ensure_dir_exists(encodeFilename(infofn)):
|
||||||
return
|
|
||||||
if not self.params.get('overwrites', True) and os.path.exists(encodeFilename(descfn)):
|
|
||||||
self.to_screen('[info] Playlist description is already present')
|
|
||||||
elif ie_result.get('description') is None:
|
|
||||||
self.report_warning('There\'s no playlist description to write.')
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
self.to_screen('[info] Writing playlist description to: ' + descfn)
|
|
||||||
with io.open(encodeFilename(descfn), 'w', encoding='utf-8') as descfile:
|
|
||||||
descfile.write(ie_result['description'])
|
|
||||||
except (OSError, IOError):
|
|
||||||
self.report_error('Cannot write playlist description file ' + descfn)
|
|
||||||
return
|
return
|
||||||
|
if self.params.get('overwrites', True) and os.path.exists(encodeFilename(infofn)):
|
||||||
|
self.to_screen('[info] Playlist metadata is already present')
|
||||||
|
else:
|
||||||
|
self.to_screen('[info] Writing playlist metadata as JSON to: ' + infofn)
|
||||||
|
playlist_info = dict(ie_result)
|
||||||
|
playlist_info.pop('entries')
|
||||||
|
try:
|
||||||
|
write_json_file(self.filter_requested_info(playlist_info), infofn)
|
||||||
|
except (OSError, IOError):
|
||||||
|
self.report_error('Cannot write playlist metadata to JSON file ' + infofn)
|
||||||
|
|
||||||
|
if self.params.get('writedescription', False):
|
||||||
|
descfn = replace_extension(
|
||||||
|
self.prepare_filepath(self.prepare_filename(ie_copy), 'description'),
|
||||||
|
'description', ie_result.get('ext'))
|
||||||
|
if not ensure_dir_exists(encodeFilename(descfn)):
|
||||||
|
return
|
||||||
|
if not self.params.get('overwrites', True) and os.path.exists(encodeFilename(descfn)):
|
||||||
|
self.to_screen('[info] Playlist description is already present')
|
||||||
|
elif ie_result.get('description') is None:
|
||||||
|
self.report_warning('There\'s no playlist description to write.')
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
self.to_screen('[info] Writing playlist description to: ' + descfn)
|
||||||
|
with io.open(encodeFilename(descfn), 'w', encoding='utf-8') as descfile:
|
||||||
|
descfile.write(ie_result['description'])
|
||||||
|
except (OSError, IOError):
|
||||||
|
self.report_error('Cannot write playlist description file ' + descfn)
|
||||||
|
return
|
||||||
|
|
||||||
playlist_results = []
|
playlist_results = []
|
||||||
|
|
||||||
|
|
|
@ -937,6 +937,18 @@ def _dict_from_multiple_values_options_callback(
|
||||||
'--no-write-annotations',
|
'--no-write-annotations',
|
||||||
action='store_false', dest='writeannotations',
|
action='store_false', dest='writeannotations',
|
||||||
help='Do not write video annotations (default)')
|
help='Do not write video annotations (default)')
|
||||||
|
filesystem.add_option(
|
||||||
|
'--write-playlist-metafiles',
|
||||||
|
action='store_true', dest='allow_playlist_files', default=True,
|
||||||
|
help=(
|
||||||
|
'Write playlist metadata in addition to the video metadata '
|
||||||
|
'when using --write-info-json, --write-description etc. (default)'))
|
||||||
|
filesystem.add_option(
|
||||||
|
'--no-write-playlist-metafiles',
|
||||||
|
action='store_false', dest='allow_playlist_files',
|
||||||
|
help=(
|
||||||
|
'Do not write playlist metadata when using '
|
||||||
|
'--write-info-json, --write-description etc.'))
|
||||||
filesystem.add_option(
|
filesystem.add_option(
|
||||||
'--get-comments',
|
'--get-comments',
|
||||||
action='store_true', dest='getcomments', default=False,
|
action='store_true', dest='getcomments', default=False,
|
||||||
|
|
Loading…
Reference in a new issue