shiningw / ncdownloader

An easy-to-use web interface for Aria2 and Youtube-dl (downloading bittorrents, videos from twitter, youtube and the likes)运行在nextcloud下的多功能下载工具(Aria2 and youtube-dl)
GNU Affero General Public License v3.0
93 stars 29 forks source link

[Feature request::YouTube] Be able to add an option not in the list #45

Closed emericv closed 2 years ago

emericv commented 2 years ago

There is no way to add a youtube-dl option if the option is not in the list (file lib/Tools/youtubedlOptions.php and js/appSettings.js)

Nice to have feature: a way to add an option or allow custom option (not in the static list)

Thanks, Emeric

shiningw commented 2 years ago

Hi, Can you give me the list of options which are valid but not included in the list? Restricting the options to a predefined list is to guard against invalid options.

emericv commented 2 years ago

In fact, in my case, I use yt-dlp which offer more possibilities than youtube-dl.

This is the yt-dlp help with all options:

Usage: yt-dlp [OPTIONS] URL [URL...]

Options:
  General Options:
    -h, --help                                          Print this help text and exit
    --version                                           Print program version and exit
    -U, --update                                        Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed)
    -i, --ignore-errors                                 Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing
                                                        fails
    --no-abort-on-error                                 Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default)
    --abort-on-error                                    Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors)
    --dump-user-agent                                   Display the current user-agent and exit
    --list-extractors                                   List all supported extractors and exit
    --extractor-descriptions                            Output descriptions of all supported extractors and exit
    --force-generic-extractor                           Force extraction to use the generic extractor
    --default-search PREFIX                             Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for the
                                                        search term "large apple". Use the value "auto" to let yt-dlp 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
    --ignore-config                                     Don't load any more configuration files except those given by --config-locations. For backward compatibility, if
                                                        this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-
                                                        config)
    --no-config-locations                               Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous
                                                        --config-locations defined in the current file
    --config-locations PATH                             Location of the main configuration file; either the path to the config or its containing directory. Can be used
                                                        multiple times and inside other configuration files
    --flat-playlist                                     Do not extract the videos of a playlist, only list them
    --no-flat-playlist                                  Extract the videos of a playlist
    --live-from-start                                   Download livestreams from the start. Currently only supported for YouTube (Experimental)
    --no-live-from-start                                Download livestreams from the current time (default)
    --wait-for-video MIN[-MAX]                          Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between
                                                        retries
    --no-wait-for-video                                 Do not wait for scheduled streams (default)
    --mark-watched                                      Mark videos watched (even with --simulate). Currently only supported for YouTube
    --no-mark-watched                                   Do not mark videos watched (default)
    --no-colors                                         Do not emit color codes in output
    --compat-options OPTS                               Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the
                                                        changes made in yt-dlp. See "Differences in default behavior" for details

  Network Options:
    --proxy URL                                         Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme. For example
                                                        socks5://user:pass@127.0.0.1:1080/. Pass in an empty string (--proxy "") for direct connection
    --socket-timeout SECONDS                            Time to wait before giving up, in seconds
    --source-address IP                                 Client-side IP address to bind to
    -4, --force-ipv4                                    Make all connections via IPv4
    -6, --force-ipv6                                    Make all connections via IPv6

  Geo-restriction:
    --geo-verification-proxy URL                        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-bypass                                        Bypass geographic restriction via faking X-Forwarded-For HTTP header (default)
    --no-geo-bypass                                     Do not bypass geographic restriction via faking X-Forwarded-For HTTP header
    --geo-bypass-country CODE                           Force bypass geographic restriction with explicitly provided two-letter ISO 3166-2 country code
    --geo-bypass-ip-block IP_BLOCK                      Force bypass geographic restriction with explicitly provided IP block in CIDR notation

  Video Selection:
    --playlist-start NUMBER                             Playlist video to start at (default is 1)
    --playlist-end NUMBER                               Playlist video to end at (default is last)
    --playlist-items ITEM_SPEC                          Playlist video items to download. Specify indices of the videos in the playlist separated by commas like: "--
                                                        playlist-items 1,2,5,8" if you want to download videos indexed 1, 2, 5, 8 in the playlist. You can specify range: "
                                                        --playlist-items 1-3,7,10-13", it will download the videos at index 1, 2, 3, 7, 10, 11, 12 and 13
    --min-filesize SIZE                                 Do not download any videos smaller than SIZE (e.g. 50k or 44.6m)
    --max-filesize SIZE                                 Do not download any videos larger than SIZE (e.g. 50k or 44.6m)
    --date DATE                                         Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format
                                                        "(now|today)[+-][0-9](day|week|month|year)(s)?"
    --datebefore DATE                                   Download only videos uploaded on or before this date. The date formats accepted is the same as --date
    --dateafter DATE                                    Download only videos uploaded on or after this date. The date formats accepted is the same as --date
    --match-filter FILTER                               Generic video filter. Any field (see "OUTPUT TEMPLATE") can be compared with a number or a string using the
                                                        operators defined in "Filtering formats". You can also simply specify a field to match if the field is present and
                                                        "!field" to check if the field is not present. In addition, Python style regular expression matching can be done
                                                        using "~=", and multiple filters can be checked with "&". Use a "\" to escape "&" or quotes if needed. Eg: --match-
                                                        filter "!is_live & like_count>?100 & description~='(?i)\bcats \& dogs\b'" matches only videos that are not live, has
                                                        a like count more than 100 (or the like field is not available), and also has a description that contains the phrase
                                                        "cats & dogs" (ignoring case)
    --no-match-filter                                   Do not use generic video filter (default)
    --no-playlist                                       Download only the video, if the URL refers to a video and a playlist
    --yes-playlist                                      Download the playlist, if the URL refers to a video and a playlist
    --age-limit YEARS                                   Download only videos suitable for the given age
    --download-archive FILE                             Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it
    --no-download-archive                               Do not use archive file (default)
    --max-downloads NUMBER                              Abort after downloading NUMBER files
    --break-on-existing                                 Stop the download process when encountering a file that is in the archive
    --break-on-reject                                   Stop the download process when encountering a file that has been filtered out
    --break-per-input                                   Make --break-on-existing and --break-on-reject act only on the current input URL
    --no-break-per-input                                --break-on-existing and --break-on-reject terminates the entire download queue
    --skip-playlist-after-errors N                      Number of allowed failures until the rest of the playlist is skipped

  Download Options:
    -N, --concurrent-fragments N                        Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1)
    -r, --limit-rate RATE                               Maximum download rate in bytes per second (e.g. 50K or 4.2M)
    --throttled-rate RATE                               Minimum download rate in bytes per second below which throttling is assumed and the video data is re-extracted (e.g.
                                                        100K)
    -R, --retries RETRIES                               Number of retries (default is 10), or "infinite"
    --file-access-retries RETRIES                       Number of times to retry on file access error (default is 3), or "infinite"
    --fragment-retries RETRIES                          Number of retries for a fragment (default is 10), or "infinite" (DASH, hlsnative and ISM)
    --skip-unavailable-fragments                        Skip unavailable fragments for DASH, hlsnative and ISM (default) (Alias: --no-abort-on-unavailable-fragment)
    --abort-on-unavailable-fragment                     Abort downloading if a fragment is unavailable (Alias: --no-skip-unavailable-fragments)
    --keep-fragments                                    Keep downloaded fragments on disk after downloading is finished
    --no-keep-fragments                                 Delete downloaded fragments after downloading is finished (default)
    --buffer-size SIZE                                  Size of download buffer (e.g. 1024 or 16K) (default is 1024)
    --resize-buffer                                     The buffer size is automatically resized from an initial value of --buffer-size (default)
    --no-resize-buffer                                  Do not automatically adjust the buffer size
    --http-chunk-size SIZE                              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)
    --playlist-reverse                                  Download playlist videos in reverse order
    --no-playlist-reverse                               Download playlist videos in default order (default)
    --playlist-random                                   Download playlist videos in random order
    --xattr-set-filesize                                Set file xattribute ytdl.filesize with expected file size
    --hls-use-mpegts                                    Use the mpegts container for HLS videos; allowing some players to play the video while downloading, and reducing the
                                                        chance of file corruption if download is interrupted. This is enabled by default for live streams
    --no-hls-use-mpegts                                 Do not use the mpegts container for HLS videos. This is default when not downloading live streams
    --downloader [PROTO:]NAME                           Name or path of the external downloader to use (optionally) prefixed by the protocols (http, ftp, m3u8, dash, rstp,
                                                        rtmp, mms) to use it for. Currently supports native, aria2c, avconv, axel, curl, ffmpeg, httpie, wget (Recommended:
                                                        aria2c). You can use this option multiple times to set different downloaders for different protocols. For example,
                                                        --downloader aria2c --downloader "dash,m3u8:native" will use aria2c for http/ftp downloads, and the native
                                                        downloader for dash/m3u8 downloads (Alias: --external-downloader)
    --downloader-args NAME:ARGS                         Give these arguments to the external downloader. Specify the downloader name and the arguments separated by a colon
                                                        ":". For ffmpeg, arguments can be passed to different positions using the same syntax as --postprocessor-args. You
                                                        can use this option multiple times to give different arguments to different downloaders (Alias: --external-
                                                        downloader-args)

  Filesystem Options:
    -a, --batch-file FILE                               File containing URLs to download ("-" for stdin), one URL per line. Lines starting with "#", ";" or "]" are
                                                        considered as comments and ignored
    --no-batch-file                                     Do not read URLs from batch file (default)
    -P, --paths [TYPES:]PATH                            The paths where the files should be downloaded. Specify the type of file and the path separated by a colon ":". All
                                                        the same TYPES as --output are supported. Additionally, you can also provide "home" (default) and "temp" paths. All
                                                        intermediary files are first downloaded to the temp path and then the final files are moved over to the home path
                                                        after download is finished. This option is ignored if --output is an absolute path
    -o, --output [TYPES:]TEMPLATE                       Output filename template; see "OUTPUT TEMPLATE" for details
    --output-na-placeholder TEXT                        Placeholder value for unavailable meta fields in output filename template (default: "NA")
    --restrict-filenames                                Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames
    --no-restrict-filenames                             Allow Unicode characters, "&" and spaces in filenames (default)
    --windows-filenames                                 Force filenames to be Windows-compatible
    --no-windows-filenames                              Make filenames Windows-compatible only if using Windows (default)
    --trim-filenames LENGTH                             Limit the filename length (excluding extension) to the specified number of characters
    -w, --no-overwrites                                 Do not overwrite any files
    --force-overwrites                                  Overwrite all video and metadata files. This option includes --no-continue
    --no-force-overwrites                               Do not overwrite the video, but overwrite related files (default)
    -c, --continue                                      Resume partially downloaded files/fragments (default)
    --no-continue                                       Do not resume partially downloaded fragments. If the file is not fragmented, restart download of the entire file
    --part                                              Use .part files instead of writing directly into output file (default)
    --no-part                                           Do not use .part files - write directly into output file
    --mtime                                             Use the Last-modified header to set the file modification time (default)
    --no-mtime                                          Do not use the Last-modified header to set the file modification time
    --write-description                                 Write video description to a .description file
    --no-write-description                              Do not write video description (default)
    --write-info-json                                   Write video metadata to a .info.json file (this may contain personal information)
    --no-write-info-json                                Do not write video metadata (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.
    --clean-info-json                                   Remove some private fields such as filenames from the infojson. Note that it could still contain some personal
                                                        information (default)
    --no-clean-info-json                                Write all fields to the infojson
    --write-comments                                    Retrieve video comments to be placed in the infojson. The comments are fetched even without this option if the
                                                        extraction is known to be quick (Alias: --get-comments)
    --no-write-comments                                 Do not retrieve video comments unless the extraction is known to be quick (Alias: --no-get-comments)
    --load-info-json FILE                               JSON file containing the video information (created with the "--write-info-json" option)
    --cookies FILE                                      Netscape formatted file to read cookies from and dump cookie jar in
    --no-cookies                                        Do not read/dump cookies from/to file (default)
    --cookies-from-browser BROWSER[+KEYRING][:PROFILE]  The name of the browser and (optionally) the name/path of the profile to load cookies from, separated by a ":".
                                                        Currently supported browsers are: brave, chrome, chromium, edge, firefox, opera, safari, vivaldi. By default, the
                                                        most recently accessed profile is used. The keyring used for decrypting Chromium cookies on Linux can be
                                                        (optionally) specified after the browser name separated by a "+". Currently supported keyrings are: basictext,
                                                        gnomekeyring, kwallet
    --no-cookies-from-browser                           Do not load cookies from browser (default)
    --cache-dir DIR                                     Location in the filesystem where youtube-dl can store some downloaded information (such as client ids and
                                                        signatures) permanently. By default $XDG_CACHE_HOME/yt-dlp or ~/.cache/yt-dlp
    --no-cache-dir                                      Disable filesystem caching
    --rm-cache-dir                                      Delete all filesystem cache files

  Thumbnail Options:
    --write-thumbnail                                   Write thumbnail image to disk
    --no-write-thumbnail                                Do not write thumbnail image to disk (default)
    --write-all-thumbnails                              Write all thumbnail image formats to disk
    --list-thumbnails                                   List available thumbnails of each video. Simulate unless --no-simulate is used

  Internet Shortcut Options:
    --write-link                                        Write an internet shortcut file, depending on the current platform (.url, .webloc or .desktop). The URL may be
                                                        cached by the OS
    --write-url-link                                    Write a .url Windows internet shortcut. The OS caches the URL based on the file path
    --write-webloc-link                                 Write a .webloc macOS internet shortcut
    --write-desktop-link                                Write a .desktop Linux internet shortcut

  Verbosity and Simulation Options:
    -q, --quiet                                         Activate quiet mode. If used with --verbose, print the log to stderr
    --no-warnings                                       Ignore warnings
    -s, --simulate                                      Do not download the video and do not write anything to disk
    --no-simulate                                       Download the video even if printing/listing options are used
    --ignore-no-formats-error                           Ignore "No video formats" error. Useful for extracting metadata even if the videos are not actually available for
                                                        download (experimental)
    --no-ignore-no-formats-error                        Throw error when no downloadable video formats are found (default)
    --skip-download                                     Do not download the video but write all related files (Alias: --no-download)
    -O, --print [WHEN:]TEMPLATE                         Field name or output template to print to screen, optionally prefixed with when to print it, separated by a ":".
                                                        Supported values of "WHEN" are the same as that of --use-postprocessor, and "video" (default). Implies --quiet and
                                                        --simulate (unless --no-simulate is used). This option can be used multiple times
    --print-to-file [WHEN:]TEMPLATE FILE                Append given template to the file. The values of WHEN and TEMPLATE are same as that of --print. FILE uses the same
                                                        syntax as the output template. This option can be used multiple times
    -j, --dump-json                                     Quiet, but print JSON information for each video. Simulate unless --no-simulate is used. See "OUTPUT TEMPLATE" for a
                                                        description of available keys
    -J, --dump-single-json                              Quiet, but print JSON information for each url or infojson passed. Simulate unless --no-simulate is used. If the URL
                                                        refers to a playlist, the whole playlist information is dumped in a single line
    --force-write-archive                               Force download archive entries to be written as far as no errors occur, even if -s or another simulation option is
                                                        used (Alias: --force-download-archive)
    --newline                                           Output progress bar as new lines
    --no-progress                                       Do not print progress bar
    --progress                                          Show progress bar, even if in quiet mode
    --console-title                                     Display progress in console titlebar
    --progress-template [TYPES:]TEMPLATE                Template for progress outputs, optionally prefixed with one of "download:" (default), "download-title:" (the console
                                                        title), "postprocess:",  or "postprocess-title:". The video's fields are accessible under the "info" key and the
                                                        progress attributes are accessible under "progress" key. E.g.: --console-title --progress-template "download-
                                                        title:%(info.id)s-%(progress.eta)s"
    -v, --verbose                                       Print various debugging information
    --dump-pages                                        Print downloaded pages encoded using base64 to debug problems (very verbose)
    --write-pages                                       Write downloaded intermediary pages to files in the current directory to debug problems
    --print-traffic                                     Display sent and read HTTP traffic

  Workarounds:
    --encoding ENCODING                                 Force the specified encoding (experimental)
    --legacy-server-connect                             Explicitly allow HTTPS connection to servers that do not support RFC 5746 secure renegotiation
    --no-check-certificates                             Suppress HTTPS certificate validation
    --prefer-insecure                                   Use an unencrypted connection to retrieve information about the video (Currently supported only for YouTube)
    --add-header FIELD:VALUE                            Specify a custom HTTP header and its value, separated by a colon ":". You can use this option multiple times
    --bidi-workaround                                   Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH
    --sleep-requests SECONDS                            Number of seconds to sleep between requests during data extraction
    --sleep-interval SECONDS                            Number of seconds to sleep before each download. This is the minimum time to sleep when used along with --max-sleep-
                                                        interval (Alias: --min-sleep-interval)
    --max-sleep-interval SECONDS                        Maximum number of seconds to sleep. Can only be used along with --min-sleep-interval
    --sleep-subtitles SECONDS                           Number of seconds to sleep before each subtitle download

  Video Format Options:
    -f, --format FORMAT                                 Video format code, see "FORMAT SELECTION" for more details
    -S, --format-sort SORTORDER                         Sort the formats by the fields given, see "Sorting Formats" for more details
    --format-sort-force                                 Force user specified sort order to have precedence over all fields, see "Sorting Formats" for more details
    --no-format-sort-force                              Some fields have precedence over the user specified sort order (default), see "Sorting Formats" for more details
    --video-multistreams                                Allow multiple video streams to be merged into a single file
    --no-video-multistreams                             Only one video stream is downloaded for each output file (default)
    --audio-multistreams                                Allow multiple audio streams to be merged into a single file
    --no-audio-multistreams                             Only one audio stream is downloaded for each output file (default)
    --prefer-free-formats                               Prefer video formats with free containers over non-free ones of same quality. Use with "-S ext" to strictly prefer
                                                        free containers irrespective of quality
    --no-prefer-free-formats                            Don't give any special preference to free containers (default)
    --check-formats                                     Check that the selected formats are actually downloadable
    --check-all-formats                                 Check all formats for whether they are actually downloadable
    --no-check-formats                                  Do not check that the formats are actually downloadable
    -F, --list-formats                                  List available formats of each video. Simulate unless --no-simulate is used
    --merge-output-format FORMAT                        If a merge is required (e.g. bestvideo+bestaudio), output to given container format. One of mkv, mp4, ogg, webm,
                                                        flv. Ignored if no merge is required

  Subtitle Options:
    --write-subs                                        Write subtitle file
    --no-write-subs                                     Do not write subtitle file (default)
    --write-auto-subs                                   Write automatically generated subtitle file (Alias: --write-automatic-subs)
    --no-write-auto-subs                                Do not write auto-generated subtitles (default) (Alias: --no-write-automatic-subs)
    --list-subs                                         List available subtitles of each video. Simulate unless --no-simulate is used
    --sub-format FORMAT                                 Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"
    --sub-langs LANGS                                   Languages of the subtitles to download (can be regex) or "all" separated by commas. (Eg: --sub-langs "en.*,ja") You
                                                        can prefix the language code with a "-" to exempt it from the requested languages. (Eg: --sub-langs all,-live_chat)
                                                        Use --list-subs for a list of available language tags

  Authentication Options:
    -u, --username USERNAME                             Login with this account ID
    -p, --password PASSWORD                             Account password. If this option is left out, yt-dlp will ask interactively
    -2, --twofactor TWOFACTOR                           Two-factor authentication code
    -n, --netrc                                         Use .netrc authentication data
    --netrc-location PATH                               Location of .netrc authentication data; either the path or its containing directory. Defaults to ~/.netrc
    --video-password PASSWORD                           Video password (vimeo, youku)
    --ap-mso MSO                                        Adobe Pass multiple-system operator (TV provider) identifier, use --ap-list-mso for a list of available MSOs
    --ap-username USERNAME                              Multiple-system operator account login
    --ap-password PASSWORD                              Multiple-system operator account password. If this option is left out, yt-dlp will ask interactively
    --ap-list-mso                                       List all supported multiple-system operators

  Post-Processing Options:
    -x, --extract-audio                                 Convert video files to audio-only files (requires ffmpeg and ffprobe)
    --audio-format FORMAT                               Specify audio format to convert the audio to when -x is used. Currently supported formats are: best (default) or one
                                                        of aac|flac|mp3|m4a|opus|vorbis|wav|alac
    --audio-quality QUALITY                             Specify ffmpeg audio quality, insert a value between 0 (best) and 10 (worst) for VBR or a specific bitrate like 128K
                                                        (default 5)
    --remux-video FORMAT                                Remux the video into another container if necessary (currently supported:
                                                        mp4|mkv|flv|webm|mov|avi|mp3|mka|m4a|ogg|opus). If target container does not support the video/audio codec, remuxing
                                                        will fail. You can specify multiple rules; Eg. "aac>m4a/mov>mp4/mkv" will remux aac to m4a, mov to mp4 and anything
                                                        else to mkv.
    --recode-video FORMAT                               Re-encode the video into another format if re-encoding is necessary. The syntax and supported formats are the same
                                                        as --remux-video
    --postprocessor-args NAME:ARGS                      Give these arguments to the postprocessors. Specify the postprocessor/executable name and the arguments separated by
                                                        a colon ":" to give the argument to the specified postprocessor/executable. Supported PP are: Merger,
                                                        ModifyChapters, SplitChapters, ExtractAudio, VideoRemuxer, VideoConvertor, Metadata, EmbedSubtitle, EmbedThumbnail,
                                                        SubtitlesConvertor, ThumbnailsConvertor, FixupStretched, FixupM4a, FixupM3u8, FixupTimestamp and FixupDuration. The
                                                        supported executables are: AtomicParsley, FFmpeg and FFprobe. You can also specify "PP+EXE:ARGS" to give the
                                                        arguments to the specified executable only when being used by the specified postprocessor. Additionally, for
                                                        ffmpeg/ffprobe, "_i"/"_o" can be appended to the prefix optionally followed by a number to pass the argument before
                                                        the specified input/output file. Eg: --ppa "Merger+ffmpeg_i1:-v quiet". You can use this option multiple times to
                                                        give different arguments to different postprocessors. (Alias: --ppa)
    -k, --keep-video                                    Keep the intermediate video file on disk after post-processing
    --no-keep-video                                     Delete the intermediate video file after post-processing (default)
    --post-overwrites                                   Overwrite post-processed files (default)
    --no-post-overwrites                                Do not overwrite post-processed files
    --embed-subs                                        Embed subtitles in the video (only for mp4, webm and mkv videos)
    --no-embed-subs                                     Do not embed subtitles (default)
    --embed-thumbnail                                   Embed thumbnail in the video as cover art
    --no-embed-thumbnail                                Do not embed thumbnail (default)
    --embed-metadata                                    Embed metadata to the video file. Also embeds chapters/infojson if present unless --no-embed-chapters/--no-embed-
                                                        info-json are used (Alias: --add-metadata)
    --no-embed-metadata                                 Do not add metadata to file (default) (Alias: --no-add-metadata)
    --embed-chapters                                    Add chapter markers to the video file (Alias: --add-chapters)
    --no-embed-chapters                                 Do not add chapter markers (default) (Alias: --no-add-chapters)
    --embed-info-json                                   Embed the infojson as an attachment to mkv/mka video files
    --no-embed-info-json                                Do not embed the infojson as an attachment to the video file
    --parse-metadata FROM:TO                            Parse additional metadata like title/artist from other fields; see "MODIFYING METADATA" for details
    --replace-in-metadata FIELDS REGEX REPLACE          Replace text in a metadata field using the given regex. This option can be used multiple times
    --xattrs                                            Write metadata to the video file's xattrs (using dublin core and xdg standards)
    --concat-playlist POLICY                            Concatenate videos in a playlist. One of "never", "always", or "multi_video" (default; only when the videos form a
                                                        single show). All the video files must have same codecs and number of streams to be concatable. The "pl_video:"
                                                        prefix can be used with "--paths" and "--output" to set the output filename for the split files. See "OUTPUT
                                                        TEMPLATE" for details
    --fixup POLICY                                      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), force (try fixing even if file already exists)
    --ffmpeg-location PATH                              Location of the ffmpeg binary; either the path to the binary or its containing directory
    --exec [WHEN:]CMD                                   Execute a command, optionally prefixed with when to execute it (after_move if unspecified), separated by a ":".
                                                        Supported values of "WHEN" are the same as that of --use-postprocessor. Same syntax as the output template can be
                                                        used to pass any field as arguments to the command. After download, an additional field "filepath" that contains the
                                                        final path of the downloaded file is also available, and if no fields are passed, %(filepath)q is appended to the
                                                        end of the command. This option can be used multiple times
    --no-exec                                           Remove any previously defined --exec
    --convert-subs FORMAT                               Convert the subtitles to another format (currently supported: srt|vtt|ass|lrc) (Alias: --convert-subtitles)
    --convert-thumbnails FORMAT                         Convert the thumbnails to another format (currently supported: jpg|png|webp)
    --split-chapters                                    Split video into multiple files based on internal chapters. The "chapter:" prefix can be used with "--paths" and "--
                                                        output" to set the output filename for the split files. See "OUTPUT TEMPLATE" for details
    --no-split-chapters                                 Do not split video based on chapters (default)
    --remove-chapters REGEX                             Remove chapters whose title matches the given regular expression. Time ranges prefixed by a "*" can also be used in
                                                        place of chapters to remove the specified range. Eg: --remove-chapters "*10:15-15:00" --remove-chapters "intro".
                                                        This option can be used multiple times
    --no-remove-chapters                                Do not remove any chapters from the file (default)
    --force-keyframes-at-cuts                           Force keyframes around the chapters before removing/splitting them. Requires a re-encode and thus is very slow, but
                                                        the resulting video may have fewer artifacts around the cuts
    --no-force-keyframes-at-cuts                        Do not force keyframes around the chapters when cutting/splitting (default)
    --use-postprocessor NAME[:ARGS]                     The (case sensitive) name of plugin postprocessors to be enabled, and (optionally) arguments to be passed to it,
                                                        separated by a colon ":". ARGS are a semicolon ";" delimited list of NAME=VALUE. The "when" argument determines when
                                                        the postprocessor is invoked. It can be one of "pre_process" (after video extraction), "after_filter" (after video
                                                        passes filter), "before_dl" (before each video download), "post_process" (after each video download; default),
                                                        "after_move" (after moving video file to it's final locations), "after_video" (after downloading and processing all
                                                        formats of a video), or "playlist" (at end of playlist). This option can be used multiple times to add different
                                                        postprocessors

  SponsorBlock Options:
    Make chapter entries for, or remove various segments (sponsor, introductions, etc.) from downloaded YouTube videos using the SponsorBlock API
    (https://sponsor.ajay.app)

    --sponsorblock-mark CATS                            SponsorBlock categories to create chapters for, separated by commas. Available categories are all, default(=all),
                                                        sponsor, intro, outro, selfpromo, preview, filler, interaction, music_offtopic, poi_highlight. You can prefix the
                                                        category with a "-" to exempt it. See [1] for description of the categories. Eg: --sponsorblock-mark all,-preview
                                                        [1] https://wiki.sponsor.ajay.app/w/Segment_Categories
    --sponsorblock-remove CATS                          SponsorBlock categories to be removed from the video file, separated by commas. If a category is present in both
                                                        mark and remove, remove takes precedence. The syntax and available categories are the same as for --sponsorblock-
                                                        mark except that "default" refers to "all,-filler" and poi_highlight is not available
    --sponsorblock-chapter-title TEMPLATE               The title template for SponsorBlock chapters created by --sponsorblock-mark. The same syntax as the output template
                                                        is used, but the only available fields are start_time, end_time, category, categories, name, category_names.
                                                        Defaults to "[SponsorBlock]: %(category_names)l"
    --no-sponsorblock                                   Disable both --sponsorblock-mark and --sponsorblock-remove
    --sponsorblock-api URL                              SponsorBlock API location, defaults to https://sponsor.ajay.app

  Extractor Options:
    --extractor-retries RETRIES                         Number of retries for known extractor errors (default is 3), or "infinite"
    --allow-dynamic-mpd                                 Process dynamic DASH manifests (default) (Alias: --no-ignore-dynamic-mpd)
    --ignore-dynamic-mpd                                Do not process dynamic DASH manifests (Alias: --no-allow-dynamic-mpd)
    --hls-split-discontinuity                           Split HLS playlists to different formats at discontinuities such as ad breaks
    --no-hls-split-discontinuity                        Do not split HLS playlists to different formats at discontinuities such as ad breaks (default)
    --extractor-args KEY:ARGS                           Pass these arguments to the extractor. See "EXTRACTOR ARGUMENTS" for details. You can use this option multiple times
                                                        to give arguments for different extractors