What's new in yt-dlp 2024.04.09
Apr 9, 2024
- Core changes:
- Add new option --progress-delta (#9082) by Grub4K
- Add new options --impersonate and --list-impersonate-targets by bashonly, coletdjnz, Grub4K, pukkandan
- Add option --no-break-on-existing (#9610) by bashonly
- Fix filesize_approx calculation (#9560) by pukkandan, seproDev
- Infer acodec for single-codec containers by pukkandan
- Prevent RCE when using --exec with %q (CVE-2024-22423) by Grub4K
- cookies: Add --cookies-from-browser support for Firefox Flatpak (#9619) by un-def
- utils
- traverse_obj
- Allow unbranching using all and any (#9571) by Grub4K
- Convenience improvements (#9577) by Grub4K
- Extractor changes:
- Add extractor impersonate API (#9474) by bashonly, Grub4K, pukkandan
- afreecatv
- Overhaul extractor (#9566) by bashonly, Tomoka1
- live: Fix extractor (#9348) by hui1601
- asobistage: Add extractor (#8735) by pzhlkj6612
- box: Support URLs without file IDs (#9504) by shreyasminocha
- cbc.ca: player: Support new URL format (#9561) by trainman261
- crunchyroll
- Extract vo_adaptive_hls formats by default (#9447) by bashonly
- Fix extractor (#9615) by bytedream
- dropbox: Fix formats extraction (#9627) by bashonly
- fathom: Add extractor (#9495) by src-tinkerer
- gofile: Fix extractor (#9446) by jazz1611
- imgur: Fix extraction (#9471) by trwstin
- jiosaavn
- Extract artists (#9612) by bashonly
- Fix format extensions (#9609) by bashonly
- Support playlists (#9622) by bashonly
- joqrag: Fix live status detection (#9624) by pzhlkj6612
- kick: Support browser impersonation (#9611) by bashonly
- loom: Add extractors (#8686) by bashonly, hruzgar
- medici: Fix extractor (#9518) by Offert4324
- mixch
- Fix extractor (#9608) by bashonly, nipotan
- archive: Fix extractor (#8761) by pzhlkj6612
- nhk: Fix NHK World extractors (#9623) by bashonly
- patreon: Do not extract dead embed URLs (#9613) by johnvictorfs
- radio1be: Add extractor (#9122) by HobbyistDev
- sharepoint: Add extractor (#6531) by bashonly, C0D3D3V
- sonylivseries: Fix season extraction (#9423) by bashonly
- soundcloud
- Adjust format sorting (#9584) by [bashonly](https://github.com/bashonly...
New in yt-dlp 2024.03.10 (Mar 11, 2024)
- Core changes:
- Add --compat-options 2023 (#9084) by Grub4K (With fixes in ffff1bc by pukkandan)
- Create ydl._request_director when needed by pukkandan (With fixes in dbd8b1b by Grub4k)
- Don't select storyboard formats as fallback by bashonly
- Handle --load-info-json format selection errors (#9392) by bashonly
- Warn user when not launching through shell on Windows (#9250) by Grub4K, seproDev
- cookies
- Fix --cookies-from-browser for snap Firefox (#9016) by Grub4K
- Fix --cookies-from-browser with macOS Firefox profiles (#8909) by RalphORama
- Improve error message for Windows --cookies-from-browser chrome issue (#9080) by Grub4K
- plugins: Handle PermissionError (#9229) by pukkandan, syntaxsurge
- utils
- Improve repr of DateRange, match_filter_func by pukkandan
- traverse_obj: Support xml.etree.ElementTree.Element (#8911) by Grub4K
- webvtt: Don't parse single fragment files (#9034) by seproDev
- Extractor changes:
- Migrate commonly plural fields to lists (#8917) by llistochek, pukkandan (With fixes in b136e2a by bashonly)
- Support multi-period MPD streams (#6654) by alard, pukkandan
- abematv
- Fix extraction with cache (#8895) by sefidel
- Support login for playlists (#8901) by sefidel
- adn
- Add support for German site (#8708) by infanf
- Improve auth error handling (#9068) by infanf
- aenetworks: Rating should be optional for AP extraction (#9005) by agibson-fl
- altcensored: channel: Fix playlist extraction (#9297) by marcdumais
- amadeustv: Add extractor (#8744) by ArnauvGilotra
- ant1newsgrembed: Fix extractor (#9191) by seproDev
- archiveorg: Fix format URL encoding (#9279) by bashonly
- ard
- mediathek
- Revert to using old id (#8916) by Grub4K
- Support cookies to verify age (#9037) by StefanLobbenmeier
- art19: Add extractors (#9099) by seproDev
- artetv: Separate closed captions (#8231) by Nicals, seproDev
- asobichannel: Add extractors (#8700) by Snack-X
- bigo: Fix JSON extraction (#8893) by DmitryScaletta
- bilibili
- Add referer header and fix metadata extraction (#8832) by SirElderling (With fixes in f1570ab by TobiX)
- Support --no-playlist (#9139) by c-basalt
- bilibilisearch: Set cookie to fix extraction (#9119) by c-basalt
- biliintl: Fix and improve subtitles extraction (#7077) by dirkf, HobbyistDev, itachi-19, seproDev
- boosty: Add extractor (#9144) by un-def
- ccma: [Extract 1080p DASH formats](4253e3b7f483127bd812b
New in yt-dlp 2023.12.30 (Dec 31, 2023)
- Core changes:
- Fix format selection parse error for CPython 3.12 (#8797) by Grub4K
- Let read_stdin obey --quiet by pukkandan
- Merged with youtube-dl be008e6 by bashonly, dirkf, Grub4K
- Parse release_year from release_date (#8524) by seproDev
- Release workflow and Updater cleanup (#8640) by bashonly
- Remove Python 3.7 support (#8361) by bashonly
- Support NO_COLOR environment variable (#8385) by Grub4K, prettykool
- outtmpl: Support multiplication by pukkandan
- utils: traverse_obj: Move is_user_input into output template (#8673) by Grub4K
- webvtt: Allow spaces before newlines for CueBlock (#7681) by TSRBerry (With fixes in 298230e by pukkandan)
- Extractor changes:
- Add media_type field by trainman261
- Extract from media elements in SMIL manifests (#8504) by seproDev
- abematv: Fix season metadata (#8607) by middlingphys
- allstar: Add extractors (#8274) by S-Aarab
- altcensored: Add extractor (#8291) by drzraf
- ard: Overhaul extractors (#8878) by seproDev
- ardbetamediathek: Fix series extraction (#8687) by lstrojny
- bbc
- Extract more formats (#8321) by barsnick, dirkf
- Fix JSON parsing bug by bashonly
- bfmtv: Fix extractors (#8651) by bashonly
- bilibili: Support courses and interactive videos (#8343) by c-basalt
- bitchute: Fix and improve metadata extraction (#8507) by SirElderling
- box: Fix formats extraction (#8649) by bashonly
- bundestag: Add extractor (#8783) by Grub4K
- drtv: Set default ext for m3u8 formats (#8590) by seproDev
- duoplay: Add extractor (#8542) by glensc
- eplus: Add login support and DRM detection (#8661) by pzhlkj6612
- facebook
- Fix Memories extraction (#8681) by kclauhk
- Improve subtitles extraction (#8296) by kclauhk
- floatplane: Add extractors (#8639) by seproDev
- francetv: Improve metadata extraction (#8409) by Fymyte
- instagram: Fix stories extraction (#8843) by bashonly
- joqrag: Add extractor (#8384) by pzhlkj6612
- litv: Fix premium content extraction (#8842) by bashonly
- maariv: Add extractor (#8331) by amir16yp
- mediastream: Fix authenticated format extraction (#8657) by NickCis
- nebula: Overhaul extractors ([#8566](https://github.com/yt-dlp/yt-dlp/issue...
New in yt-dlp 2023.11.16 (Nov 16, 2023)
- Extractor changes:
- abc.net.au: iview, showseries: Fix extraction (#8586) by bashonly
- beatbump: Update _VALID_URL (#8576) by seproDev
- dailymotion: Improve _VALID_URL (#7692) by TravisDupes
- drtv: Fix extractor (#8484) by almx, seproDev
- eltrecetv: Add extractor (#8216) by elivinsky
- jiosaavn: Add extractors (#8307) by awalgarg
- njpwworld: Remove (#8570) by aarubui
- tv5mondeplus: Extract subtitles (#4209) by FrankZ85
- twitcasting: Fix livestream detection (#8574) by JC-Chung
- zenyandex: Fix extraction (#8454) by starius
- Misc. changes:
- build: Make secretstorage an optional dependency (#8585) by bashonly
New in yt-dlp 2023.10.14 (Nov 15, 2023)
- Core changes:
- Add --compat-option manifest-filesize-approx (#8356) by bashonly
- Fix format sorting with --load-info-json (#8521) by bashonly
- Include build origin in verbose output by bashonly, Grub4K
- Only ensure playlist thumbnail dir if writing thumbs (#8373) by bashonly
- update: Overhaul self-updater by bashonly, Grub4K
- Extractor changes:
- Do not smuggle http_headers by coletdjnz
- Do not test truth value of xml.etree.ElementTree.Element (#8582) by bashonly
- brilliantpala: Fix cookies support (#8352) by pzhlkj6612
- generic: Improve direct video link ext detection (#8340) by bashonly
- laxarxames: Add extractor (#8412) by aniolpages
- n-tv.de: Fix extractor (#8414) by 1100101
- neteasemusic: Improve metadata extraction (#8531) by LoserFox
- nhk: Improve metadata extraction (#8388) by garret1317
- novaembed: Improve _VALID_URL (#8368) by peci1
- npo: Send POST request to streams API endpoint (#8413) by bartbroere
- ondemandkorea: Overhaul extractor (#8386) by seproDev
- orf: podcast: Add extractor (#8486) by Esokrates
- polskieradio: audition: Fix playlist extraction (#8459) by shubhexists
- qdance: Update _VALID_URL (#8426) by bashonly
- radiocomercial: Add extractors (#8508) by SirElderling
- sbs.co.kr: Add extractors (#8326) by seproDev
- theatercomplextown: Add extractors (#8560) by bashonly
- thisav: Remove (#8346) by bashonly
- thisoldhouse: Add login support (#8561) by bashonly
- twitcasting: Fix livestream extraction (#8427) by JC-Chung, saintliao
- twitter
- broadcast
- Improve metadata extraction (#8383) by HitomaruKonpaku
- Support --wait-for-video (#8475) by bashonly
- weibo: Fix extraction (#8463) by c-basalt
- weverse: Fix login error handling (#8458) by seproDev
- youtube: Check newly uploaded iOS HLS formats (#8336) by bashonly
- zoom: Extract combined view formats (#7847) by Mipsters
- Downloader changes:
- aria2c: Remove duplicate --file-allocation=none (#8332) by CrendKing
- dash: Force native downloader for --live-from-start (#8339) by bashonly
- Networking changes:
- Request Handler: requests: Add handler for requests HTTP library (#3668) by bashonly, coletdjnz, Grub4K (With fixes in 4e38e2a)
New in yt-dlp 2023.10.13 (Oct 14, 2023)
- Core changes:
- Ensure thumbnail output directory exists (#7985) by Riteo
- utils
- js_to_json: Fix Date constructor parsing (#8295) by awalgarg, Grub4K
- write_xattr: Use os.setxattr if available (#8205) by bashonly, Grub4K
- Extractor changes:
- artetv: Support age-restricted content (#8301) by StefanLobbenmeier
- jtbc: Add extractors (#8314) by seproDev
- mbn: Add extractor (#8312) by seproDev
- nhk: Fix Japanese-language VOD extraction (#8309) by garret1317
- radiko: Fix bug with downloader_options by bashonly
- tenplay: Add support for seasons (#7939) by midnightveil
- youku: Improve tudou.com support (#8160) by naginatana
- youtube: Fix bug with --extractor-retries inf (#8328) by Grub4K
- Downloader changes:
- fragment: Improve progress calculation (#8241) by Grub4K
- Misc. changes:
- cleanup: Miscellaneous: b634ba7 by bashonly, gamer191
New in yt-dlp 2023.10.07 (Oct 7, 2023)
- Extractor changes:
- abc.net.au: iview: Improve episode extraction (#8201) by xofe
- erocast: Add extractor (#8264) by madewokherd
- gofile: Fix token cookie bug by bashonly
- iq.com: Fix extraction and subtitles (#8260) by AS6939
- lbry
- Add playlist support (#8213) by bashonly, drzraf, Grub4K
- Extract uploader_id (#8244) by drzraf
- litv: Fix extractor (#7785) by jiru
- neteasemusic: Fix extractors (#8181) by c-basalt
- nhk: Fix VOD extraction (#8249) by garret1317
- radiko: Improve extraction (#8221) by garret1317
- substack
- Fix download cookies bug (#8219) by handlerug
- Fix embed extraction (#8218) by handlerug
- theta: Remove extractors (#8251) by alerikaisattera
- wrestleuniversevod: Call API with device ID (#8272) by bashonly
- xhamster: user: Support creator urls (#8232) by Grub4K
- youtube
- Fix heatmap extraction (#8299) by bashonly
- Raise a warning for Incomplete Data instead of an error (#8238) by coletdjnz
- Misc. changes:
- cleanup
- Update extractor tests (#7718) by trainman261
- Miscellaneous: 377e85a by dirkf, gamer191, Grub4K
New in yt-dlp 2023.09.24 (Sep 24, 2023)
- Important changes:
- The minimum recommended Python version has been raised to 3.8
- Since Python 3.7 has reached end-of-life, support for it will be dropped soon. Read more
- Security: [CVE-2023-40581] Prevent RCE when using --exec with %q on Windows
- The shell escape function is now using "" instead of ".
- utils.Popen has been patched to properly quote commands.
- Core changes:
- Fix HTTP headers and cookie handling by bashonly, pukkandan
- Fix --check-formats by pukkandan
- Fix support for upcoming Python 3.12 (#8130) by Grub4K
- Merged with youtube-dl 66ab08 by coletdjnz
- Prevent RCE when using --exec with %q (CVE-2023-40581) by Grub4K
- Raise minimum recommended Python version to 3.8 (#8183) by Grub4K
- FFmpegFixupM3u8PP may need to run with ffmpeg by pukkandan
- compat
- Add types.NoneType by pukkandan (With fixes in 25b6e8f)
- Deprecate old functions (#2861) by coletdjnz, pukkandan
- Ensure submodules are imported correctly by pukkandan
- cookies: Containers JSON should be opened as utf-8 (#7800) by bashonly
- dependencies: Handle deprecation of sqlite3.version (#8167) by bashonly
- outtmpl: Fix replacement for playlist_index by pukkandan
- utils
- Add temporary shim for logging by pukkandan
- Improve parse_duration by bashonly
- HTTPHeaderDict: Handle byte values by pukkandan
- clean_podcast_url: Handle more trackers (#7556) by bashonly, mabdelfattah
- js_to_json: Handle Array objects by Grub4K, std-move
- Extractor changes
- Extract subtitles from SMIL manifests (#7667) by bashonly, pukkandan
- Fix --load-pages by pukkandan
- Make _search_nuxt_data more lenient by std-move
- abematv
- Fix proxy handling (#8046) by SevenLives
- Temporary fix for protocol handler by pukkandan
- amazonminitv: Fix extractors by bashonly, GautamMKGarg
- antenna: Support antenna.gr (#7584) by stdedos
- artetv: Fix HLS formats extraction by bashonly
- axs: Add extractor (#8094) by barsnick
- banbye: Support video ids containing a hyphen (#8059) by kshitiz305
- bbc: Extract tracklist as chapters (#7788) by garret1317
- bild.de: Extract HLS formats (#8032) by barsnick
- bilibili
- Add support for series, favorites and watch later (#7518) by c-basalt
- Extract Dolby audio formats (#8142) by ClosedPort22
- Extract format_id (#7555) by c-basalt
- bilibilibangumi: Fix extractors (#7337) by GD-Slime
- bpb: Overhaul extractor (#8119) by Grub4K
- brilliantpala: Add extractors (#6680) by pzhlkj6612
- canal1, caracoltvplay: Add extractors (#7151) by elyse0
- cbc: Ignore any 426 from API (#7689) by makew0rld
- cbcplayer: Extract HLS formats and subtitles (#7484) by trainman261
- cbcplayerplaylist: [Add extractor](https://github.com/yt-dlp/yt-...
New in yt-dlp 2023.07.06 (Jul 6, 2023)
- Core changes:
- Allow extractors to mark formats as potentially DRM (#7396) by pukkandan
- Bugfix for b4e0d75848e9447cee2cd3646ce54d4744a7ff56 by pukkandan
- Change how Cookie headers are handled by Grub4K
- Prevent Cookie leaks on HTTP redirect by coletdjnz
- formats: Fix best fallback for storyboards by pukkandan
- outtmpl: Pad playlist_index etc even when with internal formatting by pukkandan
- utils: clean_podcast_url: Handle protocol in redirect URL by pukkandan
- Extractor changes:
- abc: Fix extraction (#7434) by meliber
- AdultSwim: Extract subtitles from m3u8 (#7421) by nnoboa
- crunchyroll: music: Fix _VALID_URL (#7439) by AmanSal1, rdamas
- Douyin: Fix extraction from webpage by bashonly
- googledrive: Fix source format extraction (#7395) by RfadnjdExt
- kick: Fix _VALID_URL by bashonly
- qdance: Add extractor (#7420) by bashonly
- sbs: Python 3.7 compat by pukkandan
- stacommu: Add extractors (#7432) by urectanc
- twitter
- Fix unauthenticated extraction (#7476) by bashonly
- spaces: Fix extraction (#7512) by bashonly
- vidlii: Handle relative URLs by pukkandan
- vk: VKPlay, VKPlayLive: Add extractors (#7358) by c-basalt
- youtube
- Add extractor-arg formats by pukkandan
- Avoid false DRM detection (#7396) by pukkandan
- Fix comments' is_favorited (#7390) by bbilly1
- Ignore incomplete data for comment threads by default (#7475) by coletdjnz
- Process post_live over 2 hours by pukkandan
- stories: Remove (#7459) by pukkandan
- tab: Support shorts-only playlists (#7425) by coletdjnz
- Downloader changes:
- aria2c: Add --no-conf by pukkandan
- external: Scope cookies by bashonly, coletdjnz
- http: Avoid infinite loop when no data is received by pukkandan
- Misc. changes:
- Add CodeQL workflow (#7497) by pukkandan
- cleanup: Miscellaneous: 337734d by pukkandan
- docs: Minor fixes by pukkandan
- make_changelog: Skip reverted commits by pukkandan
New in yt-dlp 2023.06.22 (Jun 22, 2023)
- Core changes:
- Fix bug
- Improve --download-sections
- Support negative time-ranges
- Add *from-url to obey time-ranges in URL
- Indicate filesize approximated from tbr better
- Extractor changes:
- Support multiple _VALID_URLs
- Dplay: GlobalCyclingNetworkPlus: Add extractor
- Dropout: Fix season extraction
- Nebula: Fix extractor
- Rheinmaintv: Add extractor
- Youtube:
- Improve description parsing performance
- Improve nsig function name extraction
- Workaround 403 for android formats
- Misc. changes:
- Revert "Add automatic duplicate issue detection
New in yt-dlp 2023.06.21 (Jun 21, 2023)
- Important changes:
- YouTube: Improved throttling and signature fixes
- Core changes:
- Add --compat-option playlist-match-filter by pukkandan
- Add --no-quiet by pukkandan
- Add option --color (#6904) by Grub4K
- Add option --netrc-cmd (#6682) by NDagestad, pukkandan
- Add option --xff by pukkandan
- Auto-select default format in -f- (#7101) by ivanskodje, pukkandan
- Deprecate internal Youtubedl-no-compression header (#6876) by coletdjnz
- Do not translate newlines in --print-to-file by pukkandan
- Ensure pre-processor errors do not block --print by pukkandan (With fixes in 17ba434)
- Fix filepath being copied to underlying format dict by pukkandan
- Improve HTTP redirect handling (#7094) by coletdjnz
- Populate filename and urls fields at all stages of --print by pukkandan (With fixes in b5f61b6)
- Relaxed validation for numeric format filters by pukkandan
- Support decoding multiple content encodings (#7142) by coletdjnz
- Support loading info.json with a list at it's root by pukkandan
- Workaround erroneous urllib Windows proxy parsing (#7092) by coletdjnz
- cookies
- Defer extraction of v11 key from keyring by Grub4K
- Move YoutubeDLCookieJar to cookies module (#7091) by coletdjnz
- Support custom Safari cookies path (#6783) by NextFire
- Update for chromium changes (#6897) by mbway
- Cryptodome: Fix __bool__ by pukkandan
- jsinterp
- Do not compile regex by pukkandan
- Fix division (#7279) by bashonly
- Fix global object extraction by pukkandan
- Handle NaN in bitwise operators by pukkandan
- Handle negative numbers better by pukkandan
- outtmpl
- Allow n in replacements and default. by pukkandan
- Fix some minor bugs by pukkandan (With fixes in 1619ab3)
- Support str.format syntax inside replacements by pukkandan
- update
- Better error handling by pukkandan
- Do not restart into versions without --update-to by pukkandan
- Implement --update-to repo by Grub4K, pukkandan
- upstream
- Merged with youtube-dl 07af47 by pukkandan
- Merged with youtube-dl d1c6c5 by pukkandan (With fixes in edbe5b5 by bashonly)
- utils
- FormatSorter: Improve size and br by pukkandan, u-spec-png
- js_to_json: Implement template strings (#6623) by Grub4K
- locked_file: Fix for virtiofs (#6840) by brandon-dacrib
- strftime_or_none: Handle negative timestamps by dirkf, pukkandan
- traverse_obj
- Allow iterables in traversal (#6902) by Grub4K
- More fixes (#6959) by Grub4K
- write_string: Fix noconsole behavior by Grub4K
- Extractor changes:
- Do not exit early for unsuitable url_result by pukkandan
- [Do not warn for invalid chapter data in description](https://...
New in yt-dlp 2023.03.04 (Mar 5, 2023)
- Extractor changes:
- bilibili: Fix for downloading wrong subtitles (#6358) by LXYan2333
- ESPNcricinfo: Handle new URL pattern (#6321) by venkata-krishnas
- lefigaro: Add extractors (#6309) by elyse0
- lumni: Add extractor (#6302) by carusocr
- Prankcast: Fix tags (#6316) by columndeeply
- rutube: Extract chapters from description (#6345) by mushbite
- SportDeutschland: Rewrite extractor by pukkandan
- telecaribe: Add extractor (#6311) by elyse0
- tubetugraz: Support --twofactor (#6427) by Ferdi265
- tunein: Fix extractors (#6310) by elyse0
- twitch: Update for GraphQL API changes (#6318) by elyse0
- twitter: Fix retweet extraction (#6422) by selfisekai
- xvideos: quickies: Add extractor (#6414) by Yakabuff
- Misc. changes:
- build:
- Fix publishing to PyPI and homebrew by bashonly
- Only archive if vars.ARCHIVE_REPO is set by Grub4K
- cleanup: Miscellaneous: 392389b by pukkandan
- devscripts: make_changelog: Stop at Release ... commit by pukkandan
New in yt-dlp 2023.03.03 (Mar 4, 2023)
- Important changes:
- A new release type has been added!
- nightly builds will be made after each push, containing the latest fixes (but also possibly bugs).
- When using --update/-U, a release binary will only update to its current channel (either stable or nightly).
- The --update-to option has been added allowing the user more control over program upgrades (or downgrades).
- update-to can change the release channel (stable, nightly) and also upgrade or downgrade to specific tags.
- Usage: --update-to CHANNEL, --update-to TAG, --update-to CHANNEL@TAG
- YouTube throttling fixes!
- Core changes:
- Add option --break-match-filters by pukkandan
- Fix --break-on-existing with --lazy-playlist by pukkandan
- dependencies
- Simplify Cryptodome by pukkandan
- jsinterp
- Handle Date at epoch 0 by pukkandan
- plugins
- Don't look in .egg directories by pukkandan
- update
- Add option --update-to, including to nightly (#6220) by bashonly, Grub4K, pukkandan
- utils
- LenientJSONDecoder: Parse unclosed objects by pukkandan
- Popen: Shim undocumented text_mode property by Grub4K
- Extractor changes:
- Fix DRM detection in m3u8 by pukkandan
- generic
- Detect manifest links via extension by bashonly
- Handle basic-auth when checking redirects by pukkandan
- GoogleDrive
- Fix some audio by pukkandan
- iprima
- Fix extractor (#6291) by std-move
- mediastream
- Improve WinSports support (#6401) by bashonly
- ntvru
- Extract HLS and DASH formats (#6403) by bashonly
- tencent
- Add more formats and info (#5950) by Hill-98
- yle_areena
- Extract non-Kaltura videos (#6402) by bashonly
- youtube
- Construct dash formats with range query by pukkandan (With fixes in f34804b by bashonly, coletdjnz)
- Detect and break on looping comments (#6301) by coletdjnz
- Extract channel view_count when /about tab is passed by pukkandan
- Misc. changes:
- build
- Add cffi as a dependency for yt_dlp_linux by bashonly
- Automated builds and nightly releases (#6220) by bashonly, Grub4K (With fixes in bfc861a by pukkandan)
- Sign SHA files and release public key by Grub4K
- cleanup
- Fix Changelog by pukkandan
- jsinterp: Give functions names to help debugging by pukkandan
- Miscellaneous: 4815bbf, 5b28cef by pukkandan
- devscripts
- Script to generate changelog (#6220) by Grub4K (With fixes in 9344964)
New in yt-dlp 2023.02.17 (Feb 17, 2023)
- Merge youtube-dl: Upto commit/2dd6c6e
- Fix --concat-playlist
- Imply --no-progress when --print
- Improve default subtitle language selection by sdht0
- Make title completely non-fatal
- Sanitize formats before sorting by pukkandan
- Support module level __bool__ and property
- [dependencies] Standardize Cryptodome imports
- [hls] Allow extractors to provide AES key by Grub4K, bashonly
- [ExtractAudio] Handle outtmpl without ext by carusocr
- [extractor/common] Fix _search_nuxt_data by LowSuggestion912
- [extractor/generic] Avoid catastrophic backtracking in KVS regex by bashonly
- [jsinterp] Support if statements
- [plugins] Fix zip search paths
- [utils] traverse_obj: Various improvements by Grub4K
- [utils] traverse_obj: Fix more bugs
- [utils] traverse_obj: Fix several behavioral problems by Grub4K
- [utils] Don't use Content-length with encoding by felixonmars
- [utils] Fix time_seconds to use the provided TZ by Grub4K, Lesmiscore
- [utils] Fix race condition in make_dir by aionescu
- [utils] Use local kernel32 for file locking on Windows by Grub4K
- [compat_utils] Improve passthrough_module
- [compat_utils] Simplify EnhancedModule
- [build] Update pyinstaller
- [pyinst] Fix for pyinstaller 5.8
- [devscripts] Provide pyinstaller hooks
- [devscripts/pyinstaller] Analyze sub-modules of Cryptodome
- [cleanup] Misc fixes and cleanup
- [extractor/anchorfm] Add episode extractor by HobbyistDev, bashonly
- [extractor/boxcast] Add extractor by HobbyistDev
- [extractor/ebay] Add extractor by JChris246
- [extractor/hypergryph] Add extractor by HobbyistDev, bashonly
- [extractor/NZOnScreen] Add extractor by gregsadetsky, pukkandan
- [extractor/rozhlas] Add extractor RozhlasVltavaIE by amra
- [extractor/tempo] Add IVXPlayer extractor by HobbyistDev
- [extractor/txxx] Add extractors by chio0hai
- [extractor/vocaroo] Add extractor by SuperSonicHub1, qbnu
- [extractor/wrestleuniverse] Add extractors by Grub4K, bashonly
- [extractor/yappy] Add extractor by HobbyistDev
- [extractor/youtube] Fix uploader_id extraction by bashonly
- [extractor/youtube] Add hyperpipe instances by Generator
- [extractor/youtube] Handle consent.youtube
- [extractor/youtube] Support /live/ URL
- [extractor/youtube] Update invidious and piped instances by rohieb
- [extractor/91porn] Fix title and comment extraction by pmitchell86
- [extractor/AbemaTV] Cache user token whenever appropriate by Lesmiscore
- [extractor/bfmtv] Support rmc prefix by carusocr
- [extractor/biliintl] Add intro and ending chapters by HobbyistDev
- [extractor/clyp] Support wav by qulaz
- [extractor/crunchyroll] Add intro chapter by ByteDream
- [extractor/crunchyroll] Better message for premium videos
- [extractor/crunchyroll] Fix incorrect premium-only error by Grub4K
- [extractor/DouyuTV] Use new API by hatienl0i261299
- [extractor/embedly] Embedded links may be for other extractors
- [extractor/freesound] Workaround invalid URL in webpage by rebane2001
- [extractor/GoPlay] Use new API by jeroenj
- [extractor/Hidive] Fix subtitles and age-restriction by chexxor
- [extractor/huya] Support HD streams by felixonmars
- [extractor/moviepilot] Fix extractor by panatexxa
- [extractor/nbc] Fix NBC and NBCStations extractors by bashonly
- [extractor/nbc] Fix XML parsing by bashonly
- [extractor/nebula] Remove broken cookie support by hheimbuerger
- [extractor/nfl] Add NFLPlus extractors by bashonly
- [extractor/niconico] Add support for like history by Matumo, pukkandan
- [extractor/nitter] Update instance list by OIRNOIR
- [extractor/npo] Fix extractor and add HD support by seproDev
- [extractor/odkmedia] Add OnDemandChinaEpisodeIE by HobbyistDev, pukkandan
- [extractor/pornez] Handle relative URLs in iframe by JChris246
- [extractor/radiko] Fix format sorting for Time Free by road-master
- [extractor/rcs] Fix extractors by nixxo, pukkandan
- [extractor/reddit] Support user posts by OMEGARAZER
- [extractor/rumble] Fix format sorting by pukkandan
- [extractor/servus] Rewrite extractor by Ashish0804, FrankZ85, StefanLobbenmeier
- [extractor/slideslive] Fix slides and chapters/duration by bashonly
- [extractor/SportDeutschland] Fix extractor by FriedrichRehren
- [extractor/Stripchat] Fix extractor by JChris246, bashonly
- [extractor/tnaflix] Fix extractor by bashonly, oxamun
- [extractor/tvp] Support stream.tvp.pl by selfisekai
- [extractor/twitter] Fix --no-playlist and add media view_count when using GraphQL by Grub4K
- [extractor/twitter] Fix graphql extraction on some tweets by selfisekai
- [extractor/vimeo] Fix playerConfig extraction by LeoniePhiline, bashonly
- [extractor/viu] Add ViuOTTIndonesiaIE extractor by HobbyistDev
- [extractor/vk] Fix playlists for new API by the-marenga
- [extractor/vlive] Replace with VLiveWebArchiveIE by seproDev
- [extractor/ximalaya] Update album _VALID_URL by carusocr
- [extractor/zdf] Use android API endpoint for UHD downloads by seproDev
- [extractor/drtv] Fix bug in ab4cbef by bashonly
New in yt-dlp 2023.01.06 (Jan 7, 2023)
- Changelog:
- Fix config locations by Grub4k, coletdjnz, pukkandan
- [downloader/aria2c] Disable native progress
- [utils] mimetype2ext: weba is not standard
- [utils] windows_enable_vt_mode: Better error handling
- [build] Add minimal pyproject.toml
- [update] Fix updater file removal on windows by Grub4K
- [cleanup] Misc fixes and cleanup
- [extractor/aitube] Add extractor by HobbyistDev
- [extractor/drtv] Add series extractors by FrederikNS
- [extractor/volejtv] Add extractor by HobbyistDev
- [extractor/xanimu] Add extractor by JChris246
- [extractor/youtube] Retry manifest refresh for live-from-start by mzhou
- [extractor/biliintl] Add /media to VALID_URL by HobbyistDev
- [extractor/biliIntl] Add fallback to video_data by HobbyistDev
- [extractor/crunchyroll:show] Add language to entries by Chrissi2812
- [extractor/joj] Fix extractor by OndrejBakan, pukkandan
- [extractor/nbc] Update graphql query by jacobtruman
- [extractor/reddit] Add subreddit as channel_id by gschizas
- [extractor/tiktok] Add TikTokLive extractor by JC-Chung
New in yt-dlp 2023.01.02 (Jan 2, 2023)
- Improve plugin architecture by Grub4K, coletdjnz, flashdagger, pukkandan
- Plugins can be loaded in any distribution of yt-dlp (binary, pip, source, etc.) and can be distributed and installed as packages. See the readme for more information
- Add --compat-options 2021,2022
- This allows devs to change defaults and make other potentially breaking changes more easily. If you need everything to work exactly as-is, put Use --compat 2022 in your config to guard against future compat changes.
- [downloader/aria2c] Native progress for aria2c via RPC by Lesmiscore, pukkandan
- Merge youtube-dl: Upto commit/195f22f by Grub4k, pukkandan
- Add pre-processor stage video
- Let --parse/replace-in-metadata run at any post-processing stage
- Add --enable-file-urls by coletdjnz
- Add new field aspect_ratio
- Add ac4 to known codecs
- Add weba to known extensions
- [FFmpegVideoConvertor] Add gif to --recode-video
- Add message when there are no subtitles/thumbnails
- Deprioritize HEVC-over-FLV formats by Lesmiscore
- Make early reject of --match-filter stricter
- Fix --cookies-from-browser CLI parsing
- Fix original_url in playlists
- Fix bug in writing playlist info-json
- Fix bugs in PlaylistEntries
- [downloader/ffmpeg] Fix headers for video+audio formats by Grub4K, bashonly
- [extractor] Add a way to distinguish IEs that returns only videos
- [extractor] Implement universal format sorting and deprecate _sort_formats
- [extractor] Let _extract_format functions obey --ignore-no-formats
- [extractor/generic] Add fragment_query extractor arg for DASH and HLS by bashonly, pukkandan
- [extractor/generic] Decode unicode-escaped embed URLs by bashonly
- [extractor/generic] Don't report redirect to https
- [extractor/generic] Fix JSON LD manifest extraction by bashonly, pukkandan
- [extractor/generic] Use Accept-Encoding: identity for initial request by coletdjnz
- [FormatSort] Add mov to vext
- [jsinterp] Escape regex that looks like nested set
- [webvtt] Handle premature EOF by flashdagger
- [utils] classproperty: Add cache support
- [utils] get_exe_version: Detect broken executables by dirkf, pukkandan
- [utils] js_to_json: Fix bug in f55523c by ChillingPepper, pukkandan
- [utils] Make ExtractorError mutable
- [utils] Move FileDownloader.parse_bytes into utils
- [utils] Move format sorting code into utils
- [utils] windows_enable_vt_mode: Proper implementation by Grub4K
- [update] Workaround #5632
- [docs] Improvements
- [cleanup] Misc fixes and cleanup
- [cleanup] Use random.choices by freezboltz
- [extractor/airtv] Add extractor by HobbyistDev
- [extractor/amazonminitv] Add extractors by GautamMKGarg, nyuszika7h
- [extractor/beatbump] Add extractors by Bobscorn, pukkandan
- [extractor/europarl] Add EuroParlWebstream extractor by HobbyistDev
- [extractor/kanal2] Add extractor by bashonly, glensc, pukkandan
- [extractor/kankanews] Add extractor by synthpop123
- [extractor/kick] Add extractor by bashonly
- [extractor/mediastream] Add extractor by HobbyistDev, elyse0
- [extractor/noice] Add NoicePodcast extractor by HobbyistDev
- [extractor/oneplace] Add OnePlacePodcast extractor by HobbyistDev
- [extractor/rumble] Add RumbleIE extractor by flashdagger
- [extractor/screencastify] Add extractor by bashonly
- [extractor/trtcocuk] Add extractor by HobbyistDev
- [extractor/Veoh] Add user extractor by tntmod54321
- [extractor/videoken] Add extractors by bashonly
- [extractor/webcamerapl] Add extractor by milkknife
- [extractor/amazon] Add AmazonReviews extractor by bashonly
- [extractor/netverse] Add NetverseSearch extractor by HobbyistDev
- [extractor/vimeo] Add VimeoProIE by bashonly, pukkandan
- [extractor/xiami] Remove extractors by synthpop123
- [extractor/youtube] Add piped.video by Bnyro
- [extractor/youtube] Consider language in format de-duplication
- [extractor/youtube] Extract DRC formats
- [extractor/youtube] Fix ytuser:
- [extractor/youtube] Fix bug in handling of music URLs
- [extractor/youtube] Subtitles cannot be translated to und
- [extractor/youtube:tab] Extract metadata from channel items by coletdjnz
- [extractor/ARD] Add vtt subtitles by CapacitorSet
- [extractor/ArteTV] Extract chapters by bashonly, iw0nderhow
- [extractor/bandcamp] Add album_artist by stelcodes
- [extractor/bilibili] Fix --no-playlist for anthology
- [extractor/bilibili] Improve _VALID_URL by skbeh
- [extractor/biliintl:series] Make partial download of series faster
- [extractor/BiliLive] Fix extractor
- [extractor/brightcove] Add BrightcoveNewBaseIE and fix embed extraction
- [extractor/cda] Support premium and misc improvements by selfisekai
- [extractor/ciscowebex] Support password-protected videos by damianoamatruda
- [extractor/curiositystream] Fix auth by mnn
- [extractor/embedly] Handle vimeo embeds
- [extractor/fifa] Fix Preplay extraction by dirkf
- [extractor/foxsports] Fix extractor by bashonly
- [extractor/gronkh] Fix _VALID_URL by muddi900
- [extractor/hotstar] Improve format metadata
- [extractor/iqiyi] Fix Iq JS regex by bashonly
- [extractor/la7] Improve extractor by nixxo
- [extractor/mediaset] Better embed detection and error messages by nixxo
- [extractor/mixch] Support --wait-for-video
- [extractor/naver] Improve _VALID_URL for NaverNowIE by bashonly
- [extractor/naver] Treat fan subtitles as separate language
- [extractor/netverse] Extract comments by HobbyistDev
- [extractor/nosnl] Add support for /video by HobbyistDev
- [extractor/odnoklassniki] Extract subtitles by bashonly
- [extractor/pinterest] Fix extractor by bashonly
- [extractor/plutotv] Fix videos with non-zero start by digitall
- [extractor/polskieradio] Adapt to next.js redesigns by selfisekai
- [extractor/reddit] Add vcodec to fallback format by chengzhicn
- [extractor/reddit] Extract crossposted media by bashonly
- [extractor/reddit] Extract video embeds in text posts by bashonly
- [extractor/rutube] Support private videos by mexus
- [extractor/sibnet] Separate from VKIE
- [extractor/slideslive] Fix extractor by Grub4K, bashonly
- [extractor/slideslive] Support embeds and slides by Grub4K, bashonly, pukkandan
- [extractor/soundcloud] Support user permalink by nosoop
- [extractor/spankbang] Fix extractor by JChris246
- [extractor/stv] Detect DRM
- [extractor/swearnet] Fix description bug
- [extractor/tencent] Fix geo-restricted video by elyse0
- [extractor/tiktok] Fix subs, DouyinIE, improve _VALID_URL by bashonly
- [extractor/tiktok] Update _VALID_URL, add api_hostname arg by bashonly
- [extractor/tiktok] Update API hostname by redraskal
- [extractor/twitcasting] Fix...
New in yt-dlp 2022.11.11 (Nov 11, 2022)
- Merge youtube-dl: Upto commit/de39d12
- Backport SSL configuration from Python 3.10 by coletdjnz
- Do more processing in --flat-playlist
- Fix --list options not implying -s in some cases by Grub4K, bashonly
- Fix end time of clips by cruel-efficiency
- Fix for formats=None
- Write API params in debug head
- [outtmpl] Ensure ASCII in json and add option for Unicode
- [SponsorBlock] Add type field, obey --retry-sleep extractor, relax duration check for large segments
- [SponsorBlock] Support chapter category by ajayyy, pukkandan
- [ThumbnailsConvertor] Fix filename escaping by dirkf, pukkandan
- [ModifyChapters] Handle the entire video being marked for removal
- [embedthumbnail] Fix thumbnail name in mp3 by How-Bout-No
- [downloader/fragment] HLS download can continue without first fragment
- [cookies] Improve LenientSimpleCookie by Grub4K
- [jsinterp] Improve separating regex
- [extractor/common] Fix fatal=False for _search_nuxt_data
- [extractor/common] Improve _generic_title
- [extractor/common] Fix json_ld type checks by Grub4K
- [extractor/generic] Separate embed extraction into own function
- [extractor/generic:quoted-html] Add extractor by coletdjnz, pukkandan
- [extractor/unsupported] Raise error on known DRM-only sites by coletdjnz
- [utils] js_to_json: Improve escape handling by Grub4K
- [utils] strftime_or_none: Workaround Python bug on Windows
- [utils] traverse_obj: Always return list when branching, allow re.Match objects by Grub4K
- [build, test] Harden workflows' security by sashashura
- [build] py2exe: Migrate to freeze API by SG5, pukkandan
- [build] Create armv7l and aarch64 releases by MrOctopus, pukkandan
- [build] Make linux binary truly standalone using conda by mlampe
- [build] Replace set-output with GITHUB_OUTPUT by Lesmiscore
- [update] Use error code 100 for update errors
- [compat] Fix shutils.move in restricted ACL mode on BSD by ClosedPort22, pukkandan
- [docs, devscripts] Document pyinst's argument passthrough by jahway603
- [test] Allow extract_flat in download tests by coletdjnz, pukkandan
- [cleanup] Misc fixes and cleanup by pukkandan, Alienmaster
- [extractor/aeon] Add extractor by DoubleCouponDay
- [extractor/agora] Add extractors by selfisekai
- [extractor/camsoda] Add extractor by zulaport
- [extractor/cinetecamilano] Add extractor by timendum
- [extractor/deuxm] Add extractors by CrankDatSouljaBoy
- [extractor/genius] Add extractors by bashonly
- [extractor/japandiet] Add extractors by Lesmiscore
- [extractor/listennotes] Add extractor by lksj, pukkandan
- [extractor/nos.nl] Add extractor by HobbyistDev
- [extractor/oftv] Add extractors by DoubleCouponDay
- [extractor/podbayfm] Add extractor by schnusch
- [extractor/qingting] Add extractor by bashonly, changren-wcr
- [extractor/screen9] Add extractor by tpikonen
- [extractor/swearnet] Add extractor by HobbyistDev
- [extractor/YleAreena] Add extractor by pukkandan, vitkhab
- [extractor/zeenews] Add extractor by m4tu4g, pukkandan
- [extractor/youtube:tab] Update tab handling for redesign by coletdjnz, pukkandan
- Channel URLs download all uploads of the channel as multiple playlists, separated by tab
- [extractor/youtube] Differentiate between no comments and disabled comments by coletdjnz
- [extractor/youtube] Extract concurrent_view_count for livestreams by coletdjnz
- [extractor/youtube] Fix duration for premieres by nosoop
- [extractor/youtube] Fix live_status by coletdjnz, pukkandan
- [extractor/youtube] Ignore incomplete data error for comment replies by coletdjnz
- [extractor/youtube] Improve chapter parsing from description
- [extractor/youtube] Mark videos as fully watched by bsun0000
- [extractor/youtube] Update piped instances by Generator
- [extractor/youtube] Update playlist metadata extraction for new layout by coletdjnz
- [extractor/youtube:tab] Fix video metadata from tabs by coletdjnz
- [extractor/youtube:tab] Let approximate_date return timestamp
- [extractor/americastestkitchen] Fix extractor by bashonly
- [extractor/bbc] Support onion domains by DoubleCouponDay
- [extractor/bilibili] Add chapters and misc cleanup by lockmatrix, pukkandan
- [extractor/bilibili] Fix BilibiliIE and Bangumi extractors by lockmatrix, pukkandan
- [extractor/bitchute] Better error for geo-restricted videos by flashdagger
- [extractor/bitchute] Improve BitChuteChannelIE by flashdagger, pukkandan
- [extractor/bitchute] Simplify extractor by flashdagger, pukkandan
- [extractor/cda] Support login through API by selfisekai
- [extractor/crunchyroll] Beta is now the only layout by tejing1
- [extractor/detik] Avoid unnecessary extraction
- [extractor/doodstream] Remove extractor
- [extractor/dplay] Add MotorTrendOnDemand extractor by bashonly
- [extractor/epoch] Support videos without data-trailer by gibson042, pukkandan
- [extractor/fox] Extract thumbnail by vitkhab
- [extractor/foxnews] Add FoxNewsVideo extractor
- [extractor/hotstar] Add season support by m4tu4g
- [extractor/hotstar] Refactor v1 API calls
- [extractor/iprima] Make json+ld non-fatal by bashonly
- [extractor/iq] Increase phantomjs timeout
- [extractor/kaltura] Support playlists by jwoglom, pukkandan
- [extractor/lbry] Authenticate with cookies by flashdagger
- [extractor/livestreamfails] Support posts by invertico
- [extractor/mlb] Add MLBArticle extractor by HobbyistDev
- [extractor/mxplayer] Improve extractor by m4tu4g
- [extractor/niconico] Always use HTTPS for requests
- [extractor/nzherald] Support new video embed by coletdjnz
- [extractor/odnoklassniki] Support boosty.to embeds by Lesmiscore, megapro17, pukkandan
- [extractor/paramountplus] Update API token by bashonly
- [extractor/reddit] Add fallback format by bashonly
- [extractor/redgifs] Fix extractors by bashonly, pukkandan
- [extractor/redgifs] Refresh auth token for 401 by endotronic, pukkandan
- [extractor/rumble] Add HLS formats and extract more metadata by flashdagger
- [extractor/sbs] Improve _VALID_URL by bashonly
- [extractor/skyit] Fix extractors by nixxo
- [extractor/stripchat] Fix hostname for HLS stream by zulaport
- [extractor/stripchat] Improve error message by freezboltz
- [extractor/telegram] Add playlist support and more metadata by bashonly, bsun0000
- [extractor/Tnaflix] Fix for HTTP 500 by SG5, pukkandan
- [extractor/tubitv] Better DRM detection by [bashonly](https://gi...
New in yt-dlp 2022.10.04 (Oct 4, 2022)
- Allow a set to be passed as download_archive by pukkandan, bashonly
- Allow open ranges for time ranges by Lesmiscore
- Allow plugin extractors to replace the built-in ones
- Don't download entire video when no matching --download-sections
- Fix --config-location -
- Improve 5736d79
- Fix for when playlists don't have webpage_url
- Support environment variables in --ffmpeg-location
- Workaround libc_ver not be available on Windows Store version of Python
- [outtmpl] Curly braces to filter keys by pukkandan
- [outtmpl] Make %s work in strfformat for all systems
- [jsinterp] Workaround operator associativity issue
- [cookies] Let _get_mac_keyring_password fail gracefully
- [cookies] Parse cookies leniently by Grub4K
- [phantomjs] Fix bug in 587021c by elyse0
- [downloader/aria2c] Fix filename containing leading whitespace by std-move
- [downloader/ism] Support ec-3 codec by nixxo
- [extractor] Fix fatal=False in RetryManager
- [extractor] Improve json-ld extraction
- [extractor] Make _search_json able to parse lists
- [extractor] Escape % in representation_id of m3u8
- [extractor/generic] Pass through referer from json-ld
- [utils] base_url: URL paths can contain & by elyse0
- [utils] js_to_json: Improve
- [utils] Popen.run: Fix default return in binary mode
- [utils] traverse_obj: Rewrite, document and add tests by Grub4K
- [devscripts] make_lazy_extractors: Fix for Docker by josanabr
- [docs] Misc Improvements
- [cleanup] Misc fixes and cleanup by pukkandan, gamer191
- [extractor/24tv.ua] Add extractors by coletdjnz
- [extractor/BerufeTV] Add extractor by Fabi019
- [extractor/booyah] Add extractor by HobbyistDev, elyse0
- [extractor/bundesliga] Add extractor by Fabi019
- [extractor/GoPlay] Add extractor by CNugteren, basrieter, jeroenj
- [extractor/iltalehti] Add extractor by tpikonen
- [extractor/IsraelNationalNews] Add extractor by Bobscorn
- [extractor/mediaworksnzvod] Add extractor by coletdjnz
- [extractor/MicrosoftEmbed] Add extractor by DoubleCouponDay
- [extractor/nbc] Add NBCStations extractor by bashonly
- [extractor/onenewsnz] Add extractor by coletdjnz
- [extractor/prankcast] Add extractor by HobbyistDev, columndeeply
- [extractor/Smotrim] Add extractor by Lesmiscore, nikita-moor
- [extractor/tencent] Add Iflix extractor by elyse0
- [extractor/unscripted] Add extractor by HobbyistDev
- [extractor/adobepass] Add MSO AlticeOne (Optimum TV) by CplPwnies
- [extractor/youtube] Download post_live videos from start by Lesmiscore, pukkandan
- [extractor/youtube] Add support for Shorts audio pivot feed by coletdjnz, pukkandan
- [extractor/youtube] Detect lazy-load-for-videos embeds
- [extractor/youtube] Do not warn on duplicate chapters
- [extractor/youtube] Fix video like count extraction by coletdjnz
- [extractor/youtube] Support changing extraction language by coletdjnz
- [extractor/youtube:tab] Improve continuation items extraction
- [extractor/youtube:tab] Support reporthistory page
- [extractor/amazonstore] Fix JSON extraction by coletdjnz, pukkandan
- [extractor/amazonstore] Retry to avoid captcha page by Lesmiscore
- [extractor/animeondemand] Remove extractor by TokyoBlackHole
- [extractor/anvato] Fix extractor and refactor by bashonly
- [extractor/artetv] Remove duplicate stream urls by Grub4K
- [extractor/audioboom] Support direct URLs and refactor by pukkandan, tpikonen
- [extractor/bandcamp] Extract uploader_url
- [extractor/bilibili] Add space.bilibili extractors by lockmatrix
- [extractor/BilibiliSpace] Fix extractor and better error message by lockmatrix
- [extractor/BiliIntl] Support uppercase lang in _VALID_URL by coletdjnz
- [extractor/BiliIntlSeries] Fix _VALID_URL
- [extractor/bongacams] Update _VALID_URL by 0xGodspeed
- [extractor/crunchyroll:beta] Improve handling of hardsubs by Grub4K
- [extractor/detik] Generalize extractors by HobbyistDev, coletdjnz
- [extractor/dplay:italy] Add default authentication by Timendum
- [extractor/heise] Fix extractor by coletdjnz
- [extractor/holodex] Fix _VALID_URL by LiviaMedeiros
- [extractor/hrfensehen] Fix extractor by snapdgn
- [extractor/hungama] Add subtitle by GautamMKGarg, pukkandan
- [extractor/instagram] Extract more metadata by pritam20ps05
- [extractor/JWPlatform] Fix extractor by coletdjnz
- [extractor/malltv] Fix video_id extraction by HobbyistDev
- [extractor/MLBTV] Detect live streams
- [extractor/motorsport] Support native embeds
- [extractor/Mxplayer] Fix extractor by itachi-19
- [extractor/nebula] Add nebula.tv by tannertechnology
- [extractor/nfl] Fix extractor by bashonly
- [extractor/ondemandkorea] Update jw_config regex by julien-hadleyjack
- [extractor/paramountplus] Better DRM detection by bashonly
- [extractor/patreon] Sort formats
- [extractor/rcs] Fix embed extraction by coletdjnz
- [extractor/redgifs] Fix extractor by jhwgh1968
- [extractor/rutube] Fix _EMBED_REGEX by coletdjnz
- [extractor/RUTV] Fix warnings for livestreams by Lesmiscore
- [extractor/soundcloud:search] More metadata in --flat-playlist by SuperSonicHub1
- [extractor/telegraaf] Use mobile GraphQL API endpoint by coletdjnz
- [extractor/tennistv] Fix timestamp by zenerdi0de
- [extractor/tiktok] Fix TikTokIE by bashonly
- [extractor/triller] Fix auth token by bashonly
- [extractor/trovo] Fix extractors by Mehavoid
- [extractor/tv2] Support new url format by tobi1805
- [extractor/web.archive:youtube] Fix _YT_INITIAL_PLAYER_RESPONSE_RE
- [extractor/wistia] Add support for channels by coletdjnz
- [extractor/wistia] Match IDs in embed URLs by bashonly
- [extractor/wordpress:playlist] Add generic embed extractor by coletdjnz
- [extractor/yandexvideopreview] Update _VALID_URL by Grub4K
- [extractor/zee5] Fix _VALID_URL by m4tu4g
- [extractor/zee5] Generate device ids by freezboltz
New in yt-dlp 2022.09.01 (Sep 1, 2022)
- Add option --use-extractors
- Merge youtube-dl: Upto commit/ed5c44e
- Add yt-dlp version to infojson
- Fix --break-per-url --max-downloads
- Fix bug in --alias
- [cookies] Support firefox container in --cookies-from-browser by bashonly, coletdjnz, pukkandan
- [downloader/external] Smarter detection of executable
- [extractor/generic] Don't return JW player without formats
- [FormatSort] Fix aext for --prefer-free-formats
- [jsinterp] Various improvements by pukkandan, dirkf, elyse0
- [cache] Mechanism to invalidate old cache
- [utils] Add deprecation_warning
- [utils] Add orderedSet_from_options
- [utils] Popen: Restore LD_LIBRARY_PATH when using PyInstaller by Lesmiscore
- [build] make tar should not follow DESTDIR by satan1st
- [build] Update pyinstaller by shirt-dev
- [test] Fix test_youtube_signature
- [cleanup] Misc fixes and cleanup by DavidH-2022, MrRawes, pukkandan
- [extractor/epoch] Add extractor by tejasa97
- [extractor/eurosport] Add extractor by HobbyistDev
- [extractor/IslamChannel] Add extractors by Lesmiscore
- [extractor/newspicks] Add extractor by Lesmiscore
- [extractor/triller] Add extractor by bashonly
- [extractor/VQQ] Add extractors by elyse0
- [extractor/youtube] Improvements to nsig extraction
- [extractor/youtube] Fix bug in format sorting
- [extractor/youtube] Update iOS Innertube clients by SamantazFox
- [extractor/youtube] Use device-specific user agent by coletdjnz
- [extractor/youtube] Add --compat-option no-youtube-prefer-utc-upload-date by coletdjnz
- [extractor/arte] Bug fix by cgrigis
- [extractor/bilibili] Extract flac with premium account by jackyyf
- [extractor/BiliBiliSearch] Don't sort by date
- [extractor/BiliBiliSearch] Fix infinite loop
- [extractor/bitchute] Mark errors as expected
- [extractor/crunchyroll:beta] Use anonymous access by tejing1
- [extractor/huya] Fix stream extraction by ohaiibuzzle
- [extractor/medaltv] Fix extraction by xenova
- [extractor/mediaset] Fix embed extraction
- [extractor/mixcloud] All formats are audio-only
- [extractor/rtbf] Fix jwt extraction by elyse0
- [extractor/screencastomatic] Support --video-password by shreyasminocha
- [extractor/stripchat] Don't modify input URL by dfaker
- [extractor/uktv] Improve _VALID_URL by dirkf
- [extractor/vimeo:user] Fix _VALID_URL
New in yt-dlp 2022.08.19 (Aug 19, 2022)
- Fix bug in --download-archive
- [jsinterp] Fix for new youtube players and related improvements by dirkf, pukkandan
- You may need to --rm-cache after update for this to work
- [phantomjs] Add function to execute JS without a DOM by MinePlayersPE, pukkandan
- [build] Exclude devscripts from installs by Lesmiscore
- [cleanup] Misc fixes and cleanup
- [extractor/youtube] Add fallback to phantomjs for nsig
- [extractor/youtube] Fix error reporting of "Incomplete data"
- [extractor/youtube] Improve format sorting for IOS formats
- [extractor/youtube] Improve signature caching
- [extractor/instagram] Fix extraction by bashonly, pritam20ps05
- [extractor/rai] Minor fix by nixxo
- [extractor/rtbf] Fix stream extractor by elyse0
- [extractor/SovietsCloset] Fix extractor by ChillingPepper
- [extractor/zattoo] Fix Zattoo resellers by goggle
New in yt-dlp 2022.08.14 (Aug 15, 2022)
- Merge youtube-dl: Upto commit/d231b56
- [jsinterp] Handle new youtube signature functions
- [jsinterp] Truncate error messages
- [extractor] Fix format sorting of channels
- [ffmpeg] Disable avconv unless --prefer-avconv
- [ffmpeg] Smarter detection of ffprobe filename
- [patreon] Ignore erroneous media attachments by coletdjnz
- [postprocessor/embedthumbnail] Detect libatomicparsley.so
- [ThumbnailsConvertor] Fix conversion after fixup_webp
- [utils] Fix get_compatible_ext
- [build] Fix changelog
- [update] Set executable bit-mask by pukkandan, Lesmiscore
- [devscripts] Fix import
- [docs] Consistent use of e.g. by Lesmiscore
- [cleanup] Misc fixes and cleanup
- [extractor/moview] Add extractor by HobbyistDev
- [extractor/parler] Add extractor by palewire
- [extractor/truth] Add extractor by palewire
- [extractor/aenetworks] Add formats parameter by jacobtruman
- [extractor/crunchyroll] Improve _VALID_URLs
- [extractor/doodstream] Add wf domain by aldoridhoni
- [extractor/facebook] Add reel support by bashonly
- [extractor/MLB] New extractor by ischmidt20
- [extractor/rai] Misc fixes by nixxo
- [extractor/toggo] Improve _VALID_URL by masta79
- [extractor/tubitv] Extract additional formats by shirt-dev
- [extractor/zattoo] Potential fix for resellers
New in yt-dlp 2022.08.08 (Aug 9, 2022)
- Remove Python 3.6 support
- Determine merge container better by pukkandan, selfisekai
- Framework for embed detection by coletdjnz, pukkandan
- Merge youtube-dl: Upto commit/adb5294
- --compat-option no-live-chat should disable danmaku
- Fix misleading DRM message
- Import ctypes only when necessary
- Minor bugfixes by pukkandan
- Reject entire playlists faster with --match-filter by pukkandan
- Remove filtered entries from -J
- Standardize retry mechanism by pukkandan
- Validate --merge-output-format
- [downloader] Add average speed to final progress line
- [extractor] Add field audio_channels
- [extractor] Support multiple archive ids for one video
- [ffmpeg] Set ffmpeg_location in a contextvar
- [FFmpegThumbnailsConvertor] Fix conversion from GIF
- [MetadataParser] Don't set None when the field didn't match
- [outtmpl] Smarter replacing of unsupported characters by pukkandan
- [outtmpl] Treat empty values as None in filenames
- [utils] sanitize_open: Allow any IO stream as stdout
- [build, devscripts] Add devscript to set a build variant
- [build] Improve build process by shirt-dev
- [build] Update pyinstaller
- [devscripts] Create utils and refactor
- [docs] Clarify best*
- [docs] Fix bug report issue template
- [docs] Fix capitalization in references by christoph-heinrich
- [cleanup, mhtml] Use imghdr
- [cleanup, utils] Consolidate known media extensions
- [cleanup] Misc fixes and cleanup
- [extractor/angel] Add extractor by AxiosDeminence
- [extractor/dplay] Add MotorTrend extractor by Sipherdrakon
- [extractor/harpodeon] Add extractor by eren-kemer
- [extractor/holodex] Add extractor by pukkandan, sqrtNOT
- [extractor/kompas] Add extractor by HobbyistDev
- [extractor/rai] Add raisudtirol extractor by nixxo
- [extractor/tempo] Add extractor by HobbyistDev
- [extractor/youtube] Fixes for third party client detection by coletdjnz
- [extractor/youtube] Add live_status=post_live by lazypete365
- [extractor/youtube] Extract more format info
- [extractor/youtube] Parse translated subtitles only when requested
- [extractor/youtube, extractor/twitch] Allow waiting for channels to become live
- [extractor/youtube, webvtt] Extract auto-subs from livestream VODs by fstirlitz, pukkandan
- [extractor/AbemaTVTitle] Implement paging by Lesmiscore
- [extractor/archiveorg] Improve handling of formats by coletdjnz, pukkandan
- [extractor/arte] Fix title extraction
- [extractor/arte] Move to v2 API by fstirlitz, pukkandan
- [extractor/bbc] Fix news articles by ajj8
- [extractor/camtasia] Separate into own extractor by coletdjnz
- [extractor/cloudflarestream] Fix video_id padding by haobinliang
- [extractor/crunchyroll] Fix conversion of thumbnail from GIF by pukkandan
- [extractor/crunchyroll] Handle missing metadata correctly by Burve, pukkandan
- [extractor/crunchyroll:beta] Extract timestamp and fix tests by tejing1
- [extractor/crunchyroll:beta] Use streams API by tejing1
- [extractor/doodstream] Support more domains by Galiley
- [extractor/ESPN] Extract duration by ischmidt20
- [extractor/FIFA] Change API endpoint by Bricio, yashkc2025
- [extractor/globo:article] Remove false positives by Bricio
- [extractor/Go] Extract timestamp by ischmidt20
- [extractor/hidive] Fix cookie login when netrc is also given by winterbird-code
- [extractor/html5] Separate into own extractor by coletdjnz, pukkandan
- [extractor/ina] Improve extractor by elyse0
- [extractor/NaverNow] Change endpoint by ping
- [extractor/ninegag] Extract uploader by DjesonPV
- [extractor/NovaPlay] Fix extractor by Bojidarist
- [extractor/orf:radio] Rewrite extractors
- [extractor/patreon] Fix and improve extractors by coletdjnz, pukkandan
- [extractor/rai] Fix RaiNews extraction by nixxo
- [extractor/redbee] Unify and update extractors by elyse0
- [extractor/stripchat] Fix _VALID_URL by freezboltz
- [extractor/tubi] Exclude playlists from playlist entries by sqrtNOT
- [extractor/tviplayer] Improve _VALID_URL by HobbyistDev
- [extractor/twitch] Extract chapters for single chapter VODs by mpeter50
- [extractor/vgtv] Support tv.vg.no by sqrtNOT
- [extractor/vidio] Support embed link by HobbyistDev
- [extractor/vk] Fix extractor by Mehavoid
- [extractor/WASDTV:record] Fix _VALID_URL
- [extractor/xfileshare] Add Referer by Galiley
- [extractor/YahooJapanNews] Fix extractor by Lesmiscore
- [extractor/yandexmusic] Extract higher quality format
- [extractor/zee5] Update Device ID by m4tu4g
New in yt-dlp 2022.07.18 (Jul 18, 2022)
- Allow users to specify encoding in each config files by Lesmiscore
- Discard infodict from memory if no longer needed
- Do not allow extractors to return None
- Do not load system certificates when certifi is used
- Fix rounding of integers in format table
- Improve chapter sanitization
- Skip some fixup if remux/recode is needed by Lesmiscore
- Support --no-progress for --wait-for-video
- Fix bug in 612f2be
- [outtmpl] Add alternate form h for HTML escaping
- [aes] Add multiple padding modes in CBC by elyse0
- [extractor/common] Passthrough errnote=False to parsers
- [extractor/generic] Remove HEAD request
- [http] Ensure the file handle is always closed
- [ModifyChapters] Modify duration in infodict
- [options] Fix aliases to --config-location
- [utils] Fix get_domain
- [build] Consistent order for lazy extractors by lamby
- [build] Fix architecture suffix of executables by odo2063
- [build] Improve setup.py
- [update] Do not check _update_spec when up to date
- [update] Prepare to remove Python 3.6 support
- [compat] Let PyInstaller detect _legacy module
- [devscripts/update-formulae] Do not change dependency section
- [test] Split download tests so they can be more easily run in CI
- [docs] Improve docstring of download_ranges by FirefoxMetzger
- [docs] Improve issue templates
- [build] Fix bug in 6d916fe
- [cleanup, utils] Refactor parse_codecs
- [cleanup] Misc fixes and cleanup
- [extractor/acfun] Add extractors by lockmatrix
- [extractor/Audiodraft] Add extractors by Ashish0804, fstirlitz
- [extractor/cellebrite] Add extractor by HobbyistDev
- [extractor/detik] Add extractor by HobbyistDev
- [extractor/hytale] Add extractor by llamasblade, pukkandan
- [extractor/liputan6] Add extractor by HobbyistDev
- [extractor/mocha] Add extractor by HobbyistDev
- [extractor/rtl.lu] Add extractor by HobbyistDev
- [extractor/rtvsl] Add extractor by iw0nderhow, pukkandan
- [extractor/StarTrek] Add extractor by scy
- [extractor/syvdk] Add extractor by misaelaguayo
- [extractor/theholetv] Add extractor by dosy4ev
- [extractor/TubeTuGraz] Add extractor by Ferdi265, pukkandan
- [extractor/tviplayer] Add extractor by HobbyistDev
- [extractor/wetv] Add extractors by elyse0
- [extractor/wikimedia] Add extractor by EhtishamSabir, pukkandan
- [extractor/youtube] Fix duration check for post-live manifestless mode
- [extractor/youtube] More metadata for storyboards by ftk
- [extractor/bigo] Fix extractor by Lesmiscore
- [extractor/BiliIntl] Fix subtitle extraction by MinePlayersPE
- [extractor/crunchyroll] Improve _VALID_URL
- [extractor/fifa] Fix extractor by ischmidt20
- [extractor/instagram] Fix post/story extractors by pritam20ps05, pukkandan
- [extractor/iq] Set language correctly for Korean subtitles
- [extractor/MangoTV] Fix subtitle languages
- [extractor/Netverse] Improve playlist extractor by HobbyistDev
- [extractor/philharmoniedeparis] Fix extractor by sqrtNOT
- [extractor/Trovo] Fix extractor by u-spec-png
- [extractor/twitch] Support storyboards for VODs by ftk
- [extractor/WatchESPN] Improve _VALID_URL by IONECarter, dirkf
- [extractor/WSJArticle] Fix video id extraction by sqrtNOT
- [extractor/Ximalaya] Fix extractors by lockmatrix
- [cleanup, extractor/youtube] Fix tests by sheerluck
New in yt-dlp 2022.06.29 (Jun 29, 2022)
- Fix --downloader native
- Fix section_end of clips
- Fix playlist error handling
- Sanitize chapters
- [extractor] Fix _create_request when headers is None
- [extractor] Fix empty BaseURL in MPD
- [ffmpeg] Write full output to debug on error
- [hls] Warn user when trying to download live HLS
- [options] Fix parse_known_args for --
- [utils] Fix inconsistent default handling between HTTP and HTTPS requests by coletdjnz
- [build] Draft release until complete
- [build] Fix release tag commit
- [build] Standalone x64 builds for MacOS 10.9 by StefanLobbenmeier
- [update] Ability to set a maximum version for specific variants
- [compat] Fix compat.WINDOWS_VT_MODE
- [compat] Remove deprecated functions from core code
- [compat] Remove more functions
- [cleanup, extractor] Reduce direct use of _downloader
- [cleanup] Consistent style for file heads
- [cleanup] Fix some typos by crazymoose77756
- [cleanup] Misc fixes and cleanup
- [extractor/Scrolller] Add extractor by LunarFang416
- [extractor/ViMP] Add playlist extractor by FestplattenSchnitzel
- [extractor/fuyin] Add extractor by HobbyistDev
- [extractor/livestreamfails] Add extractor by nomevi
- [extractor/premiershiprugby] Add extractor by HobbyistDev
- [extractor/steam] Add broadcast extractor by HobbyistDev
- [extractor/youtube] Mark videos as fully watched by Brett824
- [extractor/CWTV] Extract thumbnail by ischmidt20
- [extractor/ViMP] Add thumbnail and support more sites by FestplattenSchnitzel
- [extractor/dropout] Support cookies and login only as needed by pingiun, pukkandan
- [extractor/ertflix] Improve _VALID_URL
- [extractor/lbry] Use HEAD request for redirect URL by flashdagger
- [extractor/mediaset] Improve _VALID_URL
- [extractor/npr] Implement e50c350 differently
- [extractor/tennistv] Rewrite extractor by pukkandan, zenerdi0de
New in yt-dlp 2022.06.22.1 (Jun 22, 2022)
- Deprecate support for Python 3.6
- Add option --download-sections to download video partially
- Chapter regex and time ranges are accepted (Eg: --download-sections *1:10-2:20)
- Add option --alias
- Add option --lazy-playlist to process entries as they are received
- Add option --retry-sleep
- Add slicing notation to --playlist-items
- Adds support for negative indices and step
- Add -I as alias for --playlist-index
- Makes --playlist-start, --playlist-end, --playlist-reverse, --no-playlist-reverse redundant
- --config-location - to provide options interactively
- [build] Add Linux standalone builds
- [update] Self-restart after update
- Merge youtube-dl: Upto commit/8a158a9
- Add --no-update
- Allow extractors to specify section_start/end for clips
- Do not print progress to stderr with -q
- Ensure pre-processor errors do not block video download
- Fix --simulate --max-downloads
- Improve error handling of bad config files
- Return an error code if update fails
- Fix bug in 3a408f9
- [ExtractAudio] Allow conditional conversion
- [ModifyChapters] Fix repeated removal of small segments
- [ThumbnailsConvertor] Allow conditional conversion
- [cookies] Detect profiles for cygwin/BSD by moench-tegeder
- [dash] Show fragment count with --live-from-start by flashdagger
- [extractor] Add _search_json by coletdjnz, pukkandan
- [extractor] Add default parameter to _search_json by coletdjnz, pukkandan
- [extractor] Add dev option --load-pages
- [extractor] Handle json_ld with multiple @types
- [extractor] Import _ALL_CLASSES lazily
- [extractor] Recognize src attribute from HTML5 media elements by Lesmiscore
- [extractor/generic] Revert e6ae51c
- [f4m] Bugfix
- [ffmpeg] Check version lazily
- [jsinterp] Some optimizations and refactoring by dirkf, pukkandan
- [utils] Improve performance using functools.cache
- [utils] Send HTTP/1.1 ALPN extension by coletdjnz
- [utils] ExtractorError: Fix exc_info
- [utils] ISO3166Utils: Add EU and AP
- [utils] Popen: Refactor to use contextmanager
- [utils] locked_file: Fix for PyPy on Windows
- [update] Expose more functionality to API
- [update] Use .git folder to distinguish source/unknown
- [build] Fix updating homebrew formula
- [compat] Add functools.cached_property
- [test] Fix FakeYDL signatures by coletdjnz
- [docs] Improvements
- [cleanup, ExtractAudio] Refactor
- [cleanup, downloader] Refactor report_progress
- [cleanup, extractor] Refactor _download_... methods
- [cleanup, extractor] Rename extractors.py to _extractors.py
- [cleanup, utils] Don't use kwargs for format_field
- [cleanup, build] Refactor
- [cleanup, docs] Re-indent "Usage and Options" section
- [cleanup] Deprecate YoutubeDL.parse_outtmpl
- [cleanup] Misc fixes and cleanup by Lesmiscore, MrRawes, christoph-heinrich, flashdagger, gamer191, kwconder, pukkandan
- [extractor/DailyWire] Add extractors by HobbyistDev, pukkandan
- [extractor/fourzerostudio] Add extractors by Lesmiscore
- [extractor/GoogleDrive] Add folder extractor by evansp, pukkandan
- [extractor/MirrorCoUK] Add extractor by LunarFang416, pukkandan
- [extractor/atscaleconfevent] Add extractor by Ashish0804
- [extractor/freetv] Add extractor by elyse0
- [extractor/ixigua] Add Extractor by HobbyistDev
- [extractor/kicker.de] Add extractor by HobbyistDev
- [extractor/netverse] Add extractors by HobbyistDev, pukkandan
- [extractor/playsuisse] Add extractor by pukkandan, sbor23
- [extractor/substack] Add extractor by elyse0
- [extractor/youtube] Support downloading clips
- [extractor/youtube] Add innertube_host and innertube_key extractor args by coletdjnz
- [extractor/youtube] Add warning for PostLiveDvr
- [extractor/youtube] Bring back _extract_chapters_from_description
- [extractor/youtube] Extract comment_count from webpage
- [extractor/youtube] Fix :ytnotifications extractor by coletdjnz
- [extractor/youtube] Fix initial player response extraction by coletdjnz, pukkandan
- [extractor/youtube] Fix live chat for videos with content warning by coletdjnz
- [extractor/youtube] Make signature extraction non-fatal
- [extractor/youtube:tab] Detect videoRenderer in _post_thread_continuation_entries
- [extractor/BiliIntl] Fix metadata extraction
- [extractor/BiliIntl] Fix subtitle extraction by HobbyistDev
- [extractor/FranceCulture] Fix extractor by aurelg, pukkandan
- [extractor/PokemonSoundLibrary] Remove extractor by Lesmiscore
- [extractor/StreamCZ] Fix extractor by adamanldo, dirkf
- [extractor/WatchESPN] Support free videos and BAM_DTC by ischmidt20
- [extractor/animelab] Remove extractor by gamer191
- [extractor/bloomberg] Change playback endpoint by m4tu4g
- [extractor/ccc] Extract view_count by vkorablin
- [extractor/crunchyroll:beta] Fix extractor after API change by Burve, tejing1
- [extractor/curiositystream] Get auth_token from cookie by mnn
- [extractor/digitalconcerthall] Fix extractor by ZhymabekRoman
- [extractor/dropbox] Extract the correct mountComponent
- [extractor/dropout] Login is not mandatory
- [extractor/duboku] Fix for hostname change by mozbugbox
- [extractor/espn] Add WatchESPN extractor by ischmidt20, pukkandan
- [extractor/expressen] Fix extractor by aejdl
- [extractor/foxnews] Update embed extraction by elyse0
- [extractor/ina] Fix extractor by elyse0
- [extractor/iwara:user] Make paging better by Lesmiscore
- [extractor/jwplatform] Look for data-video-jw-id
- [extractor/lbry] Update livestream API by flashdagger
- [extractor/mediaset] Improve _VALID_URL
- [extractor/naver] Add navernow extractor by ping
- [extractor/niconico:series] Fix extractor by sqrtNOT
- [extractor/npr] Use stream url from json-ld by r5d
- [extractor/pornhub] Extract uploader_id field by Lesmiscore
- [extractor/radiofrance] Add more radios by bubbleguuum
- [extractor/rumble] Detect JS embed
- [extractor/rumble] Extract subtitles by fstirlitz
- [extractor/southpark] Add southpark.lat extractor by darkxex
- [extractor/spotify:show] Fix extractor
- [extractor/tiktok] Detect embeds
- [extractor/tiktok] Extract SIGI_STATE by dirkf, pukkandan, sulyi
- [extractor/tver] Fix extractor by Lesmiscore
- [extractor/vevo] Fix extractor by Lesmiscore
- [extractor/yahoo:gyao] Fix extractor
- [extractor/zattoo] Fix live streams by miseran
- [extractor/zdf] Improve format sorting by elyse0
New in yt-dlp 2022.05.18 (May 18, 2022)
- Add support for SSL client certificate authentication by coletdjnz, dirkf
- Adds --client-certificate, --client-certificate-key, --client-certificate-password
- Add --match-filter - to interactively ask for each video
- --max-downloads should obey --break-per-input
- Allow use of weaker ciphers with --legacy-server-connect
- Don't imply -s for later stages of -O
- Fix --date today
- Fix --skip-unavailable-fragments
- Fix color in -q -F
- Fix redirect HTTP method handling by coletdjnz
- Improve --clean-infojson
- Remove warning for videos with an empty title
- Run FFmpegFixupM3u8PP for live-streams if needed
- Show name of downloader in verbose log
- [cookies] Allow cookiefile to be a text stream
- [cookies] Report progress when importing cookies
- [downloader/ffmpeg] Specify headers for each URL by elyse0
- [fragment] Do not change chunk-size when --test
- [fragment] Make single thread download work for --live-from-start by Lesmiscore
- [hls] Fix byte_range for EXT-X-MAP fragment by fstirlitz
- [http] Fix retrying on read timeout by coletdjnz
- [ffmpeg] Fix features detection
- [EmbedSubtitle] Enable for more video extensions
- [EmbedThumbnail] Disable thumbnail conversion for mkv by evansp
- [EmbedThumbnail] Do not obey -k
- [EmbedThumbnail] Do not remove id3v1 tags
- [FFmpegMetadata] Remove from metadata
- [FFmpegMetadata] Remove filename from attached info-json
- [FixupM3u8] Obey --hls-prefer-mpegts
- [Sponsorblock] Don't crash when duration is unknown
- [XAttrMetadata] Refactor and document dependencies
- [extractor] Document netrc machines
- [extractor] Update manifest_urls after redirect by elyse0
- [extractor] Update dash manifest_url after redirects by elyse0
- [extractor] Use classmethod/property where possible
- [generic] Refactor _extract_rss
- [utils] is_html: Handle double BOM
- [utils] locked_file: Ignore illegal seek on truncate by jakeogh
- [utils] sanitize_path: Fix when path is empty string
- [utils] write_string: Workaround newline issue in conhost
- [utils] certifi: Make sure the pem file exists
- [utils] Fix WebSocketsWrapper
- [utils] locked_file: Do not give executable bits for newly created files by Lesmiscore
- [utils] YoutubeDLCookieJar: Detect and reject JSON file by Lesmiscore
- [test] Convert warnings into errors and fix some existing warnings by fstirlitz
- [dependencies] Create module with all dependency imports
- [compat] Split into sub-modules by fstirlitz, pukkandan
- [compat] Implement compat.imghdr
- [build] Add make uninstall by MrRawes
- [build] Avoid use of install -D
- [build] Fix Makefile by putnam
- [build] Fix --onedir on macOS
- [build] Add more test-runners
- [cleanup] Deprecate some compat vars by fstirlitz, pukkandan
- [cleanup] Remove unused code paths, extractors, scripts and tests by fstirlitz
- [cleanup] Upgrade syntax (pyupgrade) and sort imports (isort)
- [cleanup, docs, build] Misc fixes
- [BilibiliLive] Add extractor by HE7086, pukkandan
- [Fifa] Add Extractor by Bricio
- [goodgame] Add extractor by nevack
- [gronkh] Add playlist extractors by hatienl0i261299
- [icareus] Add extractor by tpikonen, pukkandan
- [iwara] Add playlist extractors by i6t
- [Likee] Add extractor by hatienl0i261299
- [masters] Add extractor by m4tu4g
- [nebula] Add support for subscriptions by hheimbuerger
- [Podchaser] Add extractors by connercsbn
- [rokfin:search] Add extractor by P-reducible, pukkandan
- [youtube] Add :ytnotifications extractor by krichbanana
- [youtube] Add YoutubeStoriesIE (ytstories:<channel UCID>) by coletdjnz
- [ZingMp3] Add chart and user extractors by hatienl0i261299
- [adn] Update AES key by elyse0
- [adobepass] Allow cookies for authenticating MSO
- [bandcamp] Exclude merch links by Yipten
- [chingari] Fix archiving and tests
- [DRTV] Improve _VALID_URL by vertan
- [facebook] Improve thumbnail extraction by Wikidepia
- [fc2] Stop heatbeating once FFmpeg finishes by Lesmiscore
- [Gofile] Fix extraction and support password-protected links by mehq
- [hotstar, cleanup] Refactor extractors
- [InfoQ] Don't fail on missing audio format by evansp
- [Jamendo] Extract more metadata by evansp
- [kaltura] Update API calls by flashdagger
- [KhanAcademy] Fix extractor by rand-net
- [LCI] Fix extractor by MarwenDallel
- [lrt] Support livestreams by GiedriusS
- [niconico] Set expected_protocol to a public field
- [Niconico] Support 2FA by ekangmonyet
- [Olympics] Fix format extension
- [openrec:movie] Enable fallback for /movie/ URLs
- [PearVideo] Add fallback for formats by hatienl0i261299
- [radiko] Fix extractor by Lesmiscore
- [rai] Add release_year
- [reddit] Prevent infinite loop
- [rokfin] Implement login by P-reducible, pukkandan
- [ruutu] Support hs.fi embeds by tpikonen, pukkandan
- [spotify] Detect iframe embeds by fstirlitz
- [telegram] Fix metadata extraction
- [tmz, cleanup] Update tests by diegorodriguezv
- [toggo] Fix _VALID_URL by ca-za
- [trovo] Update to new API by nyuszika7h
- [TVer] Improve extraction by Lesmiscore
- [twitcasting] Pass headers for each formats by Lesmiscore
- [VideocampusSachsen] Improve extractor by FestplattenSchnitzel
- [vimeo] Fix extractors
- [wat] Fix extraction of multi-language videos and subtitles by elyse0
- [wistia] Fix _VALID_URL by dirkf
- [youtube, cleanup] Minor refactoring by coletdjnz, pukkandan
- [youtube] Added piped instance urls by JordanWeatherby
- [youtube] Deprioritize auto-generated thumbnails
- [youtube] Deprioritize format 22 (often damaged)
- [youtube] Fix episode metadata extraction
- [zee5] Fix extractor by Ashish0804
- [zingmp3, cleanup] Refactor extractors
New in yt-dlp 2022.04.08 (Apr 8, 2022)
- Changelog:
- Use certificates from certifi if installed by coletdjnz
- Treat multiple --match-filters as OR
- File locking improvevemnts:
- Do not lock downloading file on Windows
- Do not prevent download if locking is unsupported
- Do not truncate files before locking by jakeogh, pukkandan
- Fix non-blocking non-exclusive lock
- De-prioritize automatic-subtitles when no --sub-lang is given
- Exit after --dump-user-agent
- Fallback to video-only format when selecting by extension
- Fix --abort-on-error for subtitles
- Fix --no-overwrite for playlist infojson
- Fix --print with --ignore-no-formats when url is None by flashdagger
- Fix --sleep-interval
- Fix --throttled-rate
- Fix autonumber
- Fix case of http_headers
- Fix filepath sanitization in --print-to-file
- Handle float in --wait-for-video
- Ignore mhtml formats from -f mergeall
- Ignore format-specific fields in initial pass of --match-filter
- Protect stdout from unexpected progress and console-title
- Remove Accept-Encoding header from std_headers by coletdjnz
- Remove incorrect warning for --dateafter
- Show warning when all media formats have DRM
- [downloader] Fix invocation of HttpieFD
- [http] Fix #3215
- [http] Reject broken range before request by Lesmiscore, Jules-A, pukkandan
- [fragment] Read downloaded fragments only when needed by Lesmiscore
- [http] Retry on more errors by coletdjnz
- [mhtml] Fix fragments with absolute urls by coletdjnz
- [extractor] Add _perform_login function
- [extractor] Allow control characters inside json
- [extractor] Support merging subtitles with data by coletdjnz
- [generic] Extract subtitles from video.js by Lesmiscore
- [ffmpeg] Cache version data
- [FFmpegConcat] Ensure final directory exists
- [FfmpegMetadata] Write id3v1 tags
- [FFmpegVideoConvertor] Add more formats to --remux-video
- [FFmpegVideoConvertor] Ensure all streams are copied
- [MetadataParser] Validate outtmpl early
- [outtmpl] Fix replacement/default when used with alternate
- [outtmpl] Limit changes during sanitization
- [phantomjs] Fix bug
- [test] Add test_locked_file
- [utils] format_decimal_suffix: Fix for very large numbers by s0u1h
- [utils] traverse_obj: Allow filtering by value
- [utils] Add filter_dict, get_first, try_call
- [utils] ExtractorError: Fix for older python versions
- [utils] WebSocketsWrapper: Allow omitting __enter__ invocation by Lesmiscore
- [docs] Add an .editorconfig file by fstirlitz
- [docs] Clarify the exact BSD license of dependencies by MrRawes
- [docs] Minor improvements by pukkandan, cffswb, danielyli
- [docs] Remove readthedocs
- [build] Add requirements.txt to pip distributions
- [cleanup, postprocessor] Create _download_json
- [cleanup, vimeo] Fix tests
- [cleanup] Misc fixes and minor cleanup
- [cleanup] Use _html_extract_title
- [AfreecaTV] Add AfreecaTVUserIE by hatienl0i261299
- [arte] Add format_note to m3u8 formats
- [azmedien] Add TVO Online to supported hosts by 1-Byte
- [BanBye] Add extractor by mehq
- [bilibili] Fix extraction of title with quotes by dzek69
- [Craftsy] Add extractor by Bricio
- [Cybrary] Add extractor by aaearon
- [Huya] Add extractor by hatienl0i261299
- [ITProTV] Add extractor by aaearon
- [Jable] Add extractors by mehq
- [LastFM] Add extractors by mehq
- [Moviepilot] Add extractor by panatexxa
- [panopto] Add extractors by coletdjnz, kmark
- [PokemonSoundLibrary] Add extractor by Lesmiscore
- [WasdTV] Add extractor by un-def, hatienl0i261299
- [adobepass] Fix Suddenlink MSO by CplPwnies
- [afreecatv] Match new vod url by wlritchi
- [AZMedien] Support tv.telezueri.ch by goggle
- [BiliIntl] Support user-generated videos by wlritchi
- [BRMediathek] Fix VALID_URL
- [crunchyroll:playlist] Implement beta API by tejing1
- [crunchyroll] Fix inheritance
- [daftsex] Fix extractor by Soebb
- [dailymotion] Support geo.dailymotion.com by hatienl0i261299
- [ellentube] Extract subtitles from manifest
- [elonet] Rewrite extractor by Fam0r, pukkandan
- [fptplay] Fix metadata extraction by hatienl0i261299
- [FranceCulture] Support playlists by bohwaz
- [go, viu] Extract subtitles from the m3u8 manifest by fstirlitz
- [Imdb] Improve extractor by hatienl0i261299
- [MangoTV] Improve extractor by hatienl0i261299
- [Nebula] Fix bug in 52efa4b
- [niconico] Fix extraction of thumbnails and uploader (#3266)
- [niconico] Rewrite NiconicoIE by Lesmiscore
- [nitter] Minor fixes and update instance list by foghawk
- [NRK] Extract timestamp by hatienl0i261299
- [openrec] Download archived livestreams by Lesmiscore
- [openrec] Refactor extractors by Lesmiscore
- [panopto] Improve subtitle extraction and support slides by coletdjnz
- [ParamountPlus, CBS] Change VALID_URL by Sipherdrakon
- [ParamountPlusSeries] Support multiple pages by dodrian
- [Piapro] Extract description with break lines by Lesmiscore
- [rai] Fix extraction of http formas by nixxo
- [rumble] unescape title
- [RUTV] Fix format sorting by Lesmiscore
- [ruutu] Detect embeds by tpikonen
- [tenplay] Improve extractor by aarubui
- [TikTok] Fix URLs with user id by hatienl0i261299
- [TikTokVM] Fix redirect to user URL
- [TVer] Fix extractor by Lesmiscore
- [TVer] Support landing page by vvto33
- [twitcasting] Don't return multi_video for archive with single hls manifest by Lesmiscore
- [veo] Fix _VALID_URL
- [Veo] Fix extractor by i6t
- [viki] Don't attempt to modify URLs with signature by nyuszika7h
- [viu] Fix bypass for preview by zackmark29
- [viu] Fixed extractor by zackmark29, pukkandan
- [web.archive:youtube] Make CDX API requests non-fatal by coletdjnz
- [wget] Fix proxy by kikuyan, coletdjnz
- [xnxx] Add xnxx3.com by rozari0
- [youtube] Add new age-gate bypass by zerodytrash, pukkandan
- [youtube] Add extractor-arg to skip auto-translated subs
- [youtube] Avoid false positives when detecting damaged formats
- [youtube] Detect DRM better by shirt
- [youtube] Fix auto-translated automatic captions
- [youtube] Fix pagination of membership tab
- [youtube] Fix uploader for collaborative playlists by coletdjnz
- [youtube] Improve video upload date handling by coletdjnz
- [youtube:api] Prefer minified JSON response by coletdjnz
- [youtube:search] Support hashtag entries by coletdjnz
- [youtube:tab] Fix duration extraction for shorts by coletdjnz
- [youtube:tab] Minor improvements
- [youtube:tab] Return shorts url if video is a short by coletdjnz
- [Zattoo] Fix extractors by goggle
- [Zingmp3] Fix signature by hatienl0i261299
New in yt-dlp 2022.03.08.1 (Mar 8, 2022)
- [cleanup] Refactor __init__.py
- [build] Fix bug
New in yt-dlp 2022.02.04 (Feb 4, 2022)
- [youtube:search] Fix extractor by coletdjnz
- [youtube:search] Add tests
- [twitcasting] Enforce UTF-8 for POST payload by Lesmiscore
- [mediaset] Fix extractor by nixxo
- [websocket] Make syntax error in websockets module non-fatal
New in yt-dlp 2022.02.03 (Feb 3, 2022)
- Merge youtube-dl: Upto commit/78ce962
- Add option --print-to-file
- Make nested --config-locations relative to parent file
- Ensure _type is present in info.json
- Fix --compat-options list-formats
- Fix/improve InAdvancePagedList
- [downloader/ffmpeg] Handle unknown formats better
- [outtmpl] Handle -o "" better
- [outtmpl] Handle hard-coded file extension better
- [extractor] Add convinience function _yes_playlist
- [extractor] Allow non-fatal title extraction
- [extractor] Extract video inside Article json_ld
- [generic] Allow further processing of json_ld URL
- [cookies] Fix keyring selection for unsupported desktops
- [utils] Strip double spaces in clean_html by dirkf
- [aes] Add unpad_pkcs7
- [test] Fix test_youtube_playlist_noplaylist
- [docs,cleanup] Misc cleanup
- [dplay] Add extractors for site changes by Sipherdrakon
- [ertgr] Add extractors by zmousm, dirkf
- [Musicdex] Add extractors by Ashish0804
- [YandexVideoPreview] Add extractor by KiberInfinity
- [youtube] Add extractor YoutubeMusicSearchURLIE
- [archive.org] Ignore unnecessary files
- [Bilibili] Add 8k support by u-spec-png
- [bilibili] Fix extractor, make anthology title non-fatal
- [CAM4] Add thumbnail extraction by alerikaisattera
- [cctv] De-prioritize sample format
- [crunchyroll:beta] Add cookies support by tejing1
- [crunchyroll] Fix login by tejing1
- [doodstream] Fix extractor
- [fc2] Fix extraction by Lesmiscore
- [FFmpegConcat] Abort on --skip-download and download errors
- [Fujitv] Extract metadata and support premium by YuenSzeHong
- [globo] Fix extractor by Bricio
- [glomex] Simplify embed detection
- [GoogleSearch] Fix extractor
- [Instagram] Fix extraction when logged in by MinePlayersPE
- [iq.com] Add VIP support by MinePlayersPE
- [mildom] Fix extractor by lazypete365
- [MySpass] Fix video url processing by trassshhub
- [Odnoklassniki] Improve embedded players extraction by KiberInfinity
- [orf:tvthek] Lazy playlist extraction and obey --no-playlist
- [Pladform] Fix redirection to external player by KiberInfinity
- [ThisOldHouse] Improve Premium URL check by Ashish0804
- [TikTok] Iterate through app versions by MinePlayersPE
- [tumblr] Fix 403 errors and handle vimeo embeds by foghawk
- [viki] Fix "Bad request" for manifest by nyuszika7h
- [Vimm] add recording extractor by alerikaisattera
- [web.archive:youtube] Add ytarchive: prefix and misc cleanup
- [youtube:api] Do not use seek when reading HTTPError response by coletdjnz
- [youtube] Fix n-sig for player e06dea74
- [youtube, cleanup] Misc fixes and cleanup
New in yt-dlp 2022.01.21 (Jan 21, 2022)
- Add option --concat-playlist to concat videos in a playlist
- Allow multiple and nested configuration files
- Add more post-processing stages (after_video, playlist)
- Allow --exec to be run at any post-processing stage (Deprecates --exec-before-download)
- Allow --print to be run at any post-processing stage
- Allow listing formats, thumbnails, subtitles using --print by pukkandan, Zirro
- Add fields video_autonumber, modified_date, modified_timestamp, playlist_count, channel_follower_count
- Add key requested_downloads in the root info_dict
- Write download_archive only after all formats are downloaded
- [FfmpegMetadata] Allow setting metadata of individual streams using meta<n>_ prefix
- Add option --legacy-server-connect by xtkoba
- Allow escaped , in --extractor-args
- Allow unicode characters in info.json
- Check for existing thumbnail/subtitle in final directory
- Don't treat empty containers as None in sanitize_info
- Fix -s --ignore-no-formats --force-write-archive
- Fix live title for multiple formats
- List playlist thumbnails in --list-thumbnails
- Raise error if subtitle download fails
- [cookies] Fix bug when keyring is unspecified
- [ffmpeg] Ignore unknown streams, standardize use of -map 0
- [outtmpl] Alternate form for D and fix suffix's case
- [utils] Add Sec-Fetch-Mode to std_headers
- [utils] Fix format_bytes output for Bytes by pukkandan, mdawar
- [utils] Handle ss:xxx in parse_duration
- [utils] Improve parsing for nested HTML elements by zmousm, pukkandan
- [utils] Use key None in traverse_obj to return as-is
- [extractor] Detect more subtitle codecs in MPD manifests by fstirlitz
- [extractor] Extract chapters from JSON-LD by iw0nderhow, pukkandan
- [extractor] Extract thumbnails from JSON-LD by nixxo
- [extractor] Improve url_result and related
- [generic] Improve KVS player extraction by trassshhub
- [build] Reduce dependency on third party workflows
- [extractor,cleanup] Use _search_nextjs_data, format_field
- [cleanup] Minor fixes and cleanup
- [docs] Improvements
- [test] Fix TestVerboseOutput
- [afreecatv] Add livestreams extractor by wlritchi
- [callin] Add extractor by foghawk
- [CrowdBunker] Add extractors by Ashish0804
- [daftsex] Add extractors by k3ns1n
- [digitalconcerthall] Add extractor by teridon
- [Drooble] Add extractor by u-spec-png
- [EuropeanTour] Add extractor by Ashish0804
- [iq.com] Add extractors by MinePlayersPE
- [KelbyOne] Add extractor by Ashish0804
- [LnkIE] Add extractor by Ashish0804
- [MainStreaming] Add extractor by coletdjnz
- [megatvcom] Add extractors by zmousm
- [Newsy] Add extractor by Ashish0804
- [noodlemagazine] Add extractor by trassshhub
- [PokerGo] Add extractors by Ashish0804
- [Pornez] Add extractor by mozlima
- [PRX] Add Extractors by coletdjnz
- [RTNews] Add extractor by Ashish0804
- [Rule34video] Add extractor by trassshhub
- [tvopengr] Add extractors by zmousm
- [Vimm] Add extractor by alerikaisattera
- [glomex] Add extractors by zmousm
- [instagram] Add story/highlight extractor by u-spec-png
- [openrec] Add movie extractor by Lesmiscore
- [rai] Add Raiplaysound extractors by nixxo, pukkandan
- [aparat] Fix extractor
- [ard] Extract subtitles by fstirlitz
- [BiliIntl] Add login by MinePlayersPE
- [CeskaTelevize] Use http for manifests
- [CTVNewsIE] Add fallback for video search by Ashish0804
- [dplay] Migrate DiscoveryPlusItaly to DiscoveryPlus by timendum
- [dplay] Re-structure DiscoveryPlus extractors
- [Dropbox] Support password protected files and more formats by zenerdi0de
- [facebook] Fix extraction from groups
- [facebook] Improve title and uploader extraction
- [facebook] Parse dash manifests
- [fox] Extract m3u8 from preview by ischmidt20
- [funk] Support origin URLs
- [gfycat] Fix uploader
- [gfycat] Support embeds by coletdjnz
- [hotstar] Add extractor args to ignore tags by Ashish0804
- [hrfernsehen] Fix ardloader extraction by CreaValix
- [instagram] Fix username extraction for stories and highlights by nyuszika7h
- [kakao] Detect geo-restriction
- [line] Remove tv.line.me by sian1468
- [mixch] Add MixchArchiveIE by Lesmiscore
- [mixcloud] Detect restrictions by llacb47
- [NBCSports] Fix extraction of platform URLs by ischmidt20
- [Nexx] Extract more metadata by MinePlayersPE
- [Nexx] Support 3q CDN by MinePlayersPE
- [pbs] de-prioritize AD formats
- [PornHub,YouTube] Refresh onion addresses by unit193
- [RedBullTV] Parse subtitles from manifest by Ashish0804
- [streamcz] Fix extractor by arkamar, pukkandan
- [Ted] Rewrite extractor by pukkandan, trassshhub
- [Theta] Fix valid URL by alerikaisattera
- [ThisOldHouseIE] Add support for premium videos by Ashish0804
- [TikTok] Fix extraction for sigi-based webpages, add API fallback by MinePlayersPE
- [TikTok] Pass cookies to formats, and misc fixes by MinePlayersPE
- [TikTok] Extract captions, user thumbnail by MinePlayersPE
- [TikTok] Change app version by MinePlayersPE, llacb47
- [TVer] Extract message for unaired live by Lesmiscore
- [twitcasting] Refactor extractor by Lesmiscore
- [twitter] Fix video in quoted tweets
- [veoh] Improve extractor by foghawk
- [vk] Capture clip URLs
- [vk] Fix VKUserVideosIE by Ashish0804
- [vk] Improve _VALID_URL by k3ns1n
- [VrtNU] Handle empty title by pgaig
- [XVideos] Check HLS formats by MinePlayersPE
- [yahoo:gyao] Improved playlist handling by hyano
- [youtube:tab] Extract more playlist metadata by coletdjnz, pukkandan
- [youtube:tab] Raise error on tab redirect by krichbanana, coletdjnz
- [youtube] Update Innertube clients by coletdjnz
- [youtube] Detect live-stream embeds
- [youtube] Do not return upload_date for playlists
- [youtube] Extract channel subscriber count by coletdjnz
- [youtube] Make invalid storyboard URL non-fatal
- [youtube] Enforce UTC, update innertube clients and tests by coletdjnz
- [zdf] Add chapter extraction by iw0nderhow
- [zee5] Add geo-bypass
New in yt-dlp 2021.12.27 (Dec 27, 2021)
- Avoid recursion error when re-extracting info
- [ffmpeg] Fix position of --ppa
- [aria2c] Don't show progress when --no-progress
- [cookies] Support other keyrings by mbway
- [EmbedThumbnail] Prefer AtomicParsley over ffmpeg if available
- [generic] Fix HTTP KVS Player by git-anony-mouse
- [ThumbnailsConvertor] Fix for when there are no thumbnails
- [docs] Add examples for using TYPES: in -P/-o
- [PixivSketch] Add extractors by nao20010128nao
- [tiktok] Add music, sticker and tag IEs by MinePlayersPE
- [BiliIntl] Fix extractor by MinePlayersPE
- [CBC] Fix URL regex
- [tiktok] Fix extractor_key used in archive
- [youtube] End live-from-start properly when stream ends with 403
- [Zee5] Fix VALID_URL for tv-shows by Ashish0804
New in yt-dlp 2021.12.25 (Dec 25, 2021)
- Changelog:
- [dash,youtube] Download live from start to end by nao20010128nao, pukkandan
- Add option --live-from-start to enable downloading live videos from start
- Add key is_from_start in formats to identify formats (of live videos) that downloads from start
- [dash] Create protocol http_dash_segments_generator that allows a function to be passed instead of fragments
- [fragment] Allow multiple live dash formats to download simultaneously
- [youtube] Implement fragment re-fetching for the live dash formats
- [youtube] Re-extract dash manifest every 5 hours (manifest expires in 6hrs)
- [postprocessor/ffmpeg] Add FFmpegFixupDuplicateMoovPP to fixup duplicated moov atoms
- Known issues:
- Ctrl+C doesn't work on Windows when downloading multiple formats
- If video becomes private, download hangs
- [SponsorBlock] Add Filler and Highlight categories by nihil-admirari, pukkandan
- Change --sponsorblock-cut all to --sponsorblock-cut default if you do not want filler sections to be removed
- Add field webpage_url_domain
- Add interactive format selection with -f -
- Add option --file-access-retries by ehoogeveen-medweb
- [outtmpl] Add alternate forms S, D and improve id detection
- [outtmpl] Add operator & for replacement text by PilzAdam
- [EmbedSubtitle] Disable duration check temporarily
- [extractor] Add _search_nuxt_data by nao20010128nao
- [extractor] Ignore errors in comment extraction when -i is given
- [extractor] Standardize _live_title
- [FormatSort] Prevent incorrect deprecation warning
- [generic] Extract m3u8 formats from JSON-LD
- [postprocessor/ffmpeg] Always add faststart
- [utils] Fix parsing YYYYMMDD dates in Nov/Dec by wlritchi
- [utils] Improve parse_count
- [utils] Update std_headers by kikuyan, fstirlitz
- [lazy_extractors] Fix for search IEs
- [extractor] Support default implicit graph in JSON-LD by zmousm
- Allow --no-write-thumbnail to override --write-all-thumbnail
- Fix --throttled-rate
- Fix control characters being printed to --console-title
- Fix PostProcessor hooks not registered for some PPs
- Pre-process when using --flat-playlist
- Remove known invalid thumbnails from info_dict
- Add warning when using -f best
- Use parse_duration for --wait-for-video and some minor fix
- [test/download] Add more fields
- [test/download] Ignore field webpage_url_domain by std-move
- [compat] Suppress errors in enabling VT mode
- [docs] Improve manpage format by iw0nderhow, pukkandan
- [docs,cleanup] Minor fixes and cleanup
- [cleanup] Fix some typos by unit193
- [ABC:iview] Add show extractor by pabs3
- [dropout] Add extractor by TwoThousandHedgehogs, pukkandan
- [GameJolt] Add extractors by MinePlayersPE
- [gofile] Add extractor by Jertzukka, Ashish0804
- [hse] Add extractors by cypheron, pukkandan
- [NateTV] Add NateIE and NateProgramIE by Ashish0804, Hyeeji
- [OpenCast] Add extractors by bwildenhain, C0D3D3V
- [rtve] Add RTVEAudioIE by kebianizao
- [Rutube] Add RutubeChannelIE by Ashish0804
- [skeb] Add extractor by nao20010128nao
- [soundcloud] Add related tracks extractor by Lapin0t
- [toggo] Add extractor by nyuszika7h
- [TrueID] Add extractor by MinePlayersPE
- [audiomack] Update album and song VALID_URL by abdullah-if, dirkf
- [CBC Gem] Extract 1080p formats by DavidSkrundz
- [ceskatelevize] Fetch iframe from nextJS data by mkubecek
- [crackle] Look for non-DRM formats by raleeper
- [dplay] Temporary fix for discoveryplus.com/it
- [DiscoveryPlusShowBaseIE] yield actual video id by Ashish0804
- [Facebook] Handle redirect URLs
- [fujitv] Extract 1080p from tv_android m3u8 by YuenSzeHong
- [gronkh] Support new URL pattern by Sematre
- [instagram] Expand valid URL by u-spec-png
- [Instagram] Try bypassing login wall with embed page by MinePlayersPE
- [Jamendo] Fix use of _VALID_URL_RE by jaller94
- [LBRY] Support livestreams by Ashish0804, pukkandan
- [NJPWWorld] Extract formats from m3u8 by aarubui
- [NovaEmbed] update player regex by std-move
- [npr] Make SMIL extraction non-fatal by r5d
- [ntvcojp] Extract NUXT data by nao20010128nao
- [ok.ru] add mobile fallback by nao20010128nao
- [olympics] Add uploader and cleanup by u-spec-png
- [ondemandkorea] Update jw_config regex by julien-hadleyjack
- [PlutoTV] Expand _VALID_URL
- [RaiNews] Fix extractor by nixxo
- [RCTIPlusSeries] Lazy extraction and video type selection by MinePlayersPE
- [redtube] Handle formats delivered inside a JSON by dirkf, nixxo
- [SonyLiv] Add OTP login support by Ashish0804
- [Steam] Fix extractor by u-spec-png
- [TikTok] Pass cookies to mobile API by MinePlayersPE
- [trovo] Fix inheritance of TrovoChannelBaseIE
- [TVer] Extract better thumbnails by YuenSzeHong
- [vimeo] Extract chapters
- [web.archive:youtube] Improve metadata extraction by coletdjnz
- [youtube:comments] Add more options for limiting number of comments extracted by coletdjnz
- [youtube:tab] Extract more metadata from feeds/channels/playlists by coletdjnz
- [youtube:tab] Extract video thumbnails from playlist by coletdjnz, pukkandan
- [youtube:tab] Ignore query when redirecting channel to playlist and cleanup of related code
- [youtube] Fix ytsearchdate
- [zdf] Support videos with different ptmd location by iw0nderhow
- [zee5] Support /episodes in URL
New in yt-dlp 2021.11.10 (Nov 10, 2021)
- [youtube] Fix throttling by decrypting n-sig
- Merging extractors from haruhi-dl by selfisekai
- [extractor] Add _search_nextjs_data
- [tvp] Fix extractors
- [tvp] Add TVPStreamIE
- [wppilot] Add extractors
- [polskieradio] Add extractors
- [radiokapital] Add extractors
- [polsatgo] Add extractor by selfisekai, sdomi
- Separate --check-all-formats from --check-formats
- Approximate filesize from bitrate
- Don't create console in windows_enable_vt_mode
- Fix bug in --load-infojson of playlists
- [minicurses] Add colors to -F and standardize color-printing code
- [outtmpl] Add type link for internet shortcut files
- [outtmpl] Add alternate forms for q and j
- [outtmpl] Do not traverse None
- [fragment] Fix progress display in fragmented downloads
- [downloader/ffmpeg] Fix vtt download with ffmpeg
- [ffmpeg] Detect presence of setts and libavformat version
- [ExtractAudio] Rescale --audio-quality correctly by CrypticSignal, pukkandan
- [ExtractAudio] Use libfdk_aac if available by CrypticSignal
- [FormatSort] eac3 is better than ac3
- [FormatSort] Fix some fields' defaults
- [generic] Detect more json_ld
- [generic] parse jwplayer with only the json URL
- [extractor] Add keyword automatically to SearchIE descriptions
- [extractor] Fix some errors being converted to ExtractorError
- [utils] Add join_nonempty
- [utils] Add jwt_decode_hs256 by Ashish0804
- [utils] Create DownloadCancelled exception
- [utils] Parse vp09 as vp9
- [utils] Sanitize URL when determining protocol
- [test/download] Fallback test to bv
- [docs] Minor documentation improvements
- [cleanup] Improvements to error and debug messages
- [cleanup] Minor fixes and cleanup
- [3speak] Add extractors by Ashish0804
- [AmazonStore] Add extractor by Ashish0804
- [Gab] Add extractor by u-spec-png
- [mediaset] Add playlist support by nixxo
- [MLSScoccer] Add extractor by Ashish0804
- [N1] Add support for nova.rs by u-spec-png
- [PlanetMarathi] Add extractor by Ashish0804
- [RaiplayRadio] Add extractors by frafra
- [roosterteeth] Add series extractor
- [sky] Add SkyNewsStoryIE by ajj8
- [youtube] Fix sorting for some videos
- [youtube] Populate thumbnail with the best "known" thumbnail
- [youtube] Refactor itag processing
- [youtube] Remove unnecessary no-playlist warning
- [youtube:tab] Add Invidious list for playlists/channels by rhendric
- [Bilibili:comments] Fix infinite loop by u-spec-png
- [ceskatelevize] Fix extractor by flashdagger
- [Coub] Fix media format identification by wlritchi
- [crunchyroll] Add extractor-args language and hardsub
- [DiscoveryPlus] Allow language codes in URL
- [imdb] Fix thumbnail by ozburo
- [instagram] Add IOS URL support by u-spec-png
- [instagram] Improve login code by u-spec-png
- [Instagram] Improve metadata extraction by u-spec-png
- [iPrima] Fix extractor by stanoarn
- [itv] Add support for ITV News by ajj8
- [la7] Fix extractor by nixxo
- [linkedin] Don't login multiple times
- [mtv] Fix some videos by Sipherdrakon
- [Newgrounds] Fix description by u-spec-png
- [Nrk] Minor fixes by fractalf
- [Olympics] Fix extractor by u-spec-png
- [piksel] Fix sorting
- [twitter] Do not sort by codec
- [viewlift] Add cookie-based login and series support by Ashish0804, pukkandan
- [vimeo] Detect source extension and misc cleanup by flashdagger
- [vimeo] Fix ondemand videos and direct URLs with hash
- [vk] Fix login and add subtitles by kaz-us
- [VLive] Add upload_date and thumbnail by Ashish0804
- [VRT] Fix login by pgaig
- [Vupload] Fix extractor by u-spec-png
- [wakanim] Add support for MPD manifests by nyuszika7h
- [wakanim] Detect geo-restriction by nyuszika7h
- [ZenYandex] Fix extractor by u-spec-png
New in yt-dlp 2021.10.22 (Oct 23, 2021)
- [build] Improvements
- Build standalone MacOS packages by smplayer-dev
- Release windows exe built with py2exe
- Enable lazy-extractors in releases.
- Set env var YTDLP_NO_LAZY_EXTRACTORS to forcefully disable this (experimental)
- Clean up error reporting in update
- Refactor pyinst.py, misc…
New in yt-dlp 2021.10.10 (Oct 10, 2021)
- [downloader/ffmpeg] Fix bug in initializing FFmpegPostProcessor
- [minicurses] Fix when printing to file
- [downloader] Fix throttledratelimit
- [francetv] Fix extractor by fstirlitz, sarnoud
- [NovaPlay] Add extractor by Bojidarist
- [ffmpeg] Revert "Set max probesize" - No longer needed
- [docs] Remove incorrect dependency on VC++10
- [build] Allow to release without changelog
New in yt-dlp 2021.10.09 (Oct 10, 2021)
- Improved progress reporting
- Separate --console-title and --no-progress
- Add option --progress to show progress-bar even in quiet mode
- Fix and refactor minicurses and use it for all progress reporting
- Standardize use of terminal sequences and enable color support for windows 10
- Add option --progress-template to customize progress-bar and console-title
- Add postprocessor hooks and progress reporting
- [postprocessor] Add plugin support with option --use-postprocessor
- [extractor] Extract storyboards from SMIL manifests by fstirlitz
- [outtmpl] Alternate form of format type l for n delimited list
- [outtmpl] Format type U for unicode normalization
- [outtmpl] Allow empty output template to skip a type of file
- Merge webm formats into mkv if thumbnails are to be embedded
- [adobepass] Add RCN as MSO by jfogelman
- [ciscowebex] Add extractor by damianoamatruda
- [Gettr] Add extractor by i6t
- [GoPro] Add extractor by i6t
- [N1] Add extractor by u-spec-png
- [Theta] Add video extractor by alerikaisattera
- [Veo] Add extractor by i6t
- [Vupload] Add extractor by u-spec-png
- [bbc] Extract better quality videos by ajj8
- [Bilibili] Add subtitle converter by u-spec-png
- [CBC] Cleanup tests by makeworld-the-better-one
- [Douyin] Rewrite extractor by MinePlayersPE
- [Funimation] Fix for /v/ urls by pukkandan, Jules-A
- [Funimation] Sort formats according to the relevant extractor-args
- [Hidive] Fix duplicate and incorrect formats
- [HotStarSeries] Fix cookies by Ashish0804
- [LinkedInLearning] Add subtitles by Ashish0804
- [Mediaite] Relax valid url by coletdjnz
- [Newgrounds] Add age_limit and fix duration by u-spec-png
- [Newgrounds] Fix view count on songs by u-spec-png
- [parliamentlive.tv] Fix extractor by u-spec-png
- [PolskieRadio] Fix extractors by jakubadamw, u-spec-png
- [reddit] Add embedded url by u-spec-png
- [reddit] Fix 429 by generating a random reddit_session by AjaxGb
- [Rumble] Add RumbleChannelIE by Ashish0804
- [soundcloud:playlist] Detect last page correctly
- [SovietsCloset] Add duration from m3u8 by ChillingPepper
- [Streamable] Add codecs by u-spec-png
- [vidme] Remove extractor by alerikaisattera
- [youtube:tab] Fallback to API when webpage fails to download by coletdjnz
- [youtube] Fix non-fatal errors in fetching player
- Fix --flat-playlist when neither IE nor id is known
- Fix -f mp4 behaving differently from youtube-dl
- Workaround for bug in ssl.SSLContext.load_default_certs
- [aes] Improve performance slightly by sulyi
- [cookies] Fix keyring fallback by mbway
- [embedsubtitle] Fix error when duration is unknown
- [ffmpeg] Fix error when subtitle file is missing
- [ffmpeg] Set max probesize to workaround AAC HLS stream issues by shirt
- [FixupM3u8] Remove redundant run if merged is needed
- [hls] Fix decryption issues by shirt, pukkandan
- [http] Respect user-provided chunk size over extractor's
- [utils] Let traverse_obj accept functions as keys
- [docs] Add note about our custom ffmpeg builds
- [docs] Write embedding and contributing documentation by pukkandan, timethrow
- [update] Check for new version even if not updateable
- [build] Add more files to the tarball
- [build] Allow building with py2exe (and misc fixes)
- [build] Use pycryptodomex by shirt, pukkandan
- [cleanup] Some minor refactoring, improve docs and misc cleanup
New in yt-dlp 2021.09.25 (Sep 25, 2021)
- Add new option --netrc-location
- [outtmpl] Allow alternate fields using ,
- [outtmpl] Add format type B to treat the value as bytes (eg: to limit the filename to a certain number of bytes)
- Separate the options --ignore-errors and --no-abort-on-error
- Basic framework for simultaneous download of multiple formats by nao20010128nao
- [17live] Add 17.live extractor by nao20010128nao
- [bilibili] Add BiliIntlIE and BiliIntlSeriesIE by Ashish0804
- [CAM4] Add extractor by alerikaisattera
- [Chingari] Add extractors by Ashish0804
- [CGTN] Add extractor by chao813
- [damtomo] Add extractor by nao20010128nao
- [gotostage] Add extractor by poschi3
- [Koo] Add extractor by Ashish0804
- [Mediaite] Add Extractor by Ashish0804
- [Mediaklikk] Add Extractor by tmarki, mrx23dot, coletdjnz
- [MuseScore] Add Extractor by Ashish0804
- [Newgrounds] Add NewgroundsUserIE and improve extractor by u-spec-png
- [nzherald] Add NZHeraldIE by coletdjnz
- [Olympics] Add replay extractor by Ashish0804
- [Peertube] Add channel and playlist extractors by u-spec-png
- [radlive] Add extractor by nyuszika7h
- [SovietsCloset] Add extractor by ChillingPepper
- [Streamanity] Add Extractor by alerikaisattera
- [Theta] Add extractor by alerikaisattera
- [Yandex] Add ZenYandexIE and ZenYandexChannelIE by Ashish0804
- [9Now] handle episodes of series by dalanmiller
- [AnimalPlanet] Fix extractor by Sipherdrakon
- [Arte] Improve description extraction by renalid
- [atv.at] Use jwt for API by NeroBurner
- [brightcove] Extract subtitles from manifests
- [CBC] Fix CBC Gem extractors by makeworld-the-better-one
- [cbs] Report appropriate error for DRM
- [comedycentral] Support collection-playlist by nixxo
- [DIYNetwork] Support new format by Sipherdrakon
- [downloader/niconico] Pass custom headers by nao20010128nao
- [dw] Fix extractor
- [Fancode] Fix live streams by zenerdi0de
- [funimation] Fix for locations outside US by Jules-A, pukkandan
- [globo] Fix GloboIE by Ashish0804
- [HiDive] Fix extractor by Ashish0804
- [Hotstar] Add referer for subs by Ashish0804
- [itv] Fix extractor, add subtitles and thumbnails by coletdjnz, sleaux-meaux, Vangelis66
- [lbry] Show error message from API response
- [Mxplayer] Use mobile API by Ashish0804
- [NDR] Rewrite NDRIE by Ashish0804
- [Nuvid] Fix extractor by u-spec-png
- [Oreilly] Handle new web url by MKSherbini
- [pbs] Fix subtitle extraction by coletdjnz, gesa, raphaeldore
- [peertube] Update instances by u-spec-png
- [plutotv] Fix extractor for URLs with /en
- [reddit] Workaround for 429 by redirecting to old.reddit.com
- [redtube] Fix exts
- [soundcloud] Make playlist extraction lazy
- [soundcloud] Retry playlist pages on 502 error and update _CLIENT_ID
- [southpark] Fix SouthParkDE by coletdjnz
- [SovietsCloset] Fix playlists for games with only named categories by ConquerorDopy
- [SpankBang] Fix uploader by f4pp3rk1ng, coletdjnz
- [tiktok] Use API to fetch higher quality video by MinePlayersPE, llacb47
- [TikTokUser] Fix extractor using mobile API by MinePlayersPE, llacb47
- [videa] Fix some extraction errors by nyuszika7h
- [VrtNU] Handle login errors by llacb47
- [vrv] Don't raise error when thumbnails are missing
- [youtube] Cleanup authentication code by coletdjnz
- [youtube] Fix --mark-watched with --cookies-from-browser
- [youtube] Improvements to JS player extraction and add extractor-args to skip it by coletdjnz
- [youtube] Retry on 'Unknown Error' by coletdjnz
- [youtube] Return full URL instead of just ID
- [youtube] Warn when trying to download clips
- [zdf] Improve format sorting
- [zype] Extract subtitles from the m3u8 manifest by fstirlitz
- Allow --force-write-archive to work with --flat-playlist
- Download subtitles in order of --sub-langs
- Allow 0 in --playlist-items
- Handle more playlist errors with -i
- Fix --no-get-comments
- Fix extra_info being reused across runs
- Fix compat options no-direct-merge and playlist-index
- Dump files should obey --trim-filename by sulyi
- [aes] Add aes_gcm_decrypt_and_verify by sulyi, pukkandan
- [aria2c] Fix IV for some AES-128 streams by shirt
- [compat] Don't ignore HOME (if set) on windows
- [cookies] Make browser names case insensitive
- [cookies] Print warning for cookie decoding error only once
- [extractor] Fix root-relative URLs in MPD by DigitalDJ
- [ffmpeg] Add aac_adtstoasc when merging if needed
- [fragment,aria2c] Generalize and refactor some code
- [fragment] Avoid repeated request for AES key
- [fragment] Fix range header when using -N and media sequence by shirt
- [hls,aes] Fallback to native implementation for AES-CBC and detect Cryptodome in addition to Crypto
- [hls] Byterange + AES128 is supported by native downloader
- [ModifyChapters] Improve sponsor chapter merge algorithm by nihil-admirari
- [ModifyChapters] Minor fixes
- [WebVTT] Adjust parser to accommodate PBS subtitles
- [utils] Improve extract_timezone by dirkf
- [options] Fix --no-config and refactor reading of config files
- [options] Strip spaces and ignore empty entries in list-like switches
- [test/cookies] Improve logging
- [build] Automate more of the release process by animelover1984, pukkandan
- [build] Fix sha256 by nihil-admirari
- [build] Bring back brew taps by nao20010128nao
- [build] Provide --onedir zip for windows by pukkandan
- [cleanup,docs] Add deprecation warning in docs for some counter intuitive behaviour
- [cleanup] Fix line endings for nebula.py by glenn-slayden
- [cleanup] Improve make clean-test by sulyi
- [cleanup] Misc
New in yt-dlp 2021.09.02 (Sep 2, 2021)
- Changelog:
- Native SponsorBlock implementation by nihil-admirari, pukkandan
- sponsorblock-remove CATS removes specified chapters from file
- sponsorblock-mark CATS marks the specified sponsor sections as chapters
- sponsorblock-chapter-title TMPL to specify sponsor chapter template
- sponsorblock-api URL to use a different API
- No re-encoding is done unless --force-keyframes-at-cuts is used
- The fetched sponsor sections are written to the infojson
- Deprecates: --sponskrub, --no-sponskrub, --sponskrub-cut, --no-sponskrub-cut, --sponskrub-force, --no-sponskrub-force, --sponskrub-location, --sponskrub-args
- Split --embed-chapters from --embed-metadata (it still implies the former by default)
- Add option --remove-chapters to remove arbitrary chapters by nihil-admirari, pukkandan
- Add option --force-keyframes-at-cuts for more accurate cuts when removing and splitting chapters by nihil-admirari
- Let --match-filter reject entries early
- Makes redundant: --match-title, --reject-title, --min-views, --max-views
- [lazy_extractor] Improvements (It now passes all tests)
- Bugfix for when plugin directory doesn't exist by kidonng
- Create instance only after pre-checking archive
- Import actual class if an attribute is accessed
- Fix suitable and add flake8 test
- [downloader/ffmpeg] Experimental support for DASH manifests (including live)
- Your ffmpeg must have this patch applied for YouTube DASH to work
- [downloader/ffmpeg] Allow passing custom arguments before -i
- New extractors:
- [BannedVideo] Add extractor by smege1001, blackjack4494, pukkandan
- [bilibili] Add category extractor by animelover1984
- [Epicon] Add extractors by Ashish0804
- [filmmodu] Add extractor by mzbaulhaque
- [GabTV] Add extractor by Ashish0804
- [Hungama] Fix HungamaSongIE and add HungamaAlbumPlaylistIE by Ashish0804
- [ManotoTV] Add new extractors by tandy1000
- [Niconico] Add Search extractors by animelover1984, pukkandan
- [Patreon] Add PatreonUserIE by zenerdi0de
- [peloton] Add extractor by IONECarter, capntrips, pukkandan
- [ProjectVeritas] Add extractor by Ashish0804
- [radiko] Add extractors by nao20010128nao
- [StarTV] Add extractor for startv.com.tr by mrfade, coletdjnz
- [tiktok] Add TikTokUserIE by Ashish0804, pukkandan
- [Tokentube] Add extractor by u-spec-png
- [TV2Hu] Fix TV2HuIE and add TV2HuSeriesIE by Ashish0804
- [voicy] Add extractor by nao20010128nao
- Fixed extractors:
- [adobepass] Fix Verizon SAML login by nyuszika7h, ParadoxGBB
- [afreecatv] Fix adult VODs by wlritchi
- [afreecatv] Tolerate failure to parse date string by wlritchi
- [aljazeera] Fix extractor by MinePlayersPE
- [ATV.at] Fix extractor for ATV.at by NeroBurner, coletdjnz
- [bitchute] Fix test by mahanstreamer
- [camtube] Remove obsolete extractor by alerikaisattera
- [CDA] Add more formats by u-spec-png
- [eroprofile] Fix page skipping in albums by jhwgh1968
- [facebook] Fix format sorting
- [facebook] Fix metadata extraction by kikuyan
- [facebook] Update onion URL by Derkades
- [HearThisAtIE] Fix extractor by Ashish0804
- [instagram] Add referrer to prevent throttling by u-spec-png, kikuyan
- [iwara.tv] Extract more metadata by BunnyHelp
- [iwara] Add thumbnail by i6t
- [kakao] Fix extractor
- [mediaset] Fix extraction for some videos by nyuszika7h
- [Motherless] Fix extractor by coletdjnz
- [Nova] fix extractor by std-move
- [ParamountPlus] Fix geo verification by shirt
- [peertube] handle new video URL format by Chocobozzz
- [pornhub] Separate and fix playlist extractor by mzbaulhaque
- [reddit] Fix for quarantined subreddits by ouwou
- [ShemarooMe] Fix extractor by Ashish0804
- [soundcloud] Refetch client_id on 403
- [tiktok] Fix metadata extraction
- [TV2] Fix extractor by Ashish0804
- [tv5mondeplus] Fix extractor by korli
- [VH1,TVLand] Fix extractors by Sipherdrakon
- [Viafree] Fix extractor and extract subtitles by coletdjnz
- [XHamster] Extract uploader_id by octotherp
- [youtube] Add shorts to _VALID_URL
- [youtube] Add av01 itags to known formats list by blackjack4494
- [youtube] Extract error messages from HTTPError response by coletdjnz
- [youtube] Fix subtitle names
- [youtube] Prefer audio stream that YouTube considers default
- [youtube] Remove annotations and deprecate --write-annotations by coletdjnz
- [Zee5] Fix extractor and add subtitles by Ashish0804
- Bug fixes:
- [aria2c] Obey --rate-limit
- [EmbedSubtitle] Continue even if some files are missing
- [extractor] Better error message for DRM
- [extractor] Common function _match_valid_url
- [extractor] Show video id in error messages if possible
- [FormatSort] Remove priority of lang
- [options] Add _set_from_options_callback
- [SubtitleConvertor] Fix bug during subtitle conversion
- [utils] Add parse_qs
- [webvtt] Fix timestamp overflow adjustment by fstirlitz
- Bugfix for --replace-in-metadata
- Don't try to merge with final extension
- Fix --force-overwrites when using -k
- Fix --no-prefer-free-formats by CeruleanSky
- Fix -F for extractors that directly return url
- Fix -J when there are failed videos
- Fix extra_info being reused across runs
- Fix playlist_index not obeying playlist_start and add tests
- Fix resuming of single formats when using --no-part
- Revert erroneous use of the Content-Length header by fstirlitz
- Use os.replace where applicable by; paulwrubel
- [build] Add homebrew taps yt-dlp/taps/yt-dlp by nao20010128nao
- [build] Fix bug in making yt-dlp.tar.gz
- [docs] Fix some typos by pukkandan, zootedb0t
- [cleanup] Replace improper use of tab in trovo by glenn-slayden
- For sponskrub users:
- sponskrub support has been deprecated in favor of a native implementation
- If you were using sponskrub to mark chapters in video, use --sponsorblock-mark all instead
- If you were cutting out portions, use --sponsorblock-remove all
- There are a few more new options available now. See SponsorBlock Options for details
New in yt-dlp 2021.08.10 (Aug 10, 2021)
- Add option --replace-in-metadata
- Add option --no-simulate to not simulate even when --print or --list... are used - Deprecates --print-json
- Allow entire infodict to be printed using %()s - makes --dump-json redundant
- Allow multiple --exec and --exec-before-download
- Add regex to --match-filter
- Add all format filtering operators also to --match-filter by max-te
- Add compat-option no-keep-subs
- [adobepass] Add MSO Cablevision by Jessecar96
- [BandCamp] Add BandcampMusicIE by Ashish0804
- [blackboardcollaborate] Add new extractor by mzbaulhaque
- [eroprofile] Add album downloader by jhwgh1968
- [mirrativ] Add extractors by nao20010128nao
- [openrec] Add extractors by nao20010128nao
- [nbcolympics:stream] Fix extractor by nchilada, pukkandan
- [nbcolympics] Update extractor for 2020 olympics by wesnm
- [paramountplus] Separate extractor and fix some titles by shirt, pukkandan
- [RCTIPlus] Support events and TV by MinePlayersPE
- [Newgrounds] Improve extractor and fix playlist by u-spec-png
- [aenetworks] Update _THEPLATFORM_KEY and _THEPLATFORM_SECRET by wesnm
- [crunchyroll] Fix thumbnail by funniray
- [HotStar] Use API for metadata and extract subtitles by Ashish0804
- [instagram] Fix comments extraction by u-spec-png
- [peertube] Fix videos without description by u-spec-png
- [twitch:clips] Extract display_id by dirkf
- [viki] Print error message from API request
- [Vine] Remove invalid formats by u-spec-png
- [VrtNU] Fix XSRF token by pgaig
- [vrv] Fix thumbnail extraction by funniray
- [youtube] Add extractor-arg include-live-dash to show live dash formats
- [youtube] Improve signature function detection by PSlava
- [youtube] Raise appropriate error when API pages can't be downloaded
- Ensure _write_ytdl_file closes file handle on error
- Fix --compat-options filename by stdedos
- Fix issues with infodict sanitization
- Fix resuming when using --no-part
- Fix wrong extension for intermediate files
- Handle BrokenPipeError by kikuyan
- Show libraries present in verbose head
- [extractor] Detect sttp as subtitles in MPD by fstirlitz
- [extractor] Reset non-repeating warnings per video
- [ffmpeg] Fix streaming mp4 to stdout
- [ffpmeg] Allow --ffmpeg-location to be a file with different name
- [utils] Fix InAdvancePagedList.__getitem__
- [utils] Fix traverse_obj depth when is_user_input
- [webvtt] Merge daisy-chained duplicate cues by fstirlitz
- [build] Use custom build of pyinstaller by shirt
- [tests:download] Add batch testing for extractors (test_YourExtractor_all)
- [docs] Document which fields --add-metadata adds to the file
- [docs] Fix some mistakes and improve doc
- [cleanup] Misc code cleanup
New in yt-dlp 2021.08.02 (Aug 2, 2021)
- Add logo, banner and donate links
- Expand and escape environment variables correctly in output template
- Add format types j (json), l (comma delimited list), q (quoted for terminal) in output template
- [downloader] Allow streaming some unmerged formats to stdout using ffmpeg
- [CBS] Add ParamountPlusSeriesIE by Ashish0804
- [dplay] Add ScienceChannelIE by Sipherdrakon
- [UtreonIE] Add extractor by Ashish0804
- [youtube] Add mweb client by coletdjnz
- [youtube] Add player_client=all
- [youtube] Force hl=en for comments by coletdjnz
- [youtube] Fix format sorting when using alternate clients
- [youtube] Misc cleanup by pukkandan, coletdjnz
- [youtube] Extract SAPISID only once
- [CBS] Add fallback by llacb47, pukkandan
- [Hotstar] Support cookies by Ashish0804
- [HotStarSeriesIE] Fix regex by Ashish0804
- [bilibili] Improve _VALID_URL
- [mediaset] Fix extraction by nixxo
- [Mxplayer] Add h265 formats by Ashish0804
- [RCTIPlus] Remove PhantomJS dependency by MinePlayersPE
- [tenplay] Add MA15+ age limit by pento
- [vidio] Fix login error detection by MinePlayersPE
- [vimeo] Better extraction of original file by Ashish0804
- [generic] Support KVS player (replaces ThisVidIE) by rigstot
- Add compat-option no-clean-infojson
- Remove asr appearing twice in -F
- Set home: as the default key for -P
- [utils] Fix slicing of reversed LazyList
- [FormatSort] Fix bug for audio with unknown codec
- [test:download] Support testing with ignore_no_formats_error
- [cleanup] Refactor some code
- [adobepass] Add MSO Sling TV by wesnm
- [youtube] Age-gate bypass:
- Add agegate clients by pukkandan, MinePlayersPE
- Add thirdParty to agegate clients to bypass more videos
- Simplify client definitions, expose embedded clients
- Improve age-gate detection by coletdjnz
- Fix default global API key by coletdjnz
- Add creator clients for age-gate bypass using unverified accounts by zerodytrash, coletdjnz, pukkandan
New in yt-dlp 2021.07.24 (Jul 24, 2021)
- Changelog:
- [youtube:tab] Extract video duration early
- [downloader] Pass info_dict to progress_hooks
- [youtube] Fix age-gated videos for API clients when cookies are supplied by colethedj
- [youtube] Disable get_video_info age-gate workaround - This endpoint seems to be completely dead
- [youtube] Try all clients even if age-gated
- [youtube] Fix subtitles only being extracted from the first client
- [youtube] Simplify _get_text
- [cookies] bugfix for microsoft edge on macOS
- [cookies] Handle sqlite ImportError gracefully by mbway
- [cookies] Handle errors when importing keyring
New in yt-dlp 2021.07.21 (Jul 21, 2021)
- Add option --cookies-from-browser to load cookies from a browser by mbway
- Usage: --cookies-from-browser BROWSER[:PROFILE_NAME_OR_PATH]
- Also added --no-cookies-from-browser
- To decrypt chromium cookies, keyring is needed for UNIX and pycryptodome for Windows
- Add option --exec-before-download
- Add field live_status
- [FFmpegMetadata] Add language of each stream and some refactoring
- [douyin] Add extractor by pukkandan, pyx
- [pornflip] Add extractor by mzbaulhaque
- [youtube] Extract data from multiple clients by pukkandan, colethedj
- player_client now accepts multiple clients
- Default player_client = android,web
- This uses twice as many requests, but avoids throttling for most videos while also not losing any formats
- Music clients can be specifically requested and is enabled by default if music.youtube.com
- Added player_client=ios (Known issue: formats from ios are not sorted correctly)
- Add age-gate bypass for android and ios clients
- [youtube] Extract more thumbnails
- The thumbnail URLs are hard-coded and their actual existence is tested lazily
- Added option --no-check-formats to not test them
- [youtube] Misc fixes
- Improve extraction of livestream metadata by pukkandan, krichbanana
- Hide live dash formats since they can't be downloaded anyway
- Fix authentication when using multiple accounts by colethedj
- Fix controversial videos when requested via API by colethedj
- Fix session index extraction and headers for non-web player clients by colethedj
- Make --extractor-retries work for more errors
- Fix sorting of 3gp format
- Sanity check chapters (and refactor related code)
- Make parse_time_text and _extract_chapters non-fatal
- Misc cleanup and bug fixes by colethedj
- [youtube:tab] Fix channels tab
- [youtube:tab] Extract playlist availability by colethedj
- [youtube:comments] Move comment extraction to new API by colethedj
- [youtube:comments] Fix is_favorited, improve like_count parsing by colethedj
- [BravoTV] Improve metadata extraction by kevinoconnor7
- [crunchyroll:playlist] Force http
- [yahoo:gyao:player] Relax _VALID_URL by nao20010128nao
- [nebula] Authentication via tokens from cookie jar by hheimbuerger, TpmKranz
- [RTP] Fix extraction and add subtitles by fstirlitz
- [viki] Rewrite extractors and add extractor-arg video_types to vikichannel by zackmark29, pukkandan
- [vlive] Extract thumbnail directly in addition to the one from Naver
- [generic] Extract previously missed subtitles by fstirlitz
- [generic] Extract everything in the SMIL manifest and detect discarded subtitles by fstirlitz
- [embedthumbnail] Fix _get_thumbnail_resolution
- [metadatafromfield] Do not detect numbers as field names
- Fix selectors all, mergeall and add tests
- Errors in playlist extraction should obey --ignore-errors
- Fix bug where original_url was not propagated when _type=url
- Revert "Merge webm formats into mkv if thumbnails are to be embedded (#173)"
- This was wrongly checking for write_thumbnail
- Improve extractor_args parsing
- Rename NOTE in -F to MORE INFO since it's often confused to be the same as format_note
- Add only_once param for write_debug and report_warning
- [extractor] Allow extracting multiple groups in _search_regex by fstirlitz
- [utils] Improve traverse_obj
- [utils] Add variadic
- [utils] Improve js_to_json comment regex by fstirlitz
- [webtt] Fix timestamps
- [compat] Remove unnecessary code
- [doc] fix default of multistreams
New in yt-dlp 2021.07.07 (Jul 7, 2021)
- Merge youtube-dl: Upto commit/a803582
- Add --extractor-args to pass extractor-specific arguments
- Add extractor option skip for youtube. Eg: --extractor-args youtube:skip=hls,dash
- Deprecates --youtube-skip-dash-manifest, --youtube-skip-hls-manifest, --youtube-include-dash-manifest, --youtube-include-hls-manifest
- Allow --list... options to work with --print, --quiet and other --list... options
- [youtube] Use player API for additional video extraction requests by colethedj
- Fixes youtube premium music (format 141) extraction
- Adds extractor option player_client = web/android
- --extractor-args youtube:player_client=android works around the throttling for the time-being
- Adds extractor option player_skip=config
- Adds age-gate fallback using embedded client
- [youtube] Choose correct Live chat API for upcoming streams by krichbanana
- [youtube] Fix subtitle names for age-gated videos
- [youtube:comments] Fix error handling and add itct to params by colethedj
- [youtube_live_chat] Fix download with cookies by siikamiika
- [youtube_live_chat] use clickTrackingParams by siikamiika
- [Funimation] Rewrite extractor
- Add FunimationShowIE by Mevious
- Treat the different versions of an episode as different formats of a single video
- This changes the video id and will break break existing archives
- Compat option seperate-video-versions to fall back to old behavior including using the old video ids
- Support direct /player/ URL
- Extractor options language and version to pre-select them during extraction
- These options may be removed in the future if we can extract all formats without additional network requests
- Do not rely on these for format selection and use -f filters instead
- [AdobePass] Add Spectrum MSO by kevinoconnor7, ohmybahgosh
- [facebook] Extract description and fix title
- [fancode] Fix extraction, support live and allow login with refresh token by zenerdi0de
- [plutotv] Improve _VALID_URL
- [RCTIPlus] Add extractor by MinePlayersPE
- [Soundcloud] Allow login using oauth token by blackjack4494
- [TBS] Support livestreams by llacb47
- [videa] Fix extraction by nyuszika7h
- [yahoo] Fix extraction by llacb47, pukkandan
- Process videos when using --ignore-no-formats-error by krichbanana
- Fix --throttled-rate when using --load-info-json
- Fix --flat-playlist when entry has no ie_key
- Fix check_formats catching ExtractorError instead of DownloadError
- Fix deprecated option --list-formats-old
- [downloader/ffmpeg] Fix --ppa when using simultaneous download
- [extractor] Prevent unnecessary download of hls manifests and refactor hls_split_discontinuity
- [fragment] Handle status of download and errors in threads correctly; and minor refactoring
- [thumbnailsconvertor] Treat jpeg as jpg
- [utils] Fix issues with LazyList reversal
- [extractor] Allow extractors to set their own login hint
- [cleanup] Simplify format selector code with LazyList and yield from
- [cleanup] Clean extractor.common._merge_subtitles signature
- [cleanup] Fix some typos
New in yt-dlp 2021.06.23 (Jun 23, 2021)
- Merge youtube-dl: Upto commit/379f52a
- Add option --throttled-rate below which video data is re-extracted
- [fragment] Merge during download for -N, and refactor hls/dash
- [websockets] Add WebSocketFragmentFDby nao20010128nao, pukkandan
- Allow images formats in addition to video/audio
- [downloader/mhtml] Add new downloader for slideshows/storyboards by fstirlitz
- [youtube] Temporary fix for age-gate
- [youtube] Support ongoing live chat by siikamiika
- [youtube] Improve SAPISID cookie handling by colethedj
- [youtube] Login is not needed for :ytrec
- [youtube] Non-fatal alert reporting for unavailable videos page by colethedj
- [twitcasting] Websocket support by nao20010128nao
- [mediasite] Extract slides by fstirlitz
- [funimation] Extract subtitles
- [pornhub] Extract cast
- [hotstar] Use server time for authentication instead of local time
- [EmbedThumbnail] Fix for already downloaded thumbnail
- [EmbedThumbnail] Add compat-option embed-thumbnail-atomicparsley
- Expand --check-formats to thumbnails
- Fix id sanitization in filenames
- Skip fixup of existing files and add --fixup force to force it
- Better error handling of syntax errors in -f
- Use NamedTemporaryFile for --check-formats
- [aria2c] Lower --min-split-size for HTTP downloads
- [options] Rename --add-metadata to --embed-metadata
- [utils] Improve LazyList and add tests
- [build] Build Windows x86 version with py3.7 and remove redundant tests by pukkandan, shirt
- [docs] Clarify that --embed-metadata embeds chapter markers
- [cleanup] Refactor fixup
New in yt-dlp 2021.06.09 (Jun 9, 2021)
- Changelog:
- Fix bug where %(field)d in filename template throws error
- Improve offset parsing in outtmpl
- [test] More rigorous tests for prepare_filename
New in yt-dlp 2021.06.08 (Jun 8, 2021)
- Remove support for obsolete Python versions: Only 3.6+ is now supported
- Merge youtube-dl: Upto commit/c2350ca
- [hls] Fix decryption for multithreaded downloader
- [extractor] Fix pre-checking archive for some extractors
- [extractor] Fix FourCC fallback when parsing ISM by fstirlitz
- [twitcasting] Add TwitCastingUserIE, TwitCastingLiveIE by pukkandan, nao20010128nao
- [vidio] Add VidioPremierIE and VidioLiveIE by MinePlayersPE
- [viki] Fix extraction from by ytdl-org/youtube-dl@59e583f
- [youtube] Support shorts URL
- [zoom] Extract transcripts as subtitles
- Add field original_url with the user-inputted URL
- Fix and refactor prepare_outtmpl
- Make more fields available for --print when used with --flat-playlist
- [utils] Generalize traverse_dict to traverse_obj
- [downloader/ffmpeg] Hide FFmpeg banner unless in verbose mode by fstirlitz
- [build] Release yt-dlp.tar.gz
- [build,update] Add GNU-style SHA512 and prepare updater for simlar SHA256 by nihil-admirari
- [pyinst] Show Python version in exe metadata by nihil-admirari
- [docs] Improve documentation of dependencies
- [cleanup] Mark unused files
- [cleanup] Point all shebang to python3 by fstirlitz
- [cleanup] Remove duplicate file trovolive.py
New in yt-dlp 2021.06.01 (Jun 1, 2021)
- Merge youtube-dl: Upto commit/d495292
- Pre-check archive and filters during playlist extraction
- Handle Basic Auth user:pass in URLs by hhirtz and pukkandan
- [archiveorg] Add YoutubeWebArchiveIE by colethedj and alex-gedeon
- [fancode] Add extractor by rmsmachine
- [patreon] Support vimeo embeds by rhsmachine
- [Saitosan] Add new extractor by llacb47
- [ShemarooMe] Add extractor by Ashish0804 and pukkandan
- [telemundo] Add extractor by king-millez
- [SonyLIV] Add SonyLIVSeriesIE and subtitle support by Ashish0804
- [Hotstar] Add HotStarSeriesIE by Ashish0804
- [Voot] Add VootSeriesIE by Ashish0804
- [vidio] Support login and premium videos by MinePlayersPE
- [fragment] When using -N, do not keep the fragment content in memory
- [ffmpeg] Download and merge in a single step if possible
- [ThumbnailsConvertor] Support conversion to png and make it the default by louie-github
- [VideoConvertor] Generalize with remuxer and allow conditional recoding
- [EmbedThumbnail] Embed in mp4/m4a using mutagen by tripulse and pukkandan
- [EmbedThumbnail] Embed if any thumbnail was downloaded, not just the best
- [EmbedThumbnail] Correctly escape filename
- [update] replace self without launching a subprocess in windows
- [update] Block further update for unsupported systems
- Refactor __process_playlist by creating LazyList
- Write messages to stderr when both quiet and verbose
- Sanitize and sort playlist thumbnails
- Remove None values from info.json
- [extractor] Always prefer native hls downloader by default
- [extractor] Skip subtitles without URI in m3u8 manifests by hheimbuerger
- [extractor] Functions to parse socket.io response as json by pukkandan and llacb47
- [extractor] Allow note=False when extracting manifests
- [utils] Escape URLs in sanitized_Request, not sanitize_url
- [hls] Disable external downloader for webtt
- [youtube] /live URLs should raise error if channel is not live
- [youtube] Bug fixes
- [zee5] Fix m3u8 formats' extension
- [ard] Allow URLs without - before id by olifre
- [cleanup] YoutubeDL._match_entry
- [cleanup] Refactor updater
- [cleanup] Refactor ffmpeg convertors
- [cleanup] setup.py
New in yt-dlp 2021.04.22 (Apr 22, 2021)
- Improve output template:
- Objects can be traversed like %(field.key1.key2)s
- An offset can be added to numeric fields as %(field+N)s
- Deprecates --autonumber-start
- Improve --sub-langs:
- Treat --sub-langs entries as regex
- all can be used to refer to all the subtitles
- language codes can be prefixed with - to exclude it
- Deprecates --all-subs
- Add option --ignore-no-formats-error to ignore the "no video format" and similar errors
- Add option --skip-playlist-after-errors to skip the rest of a playlist after a given number of errors are encountered
- Merge youtube-dl: Upto commit/7e8b3f9
- [downloader] Fix bug in downloader selection
- [BilibiliChannel] Fix pagination by nao20010128nao andpukkandan
- [rai] Add support for http formats by nixxo
- [TubiTv] Add TubiTvShowIE by Ashish0804
- [twitcasting] Fix extractor
- [viu:ott] Fix extractor and support series by lkho andpukkandan
- [youtube:tab] Show unavailable videos in playlists by colethedj
- [youtube:tab] Reload with unavailable videos for all playlists
- [youtube] Ignore invalid stretch ratio
- [youtube] Improve channel syncid extraction to support ytcfg by colethedj
- [youtube] Standardize API calls for tabs, mixes and search by colethedj
- [youtube] Bugfix in _extract_ytcfg
- [mildom:user:vod] Download only necessary amount of pages
- [mildom] Remove proxy completely by fstirlitz
- [go] Fix _VALID_URL
- [MetadataFromField] Improve regex and add tests
- [Exec] Ensure backward compatibility when the command contains %
- [extractor] Fix inconsistent use of report_warning
- Ensure mergeall selects best format when multistreams are disabled
- Improve the yt-dlp.sh script by fstirlitz
- [lazy_extractor] Do not load plugins
- [ci] Disable fail-fast
- [documentation] Clarify which deprecated options still work
- [documentation] Fix typos
New in yt-dlp 2021.04.11 (Apr 13, 2021)
- Add option --convert-thumbnails (only jpg currently supported)
- Format selector mergeall to download and merge all formats
- Pass any field to --exec using similar syntax to output template
- Choose downloader for each protocol using --downloader PROTO:NAME
- Alias --downloader for --external-downloader
- Added native as an option for the downloader
- Merge youtube-dl: Upto commit/4fb25ff (except vimeo)
- [DiscoveryPlusIndia] Add DiscoveryPlusIndiaShowIE by Ashish0804
- [NFHSNetwork] Add extractor by llacb47
- [nebula] Add extractor (watchnebula.com) by hheimbuerger
- [nitter] Fix extraction of reply tweets and update instance list by B0pol
- [nitter] Fix thumbnails by B0pol
- [youtube] Fix thumbnail URL
- [youtube] Parse API parameters from initial webpage by colethedj
- [youtube] Extract comments' approximate timestamp by colethedj
- [youtube] Fix alert extraction
- [bilibili] Fix uploader
- [utils] Add datetime_from_str and datetime_add_months by colethedj
- Run some postprocessors before actual download
- Improve argument parsing for -P, -o, -S
- Fix some m3u8 not obeying --allow-unplayable-formats
- Fix default of dynamic_mpd
- Deprecate --all-formats, --include-ads, --hls-prefer-native, --hls-prefer-ffmpeg
- [documentation] Improvements