- label:I've verified that I'm running yt-dlp version **2022.03.08.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **2022.03.08.1** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've verified that I'm running yt-dlp version **2022.03.08.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **2022.03.08.1** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've verified that I'm running yt-dlp version **2022.03.08.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **2022.03.08.1** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I'm reporting a bug unrelated to a specific site
- label:I'm reporting a bug unrelated to a specific site
required:true
required:true
- label:I've verified that I'm running yt-dlp version **2022.03.08.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **2022.03.08.1** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
- label:I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required:true
required:true
- label:I've verified that I'm running yt-dlp version **2022.03.08.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **2022.03.08.1** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
- label:I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
required:true
required:true
@ -30,3 +30,24 @@ body:
placeholder:WRITE DESCRIPTION HERE
placeholder:WRITE DESCRIPTION HERE
validations:
validations:
required:true
required:true
- type:textarea
id:log
attributes:
label:Verbose log
description:|
If your feature request involves an existing yt-dlp command, provide the complete verbose output of that command.
Add the `-vU` flag to **your** command line you run yt-dlp with (`yt-dlp -vU <your command line>`), copy the WHOLE output and insert it below.
- label:I've verified that I'm running yt-dlp version **%(version)s**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **%(version)s** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've verified that I'm running yt-dlp version **%(version)s**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **%(version)s** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've verified that I'm running yt-dlp version **%(version)s**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **%(version)s** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I'm reporting a bug unrelated to a specific site
- label:I'm reporting a bug unrelated to a specific site
required:true
required:true
- label:I've verified that I'm running yt-dlp version **%(version)s**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **%(version)s** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've checked that all provided URLs are alive and playable in a browser
- label:I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
- label:I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
required:true
required:true
- label:I've verified that I'm running yt-dlp version **%(version)s**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- label:I've verified that I'm running yt-dlp version **%(version)s** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
required:true
required:true
- label:I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
- label:I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues including closed ones. DO NOT post duplicates
required:true
required:true
@ -30,3 +30,24 @@ body:
placeholder:WRITE DESCRIPTION HERE
placeholder:WRITE DESCRIPTION HERE
validations:
validations:
required:true
required:true
- type:textarea
id:log
attributes:
label:Verbose log
description:|
If your feature request involves an existing yt-dlp command, provide the complete verbose output of that command.
Add the `-vU` flag to **your** command line you run yt-dlp with (`yt-dlp -vU <your command line>`), copy the WHOLE output and insert it below.
@ -125,6 +125,7 @@ Some of yt-dlp's default options are different from that of youtube-dl and youtu
* The options `--auto-number` (`-A`), `--title` (`-t`) and `--literal` (`-l`), no longer work. See [removed options](#Removed) for details
* The options `--auto-number` (`-A`), `--title` (`-t`) and `--literal` (`-l`), no longer work. See [removed options](#Removed) for details
* `avconv` is not supported as an alternative to `ffmpeg`
* `avconv` is not supported as an alternative to `ffmpeg`
* yt-dlp stores config files in slightly different locations to youtube-dl. See [configuration](#configuration) for a list of correct locations
* The default [output template](#output-template) is `%(title)s [%(id)s].%(ext)s`. There is no real reason for this change. This was changed before yt-dlp was ever made public and now there are no plans to change it back to `%(title)s-%(id)s.%(ext)s`. Instead, you may use `--compat-options filename`
* The default [output template](#output-template) is `%(title)s [%(id)s].%(ext)s`. There is no real reason for this change. This was changed before yt-dlp was ever made public and now there are no plans to change it back to `%(title)s-%(id)s.%(ext)s`. Instead, you may use `--compat-options filename`
* The default [format sorting](#sorting-formats) is different from youtube-dl and prefers higher resolution and better codecs rather than higher bitrates. You can use the `--format-sort` option to change this to any order you prefer, or use `--compat-options format-sort` to use youtube-dl's sorting order
* The default [format sorting](#sorting-formats) is different from youtube-dl and prefers higher resolution and better codecs rather than higher bitrates. You can use the `--format-sort` option to change this to any order you prefer, or use `--compat-options format-sort` to use youtube-dl's sorting order
* The default format selector is `bv*+ba/b`. This means that if a combined video + audio format that is better than the best video-only format is found, the former will be preferred. Use `-f bv+ba/b` or `--compat-options format-spec` to revert this
* The default format selector is `bv*+ba/b`. This means that if a combined video + audio format that is better than the best video-only format is found, the former will be preferred. Use `-f bv+ba/b` or `--compat-options format-spec` to revert this
@ -431,24 +432,24 @@ You can also fork the project on github and run your fork's [build workflow](.gi
--dateafter DATE Download only videos uploaded on or after
--dateafter DATE Download only videos uploaded on or after
this date. The date formats accepted is the
this date. The date formats accepted is the
same as --date
same as --date
--match-filter FILTER Generic video filter. Any field (see
--match-filters FILTER Generic video filter. Any field (see
"OUTPUT TEMPLATE") can be compared with a
"OUTPUT TEMPLATE") can be compared with a
number or a string using the operators
number or a string using the operators
defined in "Filtering formats". You can
defined in "Filtering formats". You can
also simply specify a field to match if the
also simply specify a field to match if the
field is present and "!field" to check if
field is present, use "!field" to check if
the field is not present. In addition,
the field is not present, and "&" to check
Python style regular expression matching
multiple conditions. Use a "\" to escape
can be done using "~=", and multiple
"&" or quotes if needed. If used multiple
filters can be checked with "&". Use a "\"
times, the filter matches if atleast one of
to escape "&" or quotes if needed. Eg:
the conditions are met. Eg: --match-filter
--match-filter "!is_live &like_count>?100
!is_live --match-filter "like_count>?100&
&description~='(?i)\bcats \& dogs\b'"
description~='(?i)\bcats \& dogs\b'"
matches only videos that are not live, has
matches only videos that are not live OR
a like count more than 100 (or the like
those that have a like count more than 100
field is not available), and also has a
(or the like field is not available) and
description that contains the phrase "cats
also has a description that contains the
& dogs" (ignoring case)
phrase "cats & dogs" (ignoring case)
--no-match-filter Do not use generic video filter (default)
--no-match-filter Do not use generic video filter (default)
--no-playlist Download only the video, if the URL refers
--no-playlist Download only the video, if the URL refers
to a video and a playlist
to a video and a playlist
@ -840,15 +841,17 @@ You can also fork the project on github and run your fork's [build workflow](.gi
(requires ffmpeg and ffprobe)
(requires ffmpeg and ffprobe)
--audio-format FORMAT Specify audio format to convert the audio
--audio-format FORMAT Specify audio format to convert the audio
to when -x is used. Currently supported
to when -x is used. Currently supported
formats are: best (default) or one of
formats are: best (default) or one of aac,
best|aac|flac|mp3|m4a|opus|vorbis|wav|alac
flac, mp3, m4a, opus, vorbis, wav, alac
--audio-quality QUALITY Specify ffmpeg audio quality, insert a
--audio-quality QUALITY Specify ffmpeg audio quality to use when
converting the audio with -x. Insert a
value between 0 (best) and 10 (worst) for
value between 0 (best) and 10 (worst) for
VBR or a specific bitrate like 128K
VBR or a specific bitrate like 128K
(default 5)
(default 5)
--remux-video FORMAT Remux the video into another container if
--remux-video FORMAT Remux the video into another container if
necessary (currently supported: mp4|mkv|flv
necessary (currently supported: mp4, mkv,
|webm|mov|avi|mp3|mka|m4a|ogg|opus). If
flv, webm, mov, avi, mka, ogg, aac, flac,
mp3, m4a, opus, vorbis, wav, alac). If
target container does not support the
target container does not support the
video/audio codec, remuxing will fail. You
video/audio codec, remuxing will fail. You
can specify multiple rules; Eg.
can specify multiple rules; Eg.
@ -948,10 +951,10 @@ You can also fork the project on github and run your fork's [build workflow](.gi
option can be used multiple times
option can be used multiple times
--no-exec Remove any previously defined --exec
--no-exec Remove any previously defined --exec
--convert-subs FORMAT Convert the subtitles to another format
--convert-subs FORMAT Convert the subtitles to another format
(currently supported: srt|vtt|ass|lrc)
(currently supported: srt, vtt, ass, lrc)
(Alias: --convert-subtitles)
(Alias: --convert-subtitles)
--convert-thumbnails FORMAT Convert the thumbnails to another format
--convert-thumbnails FORMAT Convert the thumbnails to another format
(currently supported: jpg|png|webp)
(currently supported: jpg, png, webp)
--split-chapters Split video into multiple files based on
--split-chapters Split video into multiple files based on
Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) separated string of `ARG=VAL1,VAL2`. Eg: `--extractor-args "youtube:player-client=android_agegate,web;include_live_dash" --extractor-args "funimation:version=uncut"`
Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) separated string of `ARG=VAL1,VAL2`. Eg: `--extractor-args "youtube:player-client=android_embedded,web;include_live_dash" --extractor-args "funimation:version=uncut"`
The following extractors use this feature:
The following extractors use this feature:
@ -1661,10 +1668,8 @@ The following extractors use this feature:
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause some issues. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) for more details
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause some issues. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) for more details
* `include_live_dash`: Include live dash formats even without `--live-from-start` (These formats don't download properly)
* `include_live_dash`: Include live dash formats even without `--live-from-start` (These formats don't download properly)
* `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side)
* `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side)
* `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread`. Default is `all,all,all,all`.
* `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread`. Default is `all,all,all,all`
* E.g. `all,all,1000,10` will get a maximum of 1000 replies total, with up to 10 replies per thread. `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total.
* E.g. `all,all,1000,10` will get a maximum of 1000 replies total, with up to 10 replies per thread. `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total
* `max_comment_depth` Maximum depth for nested comments. YouTube supports depths 1 or 2 (default)
* **Deprecated**: Set `max-replies` to `0` or `all` in `max_comments` instead (e.g. `max_comments=all,all,0` to get no replies)
* `skip`: One or more of `webpage` (skip initial webpage download), `authcheck` (allow the download of playlists requiring authentication when no initial webpage is downloaded. This may cause unwanted behavior, see [#1122](https://github.com/yt-dlp/yt-dlp/pull/1122) for more details)
* `skip`: One or more of `webpage` (skip initial webpage download), `authcheck` (allow the download of playlists requiring authentication when no initial webpage is downloaded. This may cause unwanted behavior, see [#1122](https://github.com/yt-dlp/yt-dlp/pull/1122) for more details)
@ -1743,7 +1748,7 @@ with YoutubeDL(ydl_opts) as ydl: