[youtube] Both `mweb` and `web_embedded` have become SABR-only in some sessions (except for format 18)
Author: BOplaidCreated Sep 10, 2026Updated Sep 16, 2026
Labelssite-bugtriagesite:youtube
Checklist
- I've read the NO AI / NO LLM POLICY and understand I may be blocked from the repository if it is violated
- I'm reporting that yt-dlp is broken on a supported site
- I've verified that I have updated yt-dlp to nightly or master (update instructions)
- I've checked that all provided URLs are playable in a browser with the same IP and same login details
- I've checked that all URLs and arguments with special characters are properly quoted or escaped
- I've searched known issues, the FAQ, and the bugtracker for similar issues including closed ones. DO NOT post duplicates
- I've read about sharing account credentials and I'm willing to share it if required
Region
No response
Provide a description that is worded well enough to be understood
Just look at the log.
The two clients in question work fine without cookies* so this is probably an experiment that is rolling out, and I got unlucky.
I believe this means that logged-in youtube downloading is now borked if you have this experiment, unless tv_downgraded works for you
[debug] Command-line config: ['-vU', '--js-runtimes', 'node', '--extractor-args', 'youtubepot-bgutilscript:server_home=[path]/bgutil-ytdlp-pot-provider/server', '--proxy', 'http://127.0.0.1:10808', '--cookies', '[path/cookies.txt', '--extractor-args', 'youtube:player_client=mweb,web_embedded,default;formats=duplicate,incomplete', '3qwPLZzl0ZI', '-F', '--no-cookies']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] from yt-dlp/yt-dlp-nightly-builds [bbc809a11] (zip)
[debug] Python 3.12.3 (CPython x86_64 64bit) - Linux-6.8.0-139-generic-x86_64-with-glibc2.39 (OpenSSL 3.0.13 30 Jan 2024, glibc 2.39)
[debug] exe versions: ffmpeg 6.1.1 (setts), ffprobe 6.1.1
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.46.0, requests-2.31.0 (unsupported), sqlite3-3.45.1, urllib3-2.0.7, websockets-10.4 (unsupported), yt_dlp_ejs-0.8.0
[debug] JS runtimes: node-26.2.0
[debug] Proxy map: {'all': 'http://127.0.0.1:10808'}
[debug] Request Handlers: urllib
[debug] Plugin directories: [path]/yt-dlp-plugins/bgutil-ytdlp-pot-provider/yt_dlp_plugins
[debug] Loaded 1745 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: [email protected] from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date ([email protected] from yt-dlp/yt-dlp-nightly-builds)
[debug] [youtube] [pot:bgutil:script-deno] Deno executable not found. Please ensure Deno is installed and available in PATH or passed to yt-dlp with --js-runtimes.
[debug] [youtube] [pot] PO Token Providers: bgutil:http-2.0.0 (external), bgutil:script-node-2.0.0 (external), bgutil:script-deno-2.0.0 (external, unavailable)
[debug] [youtube] [pot] PO Token Cache Providers: memory
[debug] [youtube] [pot] PO Token Cache Spec Providers: webpo
[debug] [youtube] [jsc] JS Challenge Providers: bun (unavailable), deno (unavailable), node, quickjs (unavailable)
[youtube] Extracting URL: 3qwPLZzl0ZI
[youtube] 3qwPLZzl0ZI: Downloading webpage
[youtube] 3qwPLZzl0ZI: Downloading mweb client config
[debug] [youtube] Forcing "main" player JS variant for player 8c3fda2d
original url = /s/player/8c3fda2d/player_es6.vflset/en_US/base.js
[debug] [youtube] 3qwPLZzl0ZI: Detected experiment to bind GVS PO Token to video ID for mweb client
[youtube] 3qwPLZzl0ZI: Downloading mweb player API JSON
[debug] [youtube] 3qwPLZzl0ZI: Detected a 6s ad for mweb
[youtube] 3qwPLZzl0ZI: Downloading web embedded client config
[debug] [youtube] 3qwPLZzl0ZI: Detected experiment to bind GVS PO Token to video ID for web_embedded client
[youtube] 3qwPLZzl0ZI: Downloading player 8c3fda2d-main
[youtube] 3qwPLZzl0ZI: Downloading web embedded player API JSON
[youtube] 3qwPLZzl0ZI: Downloading visionos player API JSON
[debug] [youtube] [pot:bgutil:http] No base_url provided, defaulting to http://127.0.0.1:4416
[youtube] [pot:bgutil:http] Error reaching GET http://127.0.0.1:4416/ping (caused by TransportError). This is expected if you are using the script method.
[youtube] [pot:bgutil:script-node] Generating a gvs PO Token for mweb client via bgutil script
[debug] [youtube] [pot:bgutil:script-node] Executing command to get POT via script: node [path]/bgutil-ytdlp-pot-provider/server/build/generate_once.js -p http://127.0.0.1:10808 -c 3qwPLZzl0ZI --innertube-context '{"client": {"hl": "en", "gl": "RO", "remoteHost": "2a09:bac5:5132:261e:0:0:3cc:44", "deviceMake": "Apple", "deviceModel": "iPad", "visitorData": "Cgs4OHpUeVpuNENEVSjdnIvVBjIoCgJSTxIiEh4SHAsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicgMmLfAgrcAjIxLllUPVpTOV8wZVUtRU50Xzhzb3pDRlQzM0p4NEJYRW1vX3R1R2dvUnN5TG1fTWZyeTYzVl9NSUtwWE5tTmJBMllpbXdfNEJucWdJQmtmbzJsZ3g1YVhDV0JSSG1OSHdRRlB2Zng0dEV3WnZmWl9iYlFPNmNDaEZ6RzFVQk5mOE85cXVmOVlCQmRsOGhGT251WkNUb2NnWGR6WjJUa0o5bDM2dWIzSGhYa0hmLW9nQ1NNbzRKa3E3QXp5NVNLVmlRSWkxaFhCQ3l6bS1aZTZSTmlmb0VGanNaWHFLVDd0eWZMa2MyaURXYk0xbWcwRWh2ZGgwU2VTM0FLckp3b1U1OEZfTDFadVF2alRvdnBBdjdaZnllNTl5VUNsN2JRa01BZ0JKU3lKLUR6N19WZEdRZVFsZS1wdUZUT2hBNExmQXVZbXdwRXRWYm1vR1FHWHFkZ2tCanViZVFIdw%3D%3D", "userAgent": "Mozilla/5.0 (iPad; CPU OS 16_7_10 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1,gzip(gfe),gzip(gfe)", "clientName": "MWEB", "clientVersion": "2.20260909.01.00", "osName": "iPad", "osVersion": "16_7_10", "originalUrl": "https://m.youtube.com/", "playerType": "UNIPLAYER", "screenPixelDensity": 2, "platform": "TABLET", "clientFormFactor": "LARGE_FORM_FACTOR", "configInfo": {"appInstallData": "CN2ci9UGEISd0hwQq8jRHBDBj9AcEIfUrwUQqMfSHBDhgoATEJzZ0RwQlKjSHBCHrM4cEIHNzhwQy7_SHBDRiLgiEPyyzhwQ-MSAExC8pNAcEMzfrgUQvZmwBRDa984cEPGcsAUQ5-vRHBCIkNEcELTB0BwQrKexBRDTotEcELjkzhwQy5PSHBCCj88cEKH40BwQyfaAExCFyNIcEPu00hwQ3rzOHBAAEPb30RwQlazQHBD_gtIcEL6E0RwQ4LfRHBDw3tEcELSR0BwQyvuAExCowdIcEL22rgUQ3NLQHBDp-NEcEOKHuCIQspHRHBCJsM4cENuo0hwQn8-AExCu1s8cEKCv0hwQxbXSHBCZjbEFEParsAUQpKnRHBDbrdIcEL6KsAUQ8bTQHBDKwdIcEJ7QsAUqgAFDQU1TWEJWZi1acS1ETGlVRXBRQ25BNzVGWVlUdi1RUHV3QU1nUVhzeHVjTGdhMEtoMHd5b0t3RUE1UE1BN2JrQm9BVjhLOEU2Uk9ZZlB2ekJ0REZEdDJZQnRlYkJOblZCZDBzOGFjRnVsTGhrZ2JrbndRRkJRVURzcFlHQlIwSDAA"}, "screenDensityFloat": 2.0, "userInterfaceTheme": "USER_INTERFACE_THEME_LIGHT", "timeZone": "UTC", "browserName": "Safari Mobile", "browserVersion": "16.6.15E148", "acceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "deviceExperimentId": "ChxOelk0TXprek1EZ3hOREV3TVRVMk5EWXdPUT09EN2ci9UGGN2ci9UG", "rolloutToken": "CLbAzKzJ-82R1wEQ6qK1yqvklgMYwNyKy6vklgM%3D", "utcOffsetMinutes": 0}, "user": {"lockedSafetyMode": false}, "request": {"useSsl": true}, "clickTracking": {"clickTrackingParams": "IhMIgdeKy6vklgMV/SO6AB3mxCAc"}}'
[debug] [youtube] 3qwPLZzl0ZI: Retrieved a gvs PO Token for mweb client
[youtube] [jsc:node] Solving JS challenges using node
[debug] [youtube] [jsc:node] Using challenge solver lib script v0.8.0 (source: python package, variant: minified)
[debug] [youtube] [jsc:node] Using challenge solver core script v0.8.0 (source: python package, variant: minified)
[debug] [youtube] [jsc:node] Running node: node --permission -
[youtube] 3qwPLZzl0ZI: Downloading m3u8 information
[debug] [youtube] 3qwPLZzl0ZI: Detected experiment to bind GVS PO Token to video ID for web client
[youtube] [pot:bgutil:script-node] Generating a gvs PO Token for web client via bgutil script
[debug] [youtube] [pot:bgutil:script-node] Executing command to get POT via script: node [path]/bgutil-ytdlp-pot-provider/server/build/generate_once.js -p http://127.0.0.1:10808 -c 3qwPLZzl0ZI --innertube-context '{"client": {"hl": "en", "gl": "RO", "remoteHost": "2a09:bac5:5133:1f5:0:0:32:76", "deviceMake": "", "deviceModel": "", "visitorData": "Cgs4OHpUeVpuNENEVSjcnIvVBjIoCgJSTxIiEh4SHAsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicgMmLfAgrcAjIxLllUPWpfeEtoRkt4dGxzYlJsSmV4Y0ZRaWtIaGx3SzVfOTRheGExRjVvMkZBdXQxd2VUMzVoYnY2X081MHp6QlVyMlpIQ2kxNmFvR1hoaXQydEg2ZUNLVW11MjNrbFBvWmI2Y0xGRUVMRGJyNGd6bmJzcXJxRDlOa3E4MjJBUWpfcnlvVWNmQjY2N21aN2VJLVpXWGJpR3JoUnJINXZJMENuVnlpVmZIZERpSkhRZG0yZm0zTGVLaVZ6cEpKSmUzdXR2TFBwWjBSM3FRaHJBbzQ0ZkNjSnMycHI2aks1eGg4by1TMFhHZ09IdldxcEdmQTBfa3p5S28tV0JOUGY5aFNxam92WXl5QUlNbUs3eHYwVWNST2FZazRoUHF2S3JfNG9FcU14emd4dWcwWmpQUzJuLWozaFBtbmpQWU4xVUdveFhFanZQNThlelZVRnI2dmJYQm9ITFAtdw%3D%3D", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36,gzip(gfe)", "clientName": "WEB", "clientVersion": "2.20260907.06.00", "osName": "Windows", "osVersion": "10.0", "originalUrl": "https://www.youtube.com/watch?v=3qwPLZzl0ZI&bpctr=9999999999&has_verified=1", "platform": "DESKTOP", "clientFormFactor": "UNKNOWN_FORM_FACTOR", "configInfo": {"appInstallData": "CNyci9UGEOLUrgUQ4oe4IhDN0bEFEAAQ5-vRHBDFtdIcEJmNsQUQ26jSHBC9tq4FEOC30RwQhJ3SHBDevM4cEIiQ0RwQ8N7RHBDSvdAcEMzfrgUQs5DPHBCu1s8cEPyyzhwQ8ZywBRD4xIATEMOR0BwQn8-AExCWh9EcELyk0BwQgc3OHBCCj88cEP-C0hwQppqwBRD299EcEMu_0hwQhcjSHBCkqdEcELTB0BwQvZmwBRDcrdIcEMr7gBMQnNnRHBDRiLgiENeL0RwQ-7TSHBCHrM4cEK6JuCIQntCwBRDLk9IcEMGP0BwQspHRHBDL0bEFEPDMzxwQ2vfOHBCgr9IcEKjH0hwQyfaAExDhgoATEParsAUQt4bPHBCUqNIcEL6E0RwQ6fjRHBDKwdIcEImwzhwQuOTOHBCowdIcEKH40BwQ4M2xBRC-irAFEPG00BwqiAFDQU1TWUJWYi1acS1ETGlVRXBRQ25BNzVGWVlUdi1RUHV3QU1nUVg5czk4TDhMRVNoMHd5b0t3RUE1UE1BN2JrQm9VVS02QUU2Uk9lUzRJb3pOSUF5MHE4a3dUZG1BYlhtd1RaMVFYZExQR25CYnBTNFpJRzQ1OEVCUVVFQTdTV0JnVWRCdz09MAA%3D"}, "userInterfaceTheme": "USER_INTERFACE_THEME_LIGHT", "timeZone": "UTC", "browserName": "Chrome", "browserVersion": "149.0.0.0", "acceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "deviceExperimentId": "ChxOelk0TXprek1EZ3hNREEyTURBME5UZ3hNQT09ENyci9UGGNyci9UG", "rolloutToken": "CLbAzKzJ-82R1wEQ6qK1yqvklgMY6qK1yqvklgM%3D"}, "user": {"lockedSafetyMode": false}, "request": {"useSsl": true}, "clickTracking": {"clickTrackingParams": "IhMIm/C0yqvklgMVEj26AB3vxCw/"}}'
[debug] [youtube] 3qwPLZzl0ZI: Retrieved a gvs PO Token for web client
[debug] [youtube] 3qwPLZzl0ZI: Some web client https formats have been skipped as they are missing a URL. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
[debug] [youtube] 3qwPLZzl0ZI: Retrieved a subs PO Token for mweb client
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[info] Available formats for 3qwPLZzl0ZI:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 0 │ mhtml │ images storyboard
sb2 mhtml 60x45 0 │ mhtml │ images storyboard
sb1 mhtml 120x90 0 │ mhtml │ images storyboard
sb0 mhtml 240x180 0 │ mhtml │ images storyboard
233-hls mp4 audio only │ m3u8 │ audio only unknown [en] Untested, Default, low, VISI
234-hls mp4 audio only │ m3u8 │ audio only unknown [en] Untested, Default, high, VISI
599-dashy m4a audio only 2 │ 13.41MiB 31k dash │ audio only mp4a.40.5 31k 22k [en] ultralow, MWEB, m4a_dash
599 m4a audio only 2 │ 13.41MiB 31k https │ audio only mp4a.40.5 31k 22k [en] ultralow, MWEB, m4a_dash
600-dashy webm audio only 2 │ 15.10MiB 35k dash │ audio only opus 35k 48k [en] ultralow, MWEB, webm_dash
600 webm audio only 2 │ 15.10MiB 35k https │ audio only opus 35k 48k [en] ultralow, MWEB, webm_dash
139-dashy m4a audio only 2 │ 21.25MiB 49k dash │ audio only mp4a.40.5 49k 22k [en] low, VISI, m4a_dash
139 m4a audio only 2 │ 21.25MiB 49k https │ audio only mp4a.40.5 49k 22k [en] low, VISI, m4a_dash
249-dashy-0 webm audio only 2 │ 22.09MiB 51k dash │ audio only opus 51k 48k [en] low, MWEB, webm_dash
249-dashy-1 webm audio only 2 │ 22.09MiB 51k dash │ audio only opus 51k 48k [en] low, WEB-E, webm_dash
249-dashy-2 webm audio only 2 │ 22.09MiB 51k dash │ audio only opus 51k 48k [en] low, VISI, webm_dash
250-dashy-0 webm audio only 2 │ 28.19MiB 65k dash │ audio only opus 65k 48k [en] low, MWEB, webm_dash
250-dashy-1 webm audio only 2 │ 28.19MiB 65k dash │ audio only opus 65k 48k [en] low, WEB-E, webm_dash
250-dashy-2 webm audio only 2 │ 28.19MiB 65k dash │ audio only opus 65k 48k [en] low, VISI, webm_dash
249-0 webm audio only 2 │ 22.09MiB 51k https │ audio only opus 51k 48k [en] low, MWEB, webm_dash
249-1 webm audio only 2 │ 22.09MiB 51k https │ audio only opus 51k 48k [en] low, WEB-E, webm_dash
249-2 webm audio only 2 │ 22.09MiB 51k https │ audio only opus 51k 48k [en] low, VISI, webm_dash
250-0 webm audio only 2 │ 28.19MiB 65k https │ audio only opus 65k 48k [en] low, MWEB, webm_dash
250-1 webm audio only 2 │ 28.19MiB 65k https │ audio only opus 65k 48k [en] low, WEB-E, webm_dash
250-2 webm audio only 2 │ 28.19MiB 65k https │ audio only opus 65k 48k [en] low, VISI, webm_dash
140-dashy-0 m4a audio only 2 │ 56.41MiB 129k dash │ audio only mp4a.40.2 129k 44k [en] medium, MWEB, m4a_dash
140-dashy-1 m4a audio only 2 │ 56.41MiB 129k dash │ audio only mp4a.40.2 129k 44k [en] medium, WEB-E, m4a_dash
140-dashy-2 m4a audio only 2 │ 56.41MiB 129k dash │ audio only mp4a.40.2 129k 44k [en] medium, VISI, m4a_dash
140-0 m4a audio only 2 │ 56.41MiB 129k https │ audio only mp4a.40.2 129k 44k [en] medium, MWEB, m4a_dash
140-1 m4a audio only 2 │ 56.41MiB 129k https │ audio only mp4a.40.2 129k 44k [en] medium, WEB-E, m4a_dash
140-2 m4a audio only 2 │ 56.41MiB 129k https │ audio only mp4a.40.2 129k 44k [en] medium, VISI, m4a_dash
251-dashy-0 webm audio only 2 │ 51.90MiB 119k dash │ audio only opus 119k 48k [en] medium, MWEB, webm_dash
251-dashy-1 webm audio only 2 │ 51.90MiB 119k dash │ audio only opus 119k 48k [en] medium, WEB-E, webm_dash
251-dashy-2 webm audio only 2 │ 51.90MiB 119k dash │ audio only opus 119k 48k [en] medium, VISI, webm_dash
251-0 webm audio only 2 │ 51.90MiB 119k https │ audio only opus 119k 48k [en] medium, MWEB, webm_dash
251-1 webm audio only 2 │ 51.90MiB 119k https │ audio only opus 119k 48k [en] medium, WEB-E, webm_dash
251-2 webm audio only 2 │ 51.90MiB 119k https │ audio only opus 119k 48k [en] medium, VISI, webm_dash
598-dashy webm 192x144 15 │ 16.41MiB 38k dash │ vp9 38k video only 144p, MWEB, webm_dash
602-hls mp4 192x144 15 │ ~611.50MiB 1403k m3u8 │ vp09.00.10.08 1403k video only Untested, VISI
598 webm 192x144 15 │ 16.41MiB 38k https │ vp9 38k video only 144p, MWEB, webm_dash
160-dashy-0 mp4 192x144 30 │ 31.31MiB 72k dash │ avc1.4d400c 72k video only 144p, MWEB, mp4_dash
160-dashy-1 mp4 192x144 30 │ 31.31MiB 72k dash │ avc1.4d400c 72k video only 144p, WEB-E, mp4_dash
160-dashy-2 mp4 192x144 30 │ 31.31MiB 72k dash │ avc1.4d400c 72k video only 144p, VISI, mp4_dash
269-hls mp4 192x144 30 │ ~ 86.65MiB 199k m3u8 │ avc1.4D400C 199k video only Untested, VISI
160-0 mp4 192x144 30 │ 31.31MiB 72k https │ avc1.4d400c 72k video only 144p, MWEB, mp4_dash
160-1 mp4 192x144 30 │ 31.31MiB 72k https │ avc1.4d400c 72k video only 144p, WEB-E, mp4_dash
160-2 mp4 192x144 30 │ 31.31MiB 72k https │ avc1.4d400c 72k video only 144p, VISI, mp4_dash
278-dashy-0 webm 192x144 30 │ 43.24MiB 99k dash │ vp9 99k video only 144p, MWEB, webm_dash
278-dashy-1 webm 192x144 30 │ 43.24MiB 99k dash │ vp9 99k video only 144p, WEB-E, webm_dash
278-dashy-2 webm 192x144 30 │ 43.24MiB 99k dash │ vp9 99k video only 144p, VISI, webm_dash
603-hls mp4 192x144 30 │ ~ 1.13GiB 2650k m3u8 │ vp09.00.11.08 2650k video only Untested, VISI
278-0 webm 192x144 30 │ 43.24MiB 99k https │ vp9 99k video only 144p, MWEB, webm_dash
278-1 webm 192x144 30 │ 43.24MiB 99k https │ vp9 99k video only 144p, WEB-E, webm_dash
278-2 webm 192x144 30 │ 43.24MiB 99k https │ vp9 99k video only 144p, VISI, webm_dash
394-dashy-0 mp4 192x144 30 │ 23.30MiB 53k dash │ av01.0.00M.08 53k video only 144p, MWEB, mp4_dash
394-dashy-1 mp4 192x144 30 │ 23.30MiB 53k dash │ av01.0.00M.08 53k video only 144p, WEB-E, mp4_dash
394-dashy-2 mp4 192x144 30 │ 23.30MiB 53k dash │ av01.0.00M.08 53k video only 144p, VISI, mp4_dash
394-0 mp4 192x144 30 │ 23.30MiB 53k https │ av01.0.00M.08 53k video only 144p, MWEB, mp4_dash
394-1 mp4 192x144 30 │ 23.30MiB 53k https │ av01.0.00M.08 53k video only 144p, WEB-E, mp4_dash
394-2 mp4 192x144 30 │ 23.30MiB 53k https │ av01.0.00M.08 53k video only 144p, VISI, mp4_dash
133-dashy-0 mp4 320x240 30 │ 66.91MiB 154k dash │ avc1.4d400d 154k video only 240p, MWEB, mp4_dash
133-dashy-1 mp4 320x240 30 │ 66.91MiB 154k dash │ avc1.4d400d 154k video only 240p, WEB-E, mp4_dash
133-dashy-2 mp4 320x240 30 │ 66.91MiB 154k dash │ avc1.4d400d 154k video only 240p, VISI, mp4_dash
229-hls-0 mp4 320x240 30 │ ~153.99MiB 353k m3u8 │ avc1.4D400D 353k video only Untested, VISI
229-hls-1 mp4 320x240 30 │ ~190.87MiB 438k m3u8 │ avc1.4D400D 438k video only Untested, VISI
133-0 mp4 320x240 30 │ 66.91MiB 154k http
Source: yt-dlp/yt-dlp