@ -142,13 +142,13 @@ def parseOpts(overrideArguments=None):
action = ' store_true ' , dest = ' update_self ' ,
help = ' Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed) ' )
general . add_option (
' -i ' , ' --ignore-errors ' ,
' -i ' , ' --ignore-errors ' , ' --no-abort-on-error ' ,
action = ' store_true ' , dest = ' ignoreerrors ' , default = False ,
help = ' Continue on download errors, for example to skip unavailable videos in a playlist ' )
general . add_option (
' --abort-on-error ' ,
' --abort-on-error ' , ' --no-ignore-errors ' ,
action = ' store_false ' , dest = ' ignoreerrors ' ,
help = ' Abort downloading of further videos (in the playlist or the command line) if an error occurs' )
help = ' Abort downloading of further videos if an error occurs (default) ' )
general . add_option (
' --dump-user-agent ' ,
action = ' store_true ' , dest = ' dump_user_agent ' , default = False ,
@ -168,23 +168,31 @@ def parseOpts(overrideArguments=None):
general . add_option (
' --default-search ' ,
dest = ' default_search ' , metavar = ' PREFIX ' ,
help = ' Use this prefix for unqualified URLs. For example " gvsearch2: " downloads two videos from google videos for youtube-dl c " large apple " . Use the value " auto " to let youtube-dl c guess (" auto_warning " to emit a warning when guessing). " error " just throws an error. The default value " fixup_error " repairs broken URLs, but emits an error if this is not possible instead of searching. ' )
help = ' Use this prefix for unqualified URLs. For example " gvsearch2: " downloads two videos from google videos for youtube-dl " large apple " . Use the value " auto " to let youtube-dl guess (" auto_warning " to emit a warning when guessing). " error " just throws an error. The default value " fixup_error " repairs broken URLs, but emits an error if this is not possible instead of searching. ' )
general . add_option (
' --ignore-config ' ,
' --ignore-config ' , ' --no-config ' ,
action = ' store_true ' ,
help = ' Do not read configuration files. '
' When given in the global configuration file /etc/youtube-dlc.conf: '
' Do not read the user configuration in ~/.config/youtube-dlc/config '
' ( % APPDATA % /youtube-dlc/config.txt on Windows) ' )
help = (
' Do not read configuration files. '
' When given in the global configuration file /etc/youtube-dl.conf: '
' Do not read the user configuration in ~/.config/youtube-dl/config '
' ( % APPDATA % /youtube-dl/config.txt on Windows) ' ) )
general . add_option (
' --config-location ' ,
dest = ' config_location ' , metavar = ' PATH ' ,
help = ' Location of the configuration file; either the path to the config or its containing directory. ' )
general . add_option (
' --flat-playlist ' ,
action = ' store_const ' , dest = ' extract_flat ' , const = ' in_playlist ' ,
default = False ,
action = ' store_const ' , dest = ' extract_flat ' , const = ' in_playlist ' , default = False ,
help = ' Do not extract the videos of a playlist, only list them. ' )
general . add_option (
' --flat-videos ' ,
action = ' store_true ' , dest = ' extract_flat ' ,
help = ' Do not resolve the video urls ' )
general . add_option (
' --no-flat-playlist ' ,
action = ' store_false ' , dest = ' extract_flat ' ,
help = ' Extract the videos of a playlist ' )
general . add_option (
' --mark-watched ' ,
action = ' store_true ' , dest = ' mark_watched ' , default = False ,
@ -192,7 +200,7 @@ def parseOpts(overrideArguments=None):
general . add_option (
' --no-mark-watched ' ,
action = ' store_false ' , dest = ' mark_watched ' , default = False ,
help = ' Do not mark videos watched (YouTube only) ' )
help = ' Do not mark videos watched ' )
general . add_option (
' --no-color ' , ' --no-colors ' ,
action = ' store_true ' , dest = ' no_color ' ,
@ -203,10 +211,11 @@ def parseOpts(overrideArguments=None):
network . add_option (
' --proxy ' , dest = ' proxy ' ,
default = None , metavar = ' URL ' ,
help = ' Use the specified HTTP/HTTPS/SOCKS proxy. To enable '
' SOCKS proxy, specify a proper scheme. For example '
' socks5://127.0.0.1:1080/. Pass in an empty string (--proxy " " ) '
' for direct connection ' )
help = (
' Use the specified HTTP/HTTPS/SOCKS proxy. To enable '
' SOCKS proxy, specify a proper scheme. For example '
' socks5://127.0.0.1:1080/. Pass in an empty string (--proxy " " ) '
' for direct connection ' ) )
network . add_option (
' --socket-timeout ' ,
dest = ' socket_timeout ' , type = float , default = None , metavar = ' SECONDS ' ,
@ -231,8 +240,9 @@ def parseOpts(overrideArguments=None):
geo . add_option (
' --geo-verification-proxy ' ,
dest = ' geo_verification_proxy ' , default = None , metavar = ' URL ' ,
help = ' Use this proxy to verify the IP address for some geo-restricted sites. '
' The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading. ' )
help = (
' Use this proxy to verify the IP address for some geo-restricted sites. '
' The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading. ' ) )
geo . add_option (
' --cn-verification-proxy ' ,
dest = ' cn_verification_proxy ' , default = None , metavar = ' URL ' ,
@ -326,8 +336,11 @@ def parseOpts(overrideArguments=None):
' 100 times and disliked less than 50 times (or the dislike '
' functionality is not available at the given service), but who '
' also have a description, use --match-filter '
' " like_count > 100 & dislike_count <? 50 & description " . '
) )
' " like_count > 100 & dislike_count <? 50 & description " . ' ) )
selection . add_option (
' --no-match-filter ' ,
metavar = ' FILTER ' , dest = ' match_filter ' , action = ' store_const ' , const = None ,
help = ' Do not use generic video filter (default) ' )
selection . add_option (
' --no-playlist ' ,
action = ' store_true ' , dest = ' noplaylist ' , default = False ,
@ -348,10 +361,18 @@ def parseOpts(overrideArguments=None):
' --break-on-existing ' ,
action = ' store_true ' , dest = ' break_on_existing ' , default = False ,
help = " Stop the download process after attempting to download a file that ' s in the archive. " )
selection . add_option (
' --no-download-archive ' ,
dest = ' download_archive ' , action = " store_const " , const = None ,
help = ' Do not use archive file (default) ' )
selection . add_option (
' --include-ads ' ,
dest = ' include_ads ' , action = ' store_true ' ,
help = ' Download advertisements as well (experimental) ' )
selection . add_option (
' --no-include-ads ' ,
dest = ' include_ads ' , action = ' store_false ' ,
help = ' Do not download advertisements (default) ' )
authentication = optparse . OptionGroup ( parser , ' Authentication Options ' )
authentication . add_option (
@ -448,23 +469,23 @@ def parseOpts(overrideArguments=None):
action = ' store_true ' , dest = ' listformats_table ' , default = False ,
help = ' Present the output of -F in a more tabular form ' )
video_format . add_option (
' --list-formats-old ' ,
' --list-formats-old ' , ' --no-list-formats-as-table ' ,
action = ' store_false ' , dest = ' listformats_table ' ,
help = optparse . SUPPRESS_HELP )
help = ' Present the output of -F in the old form ' )
video_format . add_option (
' --youtube-include-dash-manifest ' ,
' --youtube-include-dash-manifest ' , ' --no-youtube-skip-dash-manifest ' ,
action = ' store_true ' , dest = ' youtube_include_dash_manifest ' , default = True ,
help = optparse . SUPPRESS_HELP )
help = ' Download the DASH manifests and related data on YouTube videos (default) ' )
video_format . add_option (
' --youtube-skip-dash-manifest ' ,
' --youtube-skip-dash-manifest ' , ' --no-youtube-include-dash-manifest ' ,
action = ' store_false ' , dest = ' youtube_include_dash_manifest ' ,
help = ' Do not download the DASH manifests and related data on YouTube videos ' )
video_format . add_option (
' --youtube-include-hls-manifest ' ,
' --youtube-include-hls-manifest ' , ' --no-youtube-skip-hls-manifest ' ,
action = ' store_true ' , dest = ' youtube_include_hls_manifest ' , default = True ,
help = optparse . SUPPRESS_HELP )
help = ' Download the HLS manifests and related data on YouTube videos (default) ' )
video_format . add_option (
' --youtube-skip-hls-manifest ' ,
' --youtube-skip-hls-manifest ' , ' --no-youtube-include-hls-manifest ' ,
action = ' store_false ' , dest = ' youtube_include_hls_manifest ' ,
help = ' Do not download the HLS manifests and related data on YouTube videos ' )
video_format . add_option (
@ -477,13 +498,21 @@ def parseOpts(overrideArguments=None):
subtitles = optparse . OptionGroup ( parser , ' Subtitle Options ' )
subtitles . add_option (
' --write-sub ' , ' --write-srt ' ,
' --write-sub s ' , ' --write-srt ' ,
action = ' store_true ' , dest = ' writesubtitles ' , default = False ,
help = ' Write subtitle file ' )
subtitles . add_option (
' --write-auto-sub ' , ' --write-automatic-sub ' ,
' --no-write-subs ' , ' --no-write-srt ' ,
action = ' store_false ' , dest = ' writesubtitles ' ,
help = ' Do not write subtitle file (default) ' )
subtitles . add_option (
' --write-auto-subs ' , ' --write-automatic-subs ' ,
action = ' store_true ' , dest = ' writeautomaticsub ' , default = False ,
help = ' Write automatically generated subtitle file (YouTube only) ' )
subtitles . add_option (
' --no-write-auto-subs ' , ' --no-write-automatic-subs ' ,
action = ' store_false ' , dest = ' writeautomaticsub ' , default = False ,
help = ' Do not write automatically generated subtitle file (default) ' )
subtitles . add_option (
' --all-subs ' ,
action = ' store_true ' , dest = ' allsubtitles ' , default = False ,
@ -516,30 +545,39 @@ def parseOpts(overrideArguments=None):
dest = ' fragment_retries ' , metavar = ' RETRIES ' , default = 10 ,
help = ' Number of retries for a fragment (default is %d efault), or " infinite " (DASH, hlsnative and ISM) ' )
downloader . add_option (
' --skip-unavailable-fragments ' ,
' --skip-unavailable-fragments ' , ' --no-abort-on-unavailable-fragment ' ,
action = ' store_true ' , dest = ' skip_unavailable_fragments ' , default = True ,
help = ' Skip unavailable fragments (DASH, hlsnative and ISM )' )
help = ' Skip unavailable fragments for DASH, hlsnative and ISM (default )' )
downloader . add_option (
' --abort-on-unavailable-fragment ' ,
' --abort-on-unavailable-fragment ' , ' --no-skip-unavailable-fragments ' ,
action = ' store_false ' , dest = ' skip_unavailable_fragments ' ,
help = ' Abort downloading when some fragment is not available ' )
downloader . add_option (
' --keep-fragments ' ,
action = ' store_true ' , dest = ' keep_fragments ' , default = False ,
help = ' Keep downloaded fragments on disk after downloading is finished; fragments are erased by default ' )
help = ' Keep downloaded fragments on disk after downloading is finished ' )
downloader . add_option (
' --no-keep-fragments ' ,
action = ' store_false ' , dest = ' keep_fragments ' ,
help = ' Delete downloaded fragments after downloading is finished (default) ' )
downloader . add_option (
' --buffer-size ' ,
dest = ' buffersize ' , metavar = ' SIZE ' , default = ' 1024 ' ,
help = ' Size of download buffer (e.g. 1024 or 16K) (default is %d efault) ' )
downloader . add_option (
' --resize-buffer ' ,
action = ' store_false ' , dest = ' noresizebuffer ' ,
help = ' The buffer size is automatically resized from an initial value of --buffer-size (default) ' )
downloader . add_option (
' --no-resize-buffer ' ,
action = ' store_true ' , dest = ' noresizebuffer ' , default = False ,
help = ' Do not automatically adjust the buffer size. By default, the buffer size is automatically resized from an initial value of SIZE. ' )
help = ' Do not automatically adjust the buffer size ' )
downloader . add_option (
' --http-chunk-size ' ,
dest = ' http_chunk_size ' , metavar = ' SIZE ' , default = None ,
help = ' Size of a chunk for chunk-based HTTP downloading (e.g. 10485760 or 10M) (default is disabled). '
' May be useful for bypassing bandwidth throttling imposed by a webserver (experimental) ' )
help = (
' Size of a chunk for chunk-based HTTP downloading (e.g. 10485760 or 10M) (default is disabled). '
' May be useful for bypassing bandwidth throttling imposed by a webserver (experimental) ' ) )
downloader . add_option (
' --test ' ,
action = ' store_true ' , dest = ' test ' , default = False ,
@ -548,6 +586,10 @@ def parseOpts(overrideArguments=None):
' --playlist-reverse ' ,
action = ' store_true ' ,
help = ' Download playlist videos in reverse order ' )
downloader . add_option (
' --no-playlist-reverse ' ,
action = ' store_false ' , dest = ' playlist_reverse ' ,
help = ' Download playlist videos in default order (default) ' )
downloader . add_option (
' --playlist-random ' ,
action = ' store_true ' ,
@ -567,13 +609,15 @@ def parseOpts(overrideArguments=None):
downloader . add_option (
' --hls-use-mpegts ' ,
dest = ' hls_use_mpegts ' , action = ' store_true ' ,
help = ' Use the mpegts container for HLS videos, allowing to play the '
' video while downloading (some players may not be able to play it) ' )
help = (
' Use the mpegts container for HLS videos, allowing to play the '
' video while downloading (some players may not be able to play it) ' ) )
downloader . add_option (
' --external-downloader ' ,
dest = ' external_downloader ' , metavar = ' COMMAND ' ,
help = ' Use the specified external downloader. '
' Currently supports %s ' % ' , ' . join ( list_external_downloaders ( ) ) )
help = (
' Use the specified external downloader. '
' Currently supports %s ' % ' , ' . join ( list_external_downloaders ( ) ) ) )
downloader . add_option (
' --external-downloader-args ' ,
dest = ' external_downloader_args ' , metavar = ' ARGS ' ,
@ -589,8 +633,8 @@ def parseOpts(overrideArguments=None):
action = ' store_true ' , dest = ' no_check_certificate ' , default = False ,
help = ' Suppress HTTPS certificate validation ' )
workarounds . add_option (
' --prefer-insecure ' ,
' --prefer-unsecure ' , action = ' store_true ' , dest = ' prefer_insecure ' ,
' --prefer-insecure ' , ' --prefer-unsecure ' ,
action = ' store_true ' , dest = ' prefer_insecure ' ,
help = ' Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube) ' )
workarounds . add_option (
' --user-agent ' ,
@ -644,7 +688,7 @@ def parseOpts(overrideArguments=None):
action = ' store_true ' , dest = ' simulate ' , default = False ,
help = ' Do not download the video and do not write anything to disk ' )
verbosity . add_option (
' --skip-download ' ,
' --skip-download ' , ' --no-download ' ,
action = ' store_true ' , dest = ' skip_download ' , default = False ,
help = ' Do not download the video ' )
verbosity . add_option (
@ -686,7 +730,9 @@ def parseOpts(overrideArguments=None):
verbosity . add_option (
' -J ' , ' --dump-single-json ' ,
action = ' store_true ' , dest = ' dump_single_json ' , default = False ,
help = ' Simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line. ' )
help = (
' Simulate, quiet but print JSON information for each command-line argument. '
' If the URL refers to a playlist, dump the whole playlist information in a single line. ' ) )
verbosity . add_option (
' --print-json ' ,
action = ' store_true ' , dest = ' print_json ' , default = False ,
@ -735,8 +781,8 @@ def parseOpts(overrideArguments=None):
help = ' Contact the youtube-dlc server for debugging ' )
verbosity . add_option (
' --no-call-home ' ,
dest = ' call_home ' , action = ' store_false ' , default = False ,
help = ' Do NOT contact the youtube-dlc server for debugging ' )
dest = ' call_home ' , action = ' store_false ' ,
help = ' Do not contact the youtube-dlc server for debugging (default) ' )
filesystem = optparse . OptionGroup ( parser , ' Filesystem Options ' )
filesystem . add_option (
@ -746,11 +792,11 @@ def parseOpts(overrideArguments=None):
" Lines starting with ' # ' , ' ; ' or ' ] ' are considered as comments and ignored. " )
filesystem . add_option (
' --id ' , default = False ,
action = ' store_true ' , dest = ' useid ' , help = ' Use only video ID in file name ' )
action = ' store_true ' , dest = ' useid ' , help = optparse . SUPPRESS_HELP )
filesystem . add_option (
' -o ' , ' --output ' ,
dest = ' outtmpl ' , metavar = ' TEMPLATE ' ,
help = ( ' Output filename template, see the " OUTPUT TEMPLATE " for all the info' ) )
help = ' Output filename template, see the " OUTPUT TEMPLATE " for details' )
filesystem . add_option (
' --autonumber-size ' ,
dest = ' autonumber_size ' , metavar = ' NUMBER ' , type = int ,
@ -763,6 +809,10 @@ def parseOpts(overrideArguments=None):
' --restrict-filenames ' ,
action = ' store_true ' , dest = ' restrictfilenames ' , default = False ,
help = ' Restrict filenames to only ASCII characters, and avoid " & " and spaces in filenames ' )
filesystem . add_option (
' --no-restrict-filenames ' ,
action = ' store_false ' , dest = ' restrictfilenames ' , default = False ,
help = ' Allow Unicode characters, " & " and spaces in filenames (default) ' )
filesystem . add_option (
' -A ' , ' --auto-number ' ,
action = ' store_true ' , dest = ' autonumber ' , default = False ,
@ -782,31 +832,51 @@ def parseOpts(overrideArguments=None):
filesystem . add_option (
' -c ' , ' --continue ' ,
action = ' store_true ' , dest = ' continue_dl ' , default = True ,
help = ' Force resume of partially downloaded files. By default, youtube-dlc will resume downloads if possible. ' )
help = ' Resume partially downloaded files (default) ' )
filesystem . add_option (
' --no-continue ' ,
action = ' store_false ' , dest = ' continue_dl ' ,
help = ' Do not resume partially downloaded files (restart from beginning) ' )
help = ' Restart download of partially downloaded files from beginning ' )
filesystem . add_option (
' --part ' ,
action = ' store_false ' , dest = ' nopart ' , default = False ,
help = ' Use .part files instead of writing directly into output file (default) ' )
filesystem . add_option (
' --no-part ' ,
action = ' store_true ' , dest = ' nopart ' , default = False ,
action = ' store_true ' , dest = ' nopart ' ,
help = ' Do not use .part files - write directly into output file ' )
filesystem . add_option (
' --mtime ' ,
action = ' store_true ' , dest = ' updatetime ' , default = True ,
help = ' Use the Last-modified header to set the file modification time (default) ' )
filesystem . add_option (
' --no-mtime ' ,
action = ' store_false ' , dest = ' updatetime ' , default = True ,
action = ' store_false ' , dest = ' updatetime ' ,
help = ' Do not use the Last-modified header to set the file modification time ' )
filesystem . add_option (
' --write-description ' ,
action = ' store_true ' , dest = ' writedescription ' , default = False ,
help = ' Write video description to a .description file ' )
filesystem . add_option (
' --no-write-description ' ,
action = ' store_false ' , dest = ' writedescription ' ,
help = ' Do not write video description (default) ' )
filesystem . add_option (
' --write-info-json ' ,
action = ' store_true ' , dest = ' writeinfojson ' , default = False ,
help = ' Write video metadata to a .info.json file ' )
filesystem . add_option (
' --no-write-info-json ' ,
action = ' store_false ' , dest = ' writeinfojson ' ,
help = ' Do not write video metadata (default) ' )
filesystem . add_option (
' --write-annotations ' ,
action = ' store_true ' , dest = ' writeannotations ' , default = False ,
help = ' Write video annotations to a .annotations.xml file ' )
filesystem . add_option (
' --no-write-annotations ' ,
action = ' store_false ' , dest = ' writeannotations ' ,
help = ' Do not write video annotations (default) ' )
filesystem . add_option (
' --load-info-json ' , ' --load-info ' ,
dest = ' load_info_filename ' , metavar = ' FILE ' ,
@ -815,11 +885,15 @@ def parseOpts(overrideArguments=None):
' --cookies ' ,
dest = ' cookiefile ' , metavar = ' FILE ' ,
help = ' File to read cookies from and dump cookie jar in ' )
filesystem . add_option (
' --no-cookies ' ,
action = ' store_const ' , const = None , dest = ' cookiefile ' , metavar = ' FILE ' ,
help = ' Do not read/dump cookies (default) ' )
filesystem . add_option (
' --cache-dir ' , dest = ' cachedir ' , default = None , metavar = ' DIR ' ,
help = ' Location in the filesystem where youtube-dlc can store some downloaded information permanently. By default $XDG_CACHE_HOME/youtube-dlc or ~/.cache/youtube-dlc . At the moment, only YouTube player files (for videos with obfuscated signatures) are cached, but that may change. ' )
help = ' Location in the filesystem where youtube-dl can store some downloaded information permanently. By default $XDG_CACHE_HOME/youtube-dl or ~/.cache/youtube-dl . At the moment, only YouTube player files (for videos with obfuscated signatures) are cached, but that may change.' )
filesystem . add_option (
' --no-cache-dir ' , action = ' store_ const' , const = False , dest = ' cachedir ' ,
' --no-cache-dir ' , action = ' store_ false' , dest = ' cachedir ' ,
help = ' Disable filesystem caching ' )
filesystem . add_option (
' --rm-cache-dir ' ,
@ -829,11 +903,15 @@ def parseOpts(overrideArguments=None):
' --trim-file-name ' , dest = ' trim_file_name ' , default = 0 , type = int ,
help = ' Limit the filename length (extension excluded) ' )
thumbnail = optparse . OptionGroup ( parser , ' Thumbnail i mages' )
thumbnail = optparse . OptionGroup ( parser , ' Thumbnail I mages' )
thumbnail . add_option (
' --write-thumbnail ' ,
action = ' store_true ' , dest = ' writethumbnail ' , default = False ,
help = ' Write thumbnail image to disk ' )
thumbnail . add_option (
' --no-write-thumbnail ' ,
action = ' store_false ' , dest = ' writethumbnail ' ,
help = ' Do not write thumbnail image to disk (default) ' )
thumbnail . add_option (
' --write-all-thumbnails ' ,
action = ' store_true ' , dest = ' write_all_thumbnails ' , default = False ,
@ -876,11 +954,13 @@ def parseOpts(overrideArguments=None):
postproc . add_option (
' --remux-video ' ,
metavar = ' FORMAT ' , dest = ' remuxvideo ' , default = None ,
help = ' Remux the video to another container format if necessary (currently supported: mp4|mkv, target container format must support video / audio encoding, remuxing may fail) ' )
help = (
' Remux the video into another container if necessary (currently supported: mp4|mkv). '
' If target container does not support the video/audio codec, remuxing will fail ' ) )
postproc . add_option (
' --recode-video ' ,
metavar = ' FORMAT ' , dest = ' recodevideo ' , default = None ,
help = ' Encode the video to another format if necessary (currently supported: mp4|flv|ogg|webm|mkv|avi)' )
help = ' Re-encode the video into another format if re-encoding is necessary (currently supported: mp4|flv|ogg|webm|mkv|avi)' )
postproc . add_option (
' --postprocessor-args ' ,
dest = ' postprocessor_args ' , metavar = ' ARGS ' ,
@ -888,33 +968,54 @@ def parseOpts(overrideArguments=None):
postproc . add_option (
' -k ' , ' --keep-video ' ,
action = ' store_true ' , dest = ' keepvideo ' , default = False ,
help = ' Keep the video file on disk after the post-processing; the video is erased by default ' )
help = ' Keep the intermediate video file on disk after post-processing ' )
postproc . add_option (
' --no-keep-video ' ,
action = ' store_false ' , dest = ' keepvideo ' ,
help = ' Delete the intermediate video file after post-processing (default) ' )
postproc . add_option (
' --post-overwrites ' ,
action = ' store_false ' , dest = ' nopostoverwrites ' ,
help = ' Overwrite post-processed files (default) ' )
postproc . add_option (
' --no-post-overwrites ' ,
action = ' store_true ' , dest = ' nopostoverwrites ' , default = False ,
help = ' Do not overwrite post-processed files; the post-processed files are overwritten by default ' )
help = ' Do not overwrite post-processed files ' )
postproc . add_option (
' --embed-subs ' ,
action = ' store_true ' , dest = ' embedsubtitles ' , default = False ,
help = ' Embed subtitles in the video (only for mp4, webm and mkv videos) ' )
postproc . add_option (
' --no-embed-subs ' ,
action = ' store_false ' , dest = ' embedsubtitles ' ,
help = ' Do not embed subtitles (default) ' )
postproc . add_option (
' --embed-thumbnail ' ,
action = ' store_true ' , dest = ' embedthumbnail ' , default = False ,
help = ' Embed thumbnail in the audio as cover art ' )
postproc . add_option (
' --no-embed-thumbnail ' ,
action = ' store_false ' , dest = ' embedthumbnail ' ,
help = ' Do not embed thumbnail (default) ' )
postproc . add_option (
' --add-metadata ' ,
action = ' store_true ' , dest = ' addmetadata ' , default = False ,
help = ' Write metadata to the video file ' )
postproc . add_option (
' --no-add-metadata ' ,
action = ' store_false ' , dest = ' addmetadata ' ,
help = ' Do not write metadata (default) ' )
postproc . add_option (
' --metadata-from-title ' ,
metavar = ' FORMAT ' , dest = ' metafromtitle ' ,
help = ' Parse additional metadata like song title / artist from the video title. '
' The format syntax is the same as --output. Regular expression with '
' named capture groups may also be used. '
' The parsed parameters replace existing values. '
' Example: --metadata-from-title " %(artist)s - %(title)s " matches a title like '
' " Coldplay - Paradise " . '
' Example (regex): --metadata-from-title " (?P<artist>.+?) - (?P<title>.+) " ' )
help = (
' Parse additional metadata like song title / artist from the video title. '
' The format syntax is the same as --output. Regular expression with '
' named capture groups may also be used. '
' The parsed parameters replace existing values. '
' Example: --metadata-from-title " %(artist)s - %(title)s " matches a title like '
' " Coldplay - Paradise " . '
' Example (regex): --metadata-from-title " (?P<artist>.+?) - (?P<title>.+) " ' ) )
postproc . add_option (
' --xattrs ' ,
action = ' store_true ' , dest = ' xattrs ' , default = False ,
@ -922,15 +1023,16 @@ def parseOpts(overrideArguments=None):
postproc . add_option (
' --fixup ' ,
metavar = ' POLICY ' , dest = ' fixup ' , default = ' detect_or_warn ' ,
help = ' Automatically correct known faults of the file. '
' One of never (do nothing), warn (only emit a warning), '
' detect_or_warn (the default; fix file if we can, warn otherwise) ' )
help = (
' Automatically correct known faults of the file. '
' One of never (do nothing), warn (only emit a warning), '
' detect_or_warn (the default; fix file if we can, warn otherwise) ' ) )
postproc . add_option (
' --prefer-avconv ' ,
' --prefer-avconv ' , ' --no-prefer-ffmpeg ' ,
action = ' store_false ' , dest = ' prefer_ffmpeg ' ,
help = ' Prefer avconv over ffmpeg for running the postprocessors ' )
postproc . add_option (
' --prefer-ffmpeg ' ,
' --prefer-ffmpeg ' , ' --no-prefer-avconv ' ,
action = ' store_true ' , dest = ' prefer_ffmpeg ' ,
help = ' Prefer ffmpeg over avconv for running the postprocessors (default) ' )
postproc . add_option (
@ -950,19 +1052,29 @@ def parseOpts(overrideArguments=None):
extractor . add_option (
' --sponskrub ' ,
action = ' store_true ' , dest = ' sponskrub ' , default = None ,
help = ' Use sponskrub to mark sponsored sections with the data available in SponsorBlock API (Youtube only) ' )
help = (
' Use sponskrub to mark sponsored sections with the data available in SponsorBlock API. '
' This is enabled by default if the sponskrub binary exists (Youtube only) ' ) )
extractor . add_option (
' --no-sponskrub ' ,
action = ' store_false ' , dest = ' sponskrub ' ,
help = optparse . SUPPRESS_HELP )
help = ' Do not use sponskrub ' )
extractor . add_option (
' --sponskrub-cut ' , default = False ,
action = ' store_true ' , dest = ' sponskrub_cut ' ,
help = ' Cut out the sponsor sections instead of simply marking them ' )
extractor . add_option (
' --no-sponskrub-cut ' ,
action = ' store_false ' , dest = ' sponskrub_cut ' ,
help = ' Simply mark the sponsor sections, not cut them out (default) ' )
extractor . add_option (
' --sponskrub-force ' , default = False ,
action = ' store_true ' , dest = ' sponskrub_force ' ,
help = ' Run sponskrub even if the video was already downloaded ' )
extractor . add_option (
' --no-sponskrub-force ' ,
action = ' store_true ' , dest = ' sponskrub_force ' ,
help = ' Do not cut out the sponsor sections if the video was already downloaded (default) ' )
extractor . add_option (
' --sponskrub-location ' , metavar = ' PATH ' ,
dest = ' sponskrub_path ' , default = ' ' ,
@ -973,11 +1085,11 @@ def parseOpts(overrideArguments=None):
extractor = optparse . OptionGroup ( parser , ' Extractor Options ' )
extractor . add_option (
' --allow-dynamic-mpd ' ,
' --allow-dynamic-mpd ' , ' --no-ignore-dynamic-mpd ' ,
action = ' store_true ' , dest = ' dynamic_mpd ' , default = True ,
help = optparse . SUPPRESS_HELP )
help = ' Process dynamic DASH manifests (default) ' )
extractor . add_option (
' --ignore-dynamic-mpd ' ,
' --ignore-dynamic-mpd ' , ' --no-allow-dynamic-mpd ' ,
action = ' store_false ' , dest = ' dynamic_mpd ' ,
help = ' Do not process dynamic DASH manifests ' )