
VistaLover
MemberContent Type
Profiles
Forums
Events
Everything posted by VistaLover
-
Thanks ; they note: Hopefully, the brotli py3.14 wheel (file brotli-1.1.0-cp314-cp314-win32.whl) you kindly shared remains Vista-compatible; though, TBH, I'm not aware of any tests (within the context of yt-dlp or otherwise) I can submit it to ... Other than that, thank you for the details of the compilation procedure ; I agree it's not for the faint-hearted (or those lacking access to recent OS+H/W); when I, regrettably, find that PyPI misses wheels for a specific "module+module version+CPython+architecture" combination, I usually issue: python -m pip install module==specific_version and then let pip do its job in invoking setuptools+wheel to compile from module source; in the meantime, I cross my fingers for things to go as expected , which isn't always the case ; if the compilation succeeds, then pip will store in its cache a copy of the generated wheel, for easy re-usage; the local path to that wheel is being displayed in the command prompt window, so I always grab a copy from there ; of course, this is for pure Python modules, for ones with C/C++ extensions, a compiler must be made available to CPython (as you detailed yourself); CPython > 3.4 requires VS2015+, not compatible with my current OS ... Huh??? The above was meant to be written as: ... are compiled with adang1345's py3.13 (branch) implementation so that was a typo/oversight on my part ; apologies... Ofc I'm aware you've been using 3.13.7 for the win7 (+Vista) yt-dlp variants, that's why I wrote an update was due to recently released 3.13.8 ... ... That's your call, surely, but I'm more of a conservative person myself , who doesn't believe "the latest is the greatest"; however, if you're absolutely certain the yt-dlp code is fully compatible with recently released py3.14 (and the CPython itself doesn't come with any major bug), then go for it ; personally, I'd stick with the minimum CPython version mandated by yt-dlp, soon to be py3.10 (but it's also nice I can experiment with higher versions here, all thanks to adang1345 ) ... Best regards.
-
... Same is true (new bugfix release) for his py3.13.x builds: https://github.com/adang1345/PythonVista/tree/master/3.13.8 (seeing that your GitHub "Win7" release assets are compiled with adang1345's py3.13 implementation )
-
Pardon my asking , but which type of C compiler was used there? MS Visual Studio 2022 on Win10?
-
Hi ; well, cmalex's py3.11.4 assemblies (one compatible with just XP and one with Vista+) aren't currently being hosted on GitHub (AFAIAA), but they can be ; OTOH, adang1345's py3.13.7 assembly is already hosted on GitHub, and so is 3dyd's custom PyInstaller build used to make the Win7/Vista yt-dlp distributions; it may be possible, at least in theory, to author a modded GA workflow file to point to the custom implementations of CPython+PyInst necessary to package the Win7/Vista builds; e.g., upstream are using their own, custom, build of PyInstaller to create the "official" yt-dlp releases; perhaps a consultation with your "AI friend(s)" (or a question on SO, etc.) could prove beneficial in fully automating even the (currently) manually created release assets ; just a thought from a dedicated (hardly intelligent ) friend of yours... Best wishes !
-
... Hi ; most unfortunately, this isn't how things work ; Google , the owners of YouTube, have unleashed a war of annihilation against every kind of YT downloaders and they're NOT excluding/pardoning any of them based on the OS they're compatible with ; and, trust me, every breaking change Google implement (on purpose) isn't meant to leave "older" versions of downloaders unscathed ... XP-compatibility in Q4 of 2025 is also a concern for many Windows apps, not only Video Downloaders... I tend to stay clear of GUI media downloaders, so, alas, if you're in search for one of them, I'm afraid I won't be the person to recommend one to you... My own experience is that most of the GUI YT downloaders are frontends of the well-known CLI (Python) apps youtube-dl and its fork, yt-dlp; the GUI apps either use the standalone youtube-dl.exe or yt-dlp.exe binaries under the hood or use the respective libs inside their source code; as a consequence, whenever Google break youtube-dl/yt-dlp, the apps become broken, too ... Recently, Google implemented a breaking change of a great magnitude, which should explain your observation that yt-dlp and youtube-dl were impacted/broken, too, a stop-gap/interim solution has been implemented for both, but they were actually "stitched back together with duct tape", meaning they can break again at any time... More permanent solutions for YouTube downloading in those apps will leave, probably, any WinOS < Win10 uncovered (too early to tell with absolute certainty, maybe Win7 will be spared, but things are very grim for XP/Vista ) ; at the time of this writing, working versions can be found at: https://github.com/ytdl-org/ytdl-nightly/releases/download/2025.09.29/youtube-dl.exe (official nightly version) https://github.com/nicolaasjan/youtube-dl/releases/download/2025.09.29/youtube-dl.exe (fork of the above with a few custom modifications) https://github.com/nicolaasjan/yt-dlp/releases/download/2025.09.27.071342/yt-dlp_x86_winXP.exe If you're not familiar with those two CLI apps, am afraid this isn't the place to ask for help; however, ample HowTos can be found online with a simple web search, both apps have detailed wiki sections (assuming one already knows to invoke apps from the Windows command prompt) ... For developments related to both youtube-dl+yt-dlp, keep an eye on the dedicated MSFN thread: https://msfn.org/board/topic/184368-who-here-has-a-youtube-dl-compile-for-winxp Best regards ...
-
(Totally off-topic, but I'm not the one who started that ...) ... People who live in one of the Eurozone countries should have, by now, realised that the ECB (European Central Bank) and Eurozone countries' governments have practically outlawed the €500 banknote (purple in colour); the same can be also said about the €200 banknote (yellow); these two have been put out of normal circulation for everyday usage many years ago... Also, I have many months myself to spot even a €100 banknote (green); the highest denomination in circulation for everyday use is currently the €50 banknote (brownish); besides, governments have made it mandatory to pay with "plastic" money (credit/debit cards, physical or digital forms of them, money transfers, etc.) for a sizeable portion of your expenses (40% here in Greece), else you'll be "fined" with an increased income tax; so, people tend to move away from cash; the youth of today don't normally have cash in their pockets, this includes coins, too... And you can't buy here something that is over €500 worth with just plain cash (in one go) - you can probably still pay for the first €500 with banknotes, the rest has to be paid with some other "money" form... All those "anti-cash" measures have been put in place to combat so called "black money" ; cash is anonymous, while any other accepted form of payment isn't; just like in the Internet, "privacy" is a thing of the distant past ... Want to buy a new and shiny PC/laptop? Better have your bank card with you; or, as is the trend among the youth nowadays, your "digital bank card" stored inside your mobile phone ...
-
... Probably not their work , per se (seeing that they have the Polish flag before their username); published builds there are the impressive work of a Japanese person, whose username (in Japanese) is "あべちん" (that Google translates to "Abechin") ; in fact, I had contacted him some years ago about some issues in his FFmpeg builds, at a time when machine translation wasn't perfect (and AI totally absent); his blog's comment form, e.g. http://blog.k-tai-douga.com/article/191451101.html#comment (Leave a comment) wouldn't accept just Latin characters (I posted in English), so I had to include some Kanji characters, too, for my message to go through ... We did communicate in the end, the problems were mitigated in a future FFmpeg release...
-
Well, our "friends" over at Google have been, again, working hard ; like @j7n had reported in the recent past, they are now pushing, in my part of the globe, too, their SABR-protocol formats even for the tv yt_client; with the latest yt-dlp_x86.exe version, the special "Vista" variant, I can now only get format 18 (360p) for the TV client, plus the WEB-S and IOS (thanks, again, nicolaasjan ) formats: yt-dlp -vF "yrcIdXBwVww" [debug] Command-line config: ['--ffmpeg-location', '..\\FFmpeg', '--downloader-args', 'ffmpeg:-v 8 -stats', '-vF', 'yrcIdXBwVww'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version local@2025.09.27 [88e2a2de8] (win_x86_exe) [debug] Python 3.13.7 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: ffmpeg n6.1-dev-2615-N-112499-ga76b409 (setts), ffprobe n6.1-dev-2615-N-112499-ga76b409, phantomjs 2.1.1, rtmpdump 2.4 [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.5, sqlite3-3.50.4, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1833 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: yrcIdXBwVww [youtube] yrcIdXBwVww: Downloading webpage [youtube] yrcIdXBwVww: Downloading tv client config [debug] [youtube] Forcing player 0004de42 in place of player da13af8d original url = /s/player/da13af8d/player_ias.vflset/en_US/base.js [youtube] yrcIdXBwVww: Downloading tv player API JSON [youtube] yrcIdXBwVww: Downloading web safari player API JSON [youtube] yrcIdXBwVww: Downloading ios player API JSON [debug] Loading youtube-nsig.0004de42-main from cache [debug] [youtube] Decrypted nsig V6BpqA2btXTozIh => 30NYUH_c5XH0Ag WARNING: [youtube] yrcIdXBwVww: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] yrcIdXBwVww: Some web_safari 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] yrcIdXBwVww: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" WARNING: [youtube] yrcIdXBwVww: 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 [youtube] yrcIdXBwVww: Downloading m3u8 information [youtube] yrcIdXBwVww: Downloading m3u8 information [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 yrcIdXBwVww: ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ASR MORE INFO ---------------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 1 | mhtml | images storyboard sb1 mhtml 160x90 1 | mhtml | images storyboard sb0 mhtml 320x180 1 | mhtml | images storyboard 233 mp4 audio only | m3u8 | audio only unknown Untested, Default, low, IOS 234 mp4 audio only | m3u8 | audio only unknown Untested, Default, high, IOS 91 mp4 256x144 30 | ~ 3.43MiB 123k m3u8 | avc1.4D400C mp4a.40.5 WEB-S 269 mp4 256x144 30 | ~ 3.43MiB 123k m3u8 | avc1.4D400C 123k video only Untested, IOS 603 mp4 256x144 30 | ~ 2.93MiB 106k m3u8 | vp09.00.11.08 106k video only Untested, IOS 92 mp4 426x240 30 | ~ 5.41MiB 195k m3u8 | avc1.4D4015 mp4a.40.5 WEB-S 229 mp4 426x240 30 | ~ 5.41MiB 195k m3u8 | avc1.4D4015 195k video only Untested, IOS 604 mp4 426x240 30 | ~ 4.04MiB 145k m3u8 | vp09.00.20.08 145k video only Untested, IOS 93 mp4 640x360 30 | ~ 11.03MiB 397k m3u8 | avc1.4D401E mp4a.40.2 WEB-S 230 mp4 640x360 30 | ~ 11.03MiB 397k m3u8 | avc1.4D401E 397k video only Untested, IOS 18 mp4 640x360 30 2 | 4.15MiB 149k https | avc1.42001E mp4a.40.2 22k 360p, TV 605 mp4 640x360 30 | ~ 9.08MiB 327k m3u8 | vp09.00.21.08 327k video only Untested, IOS 94 mp4 854x480 30 | ~ 20.21MiB 728k m3u8 | avc1.4D401F mp4a.40.2 WEB-S 231 mp4 854x480 30 | ~ 20.21MiB 728k m3u8 | avc1.4D401F 728k video only Untested, IOS 606 mp4 854x480 30 | ~ 13.77MiB 496k m3u8 | vp09.00.30.08 496k video only Untested, IOS 95 mp4 1280x720 30 | ~ 41.07MiB 1479k m3u8 | avc1.64001F mp4a.40.2 WEB-S 232 mp4 1280x720 30 | ~ 41.07MiB 1479k m3u8 | avc1.64001F 1479k video only Untested, IOS 609 mp4 1280x720 30 | ~ 26.75MiB 963k m3u8 | vp09.00.31.08 963k video only Untested, IOS 96 mp4 1920x1080 30 | ~ 81.20MiB 2923k m3u8 | avc1.640028 mp4a.40.2 WEB-S 270 mp4 1920x1080 30 | ~ 81.20MiB 2923k m3u8 | avc1.640028 2923k video only Untested, IOS 614 mp4 1920x1080 30 | ~ 46.56MiB 1676k m3u8 | vp09.00.40.08 1676k video only Untested, IOS 620 mp4 2560x1440 30 | ~131.06MiB 4718k m3u8 | vp09.00.50.08 4718k video only Untested, IOS This is, hopefully, an A/B test at the moment, so invoking yt-dlp with the same command multiple times may finally get one the sought-after ABR formats (DASH) for the (default) TV yt_client ...
-
Well, I have just headed to your releases page on GitHub, https://github.com/nicolaasjan/yt-dlp/releases/ then to https://github.com/nicolaasjan/yt-dlp/releases/tag/2025.09.27.071342 and fetched file: https://github.com/nicolaasjan/yt-dlp/releases/download/2025.09.27.071342/yt-dlp_x86_win7.exe Results: yt-dlp_x86_win7 -v [debug] Command-line config: ['-v'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version nicolaasjan/yt-dlp@2025.09.27.071342 (win7_x86_exe*) [debug] Python 3.13.7 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: none [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.5, sqlite3-3.50.4, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1833 extractors Usage: yt-dlp_x86_win7 [OPTIONS] URL [URL...] yt-dlp_x86_win7: error: You must provide at least one URL. Type yt-dlp --help to see a list of all options. ; some observations: 1. What does the "*" stand for in the "version" line? (win7_x86_exe*) 2. This binary is smaller (17.7 MiB) than the one published here (18.4 MiB) ; ofc, it doesn't contain the iOS-format-enabling patch, but this is not it; the Win7-variant does not embed 38 "api-ms-win-*.dll" files, ALL part of Win10 UCRT ; the binary launches OK here probably because I had the runtime installed via MS Update (Windows6.0-KB2999226-x86.msu) already ... 3. As long as yt-dlp_x86_win7.exe is being compiled with adang1345's Vista-compatible py3.13.7 and packaged with 3dyd's Vista-compatible PyInstaller-6.15 (and Win10 UCRT is available in the system), then the binary shall be compatible with Vista SP2, too ... 4. On the releases page, I see "PyInstaller-onedir" packages for Win7_x64, https://github.com/nicolaasjan/yt-dlp/releases/download/2025.09.27.071342/yt-dlp_win7.zip WinXP_x86, https://github.com/nicolaasjan/yt-dlp/releases/download/2025.09.27.071342/yt-dlp_x86_winXP.zip but NOT for Win7_x86 (yt-dlp_x86_win7.zip) ; another "maintenance burden" concern ? ... Thanks for the tremendous service you're providing (and I won't tire mentioning this again and again ) ... Autumn-y (finally) regards from Northern Greece ...
-
... Well, NOT for Safari (WEB-S), but they are for iOS (IOS): yt-dlp -vF "BdGH9jgSjkU" [debug] Command-line config: ['--ffmpeg-location', '..\\FFmpeg', '--downloader-args', 'ffmpeg:-v 8 -stats', '-vF', 'BdGH9jgSjkU'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out cp1253 (No VT), error cp1253 (No VT), screen cp1253 (No VT) [debug] yt-dlp version local@2025.09.27 [88e2a2de8] (win_x86_exe) [debug] Python 3.13.7 (CPython AMD64 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: ffmpeg n6.1-dev-2615-N-112499-ga76b409 (setts), ffprobe n6.1-dev-2615-N-112499-ga76b409, phantomjs 2.1.1, rtmpdump 2.4-102-ga3a600d-get_iplayer [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.5, sqlite3-3.50.4, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1833 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: BdGH9jgSjkU [youtube] BdGH9jgSjkU: Downloading webpage [youtube] BdGH9jgSjkU: Downloading tv client config [debug] [youtube] Forcing player 0004de42 in place of player a61444a1 original url = /s/player/a61444a1/player_ias.vflset/en_US/base.js [youtube] BdGH9jgSjkU: Downloading tv player API JSON [youtube] BdGH9jgSjkU: Downloading web safari player API JSON [youtube] BdGH9jgSjkU: Downloading ios player API JSON [debug] Loading youtube-nsig.0004de42-main from cache [debug] [youtube] Decrypted nsig V7EvyWFb_ePZPOi => oPTz67zi2fhD0w [debug] [youtube] Decrypted nsig uJsaqyJjIXjIMyX => x2fOZfn_9WVCRA [debug] [youtube] BdGH9jgSjkU: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [youtube] BdGH9jgSjkU: Downloading m3u8 information [youtube] BdGH9jgSjkU: Downloading m3u8 information [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 BdGH9jgSjkU: ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO -------------------------------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 0 | mhtml | images storyboard sb1 mhtml 160x90 0 | mhtml | images storyboard sb0 mhtml 320x180 0 | mhtml | images storyboard 233 mp4 audio only | m3u8 | audio only unknown [en] Untested, Default, low, IOS 234 mp4 audio only | m3u8 | audio only unknown [en] Untested, Default, high, IOS 249-drc webm audio only 2 | 7.25MiB 51k https | audio only opus 51k 48k [en] low, DRC, TV, webm_dash 250-drc webm audio only 2 | 8.93MiB 63k https | audio only opus 63k 48k [en] low, DRC, TV, webm_dash 249 webm audio only 2 | 7.21MiB 51k https | audio only opus 51k 48k [en] low, TV, webm_dash 250 webm audio only 2 | 8.92MiB 63k https | audio only opus 63k 48k [en] low, TV, webm_dash 140-drc m4a audio only 2 | 18.26MiB 129k https | audio only mp4a.40.2 129k 44k [en] medium, DRC, TV, m4a_dash 251-drc webm audio only 2 | 15.93MiB 113k https | audio only opus 113k 48k [en] medium, DRC, TV, webm_dash 140 m4a audio only 2 | 18.26MiB 129k https | audio only mp4a.40.2 129k 44k [en] medium, TV, m4a_dash 251 webm audio only 2 | 15.91MiB 113k https | audio only opus 113k 48k [en] medium, TV, webm_dash 602 mp4 256x144 15 | ~ 12.81MiB 91k m3u8 | vp09.00.10.08 91k video only Untested, IOS 91 mp4 256x144 30 | ~ 23.57MiB 167k m3u8 | avc1.4D400C mp4a.40.5 [en] Untested, WEB-S 269 mp4 256x144 30 | ~ 23.57MiB 167k m3u8 | avc1.4D400C 167k video only Untested, IOS 160 mp4 256x144 30 | 4.40MiB 31k https | avc1.4d400c 31k video only 144p, TV, mp4_dash 603 mp4 256x144 30 | ~ 23.12MiB 164k m3u8 | vp09.00.11.08 164k video only Untested, IOS 278 webm 256x144 30 | 9.08MiB 64k https | vp9 64k video only 144p, TV, webm_dash 394 mp4 256x144 30 | 5.66MiB 40k https | av01.0.00M.08 40k video only 144p, TV, mp4_dash 92 mp4 426x240 30 | ~ 43.94MiB 312k m3u8 | avc1.4D4015 mp4a.40.5 [en] Untested, WEB-S 229 mp4 426x240 30 | ~ 43.94MiB 312k m3u8 | avc1.4D4015 312k video only Untested, IOS 133 mp4 426x240 30 | 9.57MiB 68k https | avc1.4d4015 68k video only 240p, TV, mp4_dash 604 mp4 426x240 30 | ~ 39.49MiB 280k m3u8 | vp09.00.20.08 280k video only Untested, IOS 242 webm 426x240 30 | 10.60MiB 75k https | vp9 75k video only 240p, TV, webm_dash 395 mp4 426x240 30 | 9.68MiB 69k https | av01.0.00M.08 69k video only 240p, TV, mp4_dash 93 mp4 640x360 30 | ~ 97.41MiB 691k m3u8 | avc1.4D401E mp4a.40.2 [en] Untested, WEB-S 230 mp4 640x360 30 | ~ 97.41MiB 691k m3u8 | avc1.4D401E 691k video only Untested, IOS 134 mp4 640x360 30 | 18.95MiB 134k https | avc1.4d401e 134k video only 360p, TV, mp4_dash 18 mp4 640x360 30 2 | 61.07MiB 433k https | avc1.42001E mp4a.40.2 44k [en] 360p, TV 605 mp4 640x360 30 | ~ 88.79MiB 630k m3u8 | vp09.00.21.08 630k video only Untested, IOS 243 webm 640x360 30 | 24.07MiB 171k https | vp9 171k video only 360p, TV, webm_dash 396 mp4 640x360 30 | 20.46MiB 145k https | av01.0.01M.08 145k video only 360p, TV, mp4_dash 94 mp4 854x480 30 | ~150.81MiB 1069k m3u8 | avc1.4D401F mp4a.40.2 [en] Untested, WEB-S 231 mp4 854x480 30 | ~150.81MiB 1069k m3u8 | avc1.4D401F 1069k video only Untested, IOS 135 mp4 854x480 30 | 30.51MiB 216k https | avc1.4d401f 216k video only 480p, TV, mp4_dash 606 mp4 854x480 30 | ~135.96MiB 964k m3u8 | vp09.00.30.08 964k video only Untested, IOS 244 webm 854x480 30 | 39.73MiB 282k https | vp9 282k video only 480p, TV, webm_dash 397 mp4 854x480 30 | 33.93MiB 241k https | av01.0.04M.08 241k video only 480p, TV, mp4_dash 136 mp4 1280x720 30 | 107.76MiB 764k https | avc1.4d401f 764k video only 720p, TV, mp4_dash 247 webm 1280x720 30 | 78.17MiB 554k https | vp9 554k video only 720p, TV, webm_dash 300 mp4 1280x720 60 | ~537.81MiB 3814k m3u8 | avc1.4D4020 mp4a.40.2 [en] Untested, WEB-S 311 mp4 1280x720 60 | ~537.81MiB 3814k m3u8 | avc1.4D4020 3814k video only Untested, IOS 298 mp4 1280x720 60 | 192.41MiB 1365k https | avc1.4d4020 1365k video only 720p60, TV, mp4_dash 612 mp4 1280x720 60 | ~426.09MiB 3021k m3u8 | vp09.00.40.08 3021k video only Untested, IOS 302 webm 1280x720 60 | 122.09MiB 866k https | vp9 866k video only 720p60, TV, webm_dash 398 mp4 1280x720 60 | 98.26MiB 697k https | av01.0.08M.08 697k video only 720p60, TV, mp4_dash 301 mp4 1920x1080 60 | ~883.96MiB 6268k m3u8 | avc1.64002A mp4a.40.2 [en] Untested, WEB-S 312 mp4 1920x1080 60 | ~883.96MiB 6268k m3u8 | avc1.64002A 6268k video only Untested, IOS 299 mp4 1920x1080 60 | 357.68MiB 2537k https | avc1.64002a 2537k video only 1080p60, TV, mp4_dash 617 mp4 1920x1080 60 | ~844.54MiB 5989k m3u8 | vp09.00.41.08 5989k video only Untested, IOS 303 webm 1920x1080 60 | 229.47MiB 1627k https | vp9 1627k video only 1080p60, TV, webm_dash 399 mp4 1920x1080 60 | 165.16MiB 1171k https | av01.0.09M.08 1171k video only 1080p60, TV, mp4_dash 623 mp4 2560x1440 60 | ~ 1.94GiB 14096k m3u8 | vp09.00.50.08 14096k video only Untested, IOS 308 webm 2560x1440 60 | 714.57MiB 5068k https | vp9 5068k video only 1440p60, TV, webm_dash 400 mp4 2560x1440 60 | 437.55MiB 3103k https | av01.0.12M.08 3103k video only 1440p60, TV, mp4_dash 628 mp4 3840x2160 60 | ~ 3.87GiB 28064k m3u8 | vp09.00.51.08 28064k video only Untested, IOS 315 webm 3840x2160 60 | 2.03GiB 14721k https | vp9 14721k video only 2160p60, TV, webm_dash 401 mp4 3840x2160 60 | 813.80MiB 5772k https | av01.0.13M.08 5772k video only 2160p60, TV, mp4_dash i.e. WEB-S stops at 1080p60, while IOS further offers 1440p60 and 2160p60 ; when the tv client "goes bust" (either because the implemented "player 0004de42" hack stops working (and/or upstream move to the deno dep) or Google enforce the POT requirement on it - like they did yesterday for the tv_simply client), iOS formats will be the only source for >=1440p resolutions; until IOS itself "goes bust", too ...
-
... But why don't you read previous posts in this thread? https://msfn.org/board/topic/184368-who-here-has-a-youtube-dl-compile-for-winxp/page/25/#findComment-1282212 https://msfn.org/board/topic/184368-who-here-has-a-youtube-dl-compile-for-winxp/page/25/#findComment-1282226 (in the logs, search for formats that have the "WEB-S" label in the INFO (last) column)
-
This isn't now the case, starting with (stable) yt-dlp-2025.09.26 release; "web_safari" is now part of the default clients... ... And yes, they've done it again ...
-
Thank you @Reino, I was searching the upstream issue tracker as you posted your comment, thus I found it is because of: https://github.com/yt-dlp/yt-dlp/issues/14456 Google, as I have written already, are really satanic , their war against downloaders probably now conducted via AI (their own Gemini e.a) and this has been insinuated also elsewhere... A new upstream release has just been made, https://github.com/yt-dlp/yt-dlp/releases/tag/2025.09.26 to tackle the new blockade: What this actually boils down to is even less choice of formats for the end yt-dlp user ; as I have posted, some posts above, "web_safari" yt-client only affords avc1 (h264) video streams (and aac audio ones) ... yt-dlp -vF "BdGH9jgSjkU" [debug] Command-line config: ['-vF', 'BdGH9jgSjkU'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version stable@2025.09.26 from yt-dlp/yt-dlp [12b57d285] (zip) [debug] Python 3.11.13 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: none [debug] Optional libraries: sqlite3-3.45.1 [debug] Proxy map: {} [debug] Request Handlers: urllib [debug] Plugin directories: none [debug] Loaded 1833 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: BdGH9jgSjkU [youtube] BdGH9jgSjkU: Downloading webpage [youtube] BdGH9jgSjkU: Downloading tv client config [debug] [youtube] Forcing player 0004de42 in place of player a61444a1 original url = /s/player/a61444a1/player_ias.vflset/en_US/base.js [youtube] BdGH9jgSjkU: Downloading tv player API JSON [youtube] BdGH9jgSjkU: Downloading web safari player API JSON [debug] Loading youtube-nsig.0004de42-main from cache [debug] [youtube] Decrypted nsig 18fyc2Ry_Wo3vwU => jtjJGKc6jKWfiA [debug] [youtube] Decrypted nsig AMU_1p6Z-0u4p5L => yO2NOWs_8Ii3qg [youtube] BdGH9jgSjkU: Downloading m3u8 information [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 BdGH9jgSjkU: ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO ---------------------------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 0 | mhtml | images storyboard sb1 mhtml 160x90 0 | mhtml | images storyboard sb0 mhtml 320x180 0 | mhtml | images storyboard 249-drc webm audio only 2 | 7.25MiB 51k https | audio only opus 51k 48k [en] low, DRC, TV, webm_dash 250-drc webm audio only 2 | 8.93MiB 63k https | audio only opus 63k 48k [en] low, DRC, TV, webm_dash 249 webm audio only 2 | 7.21MiB 51k https | audio only opus 51k 48k [en] low, TV, webm_dash 250 webm audio only 2 | 8.92MiB 63k https | audio only opus 63k 48k [en] low, TV, webm_dash 140-drc m4a audio only 2 | 18.26MiB 129k https | audio only mp4a.40.2 129k 44k [en] medium, DRC, TV, m4a_dash 251-drc webm audio only 2 | 15.93MiB 113k https | audio only opus 113k 48k [en] medium, DRC, TV, webm_dash 140 m4a audio only 2 | 18.26MiB 129k https | audio only mp4a.40.2 129k 44k [en] medium, TV, m4a_dash 251 webm audio only 2 | 15.91MiB 113k https | audio only opus 113k 48k [en] medium, TV, webm_dash 91 mp4 256x144 30 | ~ 23.57MiB 167k m3u8 | avc1.4D400C mp4a.40.5 [en] Untested, WEB-S 160 mp4 256x144 30 | 4.40MiB 31k https | avc1.4d400c 31k video only 144p, TV, mp4_dash 278 webm 256x144 30 | 7.91MiB 56k https | vp9 56k video only 144p, TV, webm_dash 394 mp4 256x144 30 | 5.66MiB 40k https | av01.0.00M.08 40k video only 144p, TV, mp4_dash 92 mp4 426x240 30 | ~ 43.94MiB 312k m3u8 | avc1.4D4015 mp4a.40.5 [en] Untested, WEB-S 133 mp4 426x240 30 | 9.57MiB 68k https | avc1.4d4015 68k video only 240p, TV, mp4_dash 242 webm 426x240 30 | 13.14MiB 93k https | vp9 93k video only 240p, TV, webm_dash 395 mp4 426x240 30 | 9.68MiB 69k https | av01.0.00M.08 69k video only 240p, TV, mp4_dash 93 mp4 640x360 30 | ~ 97.41MiB 691k m3u8 | avc1.4D401E mp4a.40.2 [en] Untested, WEB-S 134 mp4 640x360 30 | 18.95MiB 134k https | avc1.4d401e 134k video only 360p, TV, mp4_dash 18 mp4 640x360 30 2 | 61.07MiB 433k https | avc1.42001E mp4a.40.2 44k [en] 360p, TV 243 webm 640x360 30 | 23.95MiB 170k https | vp9 170k video only 360p, TV, webm_dash 396 mp4 640x360 30 | 20.46MiB 145k https | av01.0.01M.08 145k video only 360p, TV, mp4_dash 94 mp4 854x480 30 | ~150.81MiB 1069k m3u8 | avc1.4D401F mp4a.40.2 [en] Untested, WEB-S 135 mp4 854x480 30 | 30.51MiB 216k https | avc1.4d401f 216k video only 480p, TV, mp4_dash 244 webm 854x480 30 | 41.38MiB 293k https | vp9 293k video only 480p, TV, webm_dash 397 mp4 854x480 30 | 33.93MiB 241k https | av01.0.04M.08 241k video only 480p, TV, mp4_dash 136 mp4 1280x720 30 | 107.76MiB 764k https | avc1.4d401f 764k video only 720p, TV, mp4_dash 247 webm 1280x720 30 | 81.43MiB 578k https | vp9 578k video only 720p, TV, webm_dash 300 mp4 1280x720 60 | ~537.81MiB 3814k m3u8 | avc1.4D4020 mp4a.40.2 [en] Untested, WEB-S 298 mp4 1280x720 60 | 192.41MiB 1365k https | avc1.4d4020 1365k video only 720p60, TV, mp4_dash 302 webm 1280x720 60 | 135.96MiB 964k https | vp9 964k video only 720p60, TV, webm_dash 398 mp4 1280x720 60 | 98.26MiB 697k https | av01.0.08M.08 697k video only 720p60, TV, mp4_dash 301 mp4 1920x1080 60 | ~883.96MiB 6268k m3u8 | avc1.64002A mp4a.40.2 [en] Untested, WEB-S 299 mp4 1920x1080 60 | 357.68MiB 2537k https | avc1.64002a 2537k video only 1080p60, TV, mp4_dash 303 webm 1920x1080 60 | 202.85MiB 1439k https | vp9 1439k video only 1080p60, TV, webm_dash 399 mp4 1920x1080 60 | 165.16MiB 1171k https | av01.0.09M.08 1171k video only 1080p60, TV, mp4_dash 308 webm 2560x1440 60 | 685.79MiB 4864k https | vp9 4864k video only 1440p60, TV, webm_dash 400 mp4 2560x1440 60 | 437.55MiB 3103k https | av01.0.12M.08 3103k video only 1440p60, TV, mp4_dash 315 webm 3840x2160 60 | 1.23GiB 8929k https | vp9 8929k video only 2160p60, TV, webm_dash 401 mp4 3840x2160 60 | 813.80MiB 5772k https | av01.0.13M.08 5772k video only 2160p60, TV, mp4_dash FWIW, format 299 seems to download now OK with yt-dlp-2025.09.26 : [youtube] Extracting URL: BdGH9jgSjkU [youtube] BdGH9jgSjkU: Downloading webpage [youtube] BdGH9jgSjkU: Downloading tv client config [youtube] BdGH9jgSjkU: Downloading tv player API JSON [youtube] BdGH9jgSjkU: Downloading web safari player API JSON [youtube] BdGH9jgSjkU: Downloading m3u8 information [info] BdGH9jgSjkU: Downloading 1 format(s): 299 [download] Destination: Destroying Asteroid YR4 ?? Bummer for Hycean Worlds ?? W ater on Ryugu [BdGH9jgSjkU].mp4 [download] 34.8% of 357.68MiB at 556.87KiB/s ETA 07:08 Explanation of the issue: https://github.com/yt-dlp/yt-dlp/issues/14456#issuecomment-3339355268 ... and the end is nearer ...
-
... Can confirm: yt-dlp -f 299+140 -N 4 "BdGH9jgSjkU" [youtube] Extracting URL: BdGH9jgSjkU [youtube] BdGH9jgSjkU: Downloading webpage [youtube] BdGH9jgSjkU: Downloading tv simply player API JSON [youtube] BdGH9jgSjkU: Downloading tv client config [youtube] BdGH9jgSjkU: Downloading tv player API JSON [info] BdGH9jgSjkU: Downloading 1 format(s): 299+140 [download] Resuming download at byte 5626260 [download] Destination: Destroying Asteroid YR4 ?? Bummer for Hycean Worlds ?? Water on Ryugu [BdGH9jgSjkU].f299.mp4 [download] 4.5% of 338.63MiB at 328.72KiB/s ETA 16:47 ERROR: unable to download video data: HTTP Error 403: Forbidden ... but for me it was ca. 15 MiB (maybe because of the -N 4 flag?) ... EDIT: And the download speed before reaching the 403 mark is being extremely throttled, ca. 50 KiB/s (for default -N 1) ...
-
... I'm sorry I have to say this , but once the hack currently implemented by upstream stops working (and it will stop ), for XP/Vista[/Win7] users, for which the scheduled workaround, deno, isn't compatible, "Apple-device" (iOS+web_safari) type of YouTube (HLS) streams will be the ONLY accessible options, at least until Google restricts them further with a POT implementation; the log below was generated with yesterday's Vista build of yours , it provides a glimpse of how things would look when "the hack" has been broken and the deno-enabling PR merged: yt-dlp_x86 --extractor-args "youtube:player_client=ios,web_safari" -vF "O5TS2CbBhKo" [debug] Command-line config: ['--extractor-args', 'youtube:player_client=ios,web_safari', '-vF', 'O5TS2CbBhKo'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version local@2025.09.25 [4429fd045] (win_x86_exe) [debug] Python 3.11.9 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.5.2 5 Aug 2025) [debug] exe versions: none [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.5, sqlite3-3.45.1, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1833 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: O5TS2CbBhKo [youtube] O5TS2CbBhKo: Downloading webpage [debug] [youtube] Forcing "main" player JS variant for player 0004de42 original url = /s/player/a61444a1/player_ias.vflset/en_US/base.js [youtube] O5TS2CbBhKo: Downloading ios player API JSON [youtube] O5TS2CbBhKo: Downloading web safari player API JSON [debug] [youtube] O5TS2CbBhKo: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [debug] [youtube] Extracting signature function 0004de42-main-107 [debug] Loading youtube-sigfuncs.0004de42-main-107 from cache [debug] Loading youtube-nsig.0004de42-main from cache [debug] [youtube] Decrypted nsig Nc-7Qm-M-NmbBoH => S5jQA8mpxn7KDw WARNING: [youtube] O5TS2CbBhKo: Some web_safari 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 [youtube] O5TS2CbBhKo: Downloading m3u8 information [youtube] O5TS2CbBhKo: Downloading m3u8 information [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 O5TS2CbBhKo: ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ASR MORE INFO ---------------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 1 | mhtml | images storyboard sb1 mhtml 160x90 1 | mhtml | images storyboard sb0 mhtml 320x180 1 | mhtml | images storyboard 233 mp4 audio only | m3u8 | audio only unknown Untested, Default, low, IOS 234 mp4 audio only | m3u8 | audio only unknown Untested, Default, high, IOS 602 mp4 256x144 12 | ~ 2.55MiB 89k m3u8 | vp09.00.10.08 89k video only Untested, IOS 91 mp4 256x144 24 | ~ 5.55MiB 193k m3u8 | avc1.4D400C mp4a.40.5 WEB-S 269 mp4 256x144 24 | ~ 5.55MiB 193k m3u8 | avc1.4D400C 193k video only Untested, IOS 603 mp4 256x144 24 | ~ 5.06MiB 176k m3u8 | vp09.00.11.08 176k video only Untested, IOS 92 mp4 426x240 24 | ~ 10.22MiB 356k m3u8 | avc1.4D4015 mp4a.40.5 WEB-S 229 mp4 426x240 24 | ~ 10.22MiB 356k m3u8 | avc1.4D4015 356k video only Untested, IOS 604 mp4 426x240 24 | ~ 8.23MiB 286k m3u8 | vp09.00.20.08 286k video only Untested, IOS 93 mp4 640x360 24 | ~ 23.51MiB 818k m3u8 | avc1.4D401E mp4a.40.2 WEB-S 230 mp4 640x360 24 | ~ 23.51MiB 818k m3u8 | avc1.4D401E 818k video only Untested, IOS 18 mp4 640x360 24 2 | ? 11.63MiB 405k https | avc1.42001E mp4a.40.2 22k 360p, WEB-S 605 mp4 640x360 24 | ~ 14.13MiB 492k m3u8 | vp09.00.21.08 492k video only Untested, IOS 94 mp4 854x480 24 | ~ 41.82MiB 1456k m3u8 | avc1.4D401E mp4a.40.2 WEB-S 231 mp4 854x480 24 | ~ 41.82MiB 1456k m3u8 | avc1.4D401E 1456k video only Untested, IOS 606 mp4 854x480 24 | ~ 22.32MiB 777k m3u8 | vp09.00.30.08 777k video only Untested, IOS 95 mp4 1280x720 24 | ~ 72.92MiB 2538k m3u8 | avc1.64001F mp4a.40.2 WEB-S 232 mp4 1280x720 24 | ~ 72.92MiB 2538k m3u8 | avc1.64001F 2538k video only Untested, IOS 609 mp4 1280x720 24 | ~ 33.23MiB 1157k m3u8 | vp09.00.31.08 1157k video only Untested, IOS 96 mp4 1920x1080 24 | ~138.27MiB 4813k m3u8 | avc1.640028 mp4a.40.2 WEB-S 270 mp4 1920x1080 24 | ~138.27MiB 4813k m3u8 | avc1.640028 4813k video only Untested, IOS 614 mp4 1920x1080 24 | ~ 50.15MiB 1746k m3u8 | vp09.00.40.08 1746k video only Untested, IOS NB: I'm not even sure 4K video streams are being made available for either iOS or Safari ; opus audio is also unavailable; and the web_safari HLS streams are NOT parsed by default, they have to be explicitly requested via the '--extractor-args "youtube:player_client=web_safari"' cmdline flag (or equivalent config setting); personally, I'd hope the POT-less iOS streams remain accessible in the XP/Vista yt-dlp variants, though I realise this wish/expectation could be, simply, "a lot to ask for..." Best wishes!
-
... A very recent example for me was when I was pointed, by a G-Search result, to https://www.gnu.org/ while using r3dfox-140.0.4-win32 on my Vista SP2 x86 OS; I was quite miffed to be "greeted" by an (unexpected) 403 error : The default browser UA here is: Mozilla/5.0 (Windows NT 6.0; rv:140.0) Gecko/20100101 Firefox/140.0 r3dfox/140.0.4 so I'm not sure whether they object to the OS slice (Windows NT 6.0) or to the r3dfox slice (r3dfox/140.0.4); all I know is I just had to spoof FirefoxESR-140 on Win10/11: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 and I was immediately in...
-
... Well, after yt-player 2b83d2e0-main, Google are now serving 377ca75b-main, which is equally BAD ; but @nicolaasjan, I just made, what I think is, an important discovery, at least where a "no-Deno' yt-dlp setup is concerned; it would appear my efforts to restore iOS format support in yt-dlp were not in vain; iOS formats ARE NOT IMPACTED by the inability of the native JSInterp to handle yt-player 2b83d2e0-main and later; I just used your 2025.08.20.60440 build (compiled with py3.9 and the last to support iOS formats without supplying a POT string) and here's the outcome: yt-dlp --extractor-args "youtube:player_client=ios" -vF "O5TS2CbBhKo" [debug] Command-line config: ['--ffmpeg-location', '<redacted>\\FFmpeg', '--downloader-args', 'ffmpeg:-v 8 -stats', '--extractor-args', 'youtube:player_client=ios', '-vF', 'O5TS2CbBhKo'] Deprecated Feature: Support for Python version 3.9 has been deprecated. Please update to Python3.10 or above [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version nicolaasjan/yt-dlp@2025.08.20.060440 (win32_dir) [debug] Python 3.9.13 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 1.1.1w 11 Sep 2023) [debug] exe versions: ffmpeg n6.1-dev-2615-N-112499-ga76b409 (setts), ffprobe n6.1-dev-2615-N-112499-ga76b409 [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.4, sqlite3-3.37.2, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1839 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: O5TS2CbBhKo [youtube] O5TS2CbBhKo: Downloading webpage [youtube] O5TS2CbBhKo: Downloading ios player API JSON [debug] [youtube] O5TS2CbBhKo: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [youtube] O5TS2CbBhKo: Downloading m3u8 information [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 O5TS2CbBhKo: ID EXT RESOLUTION FPS | FILESIZE TBR PROTO | VCODEC VBR ACODEC MORE INFO --------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 1 | mhtml | images storyboard sb1 mhtml 160x90 1 | mhtml | images storyboard sb0 mhtml 320x180 1 | mhtml | images storyboard 233 mp4 audio only | m3u8 | audio only unknown Untested, Default, low, IOS 234 mp4 audio only | m3u8 | audio only unknown Untested, Default, high, IOS 602 mp4 256x144 12 | ~ 2.55MiB 89k m3u8 | vp09.00.10.08 89k video only Untested, IOS 269 mp4 256x144 24 | ~ 5.55MiB 193k m3u8 | avc1.4D400C 193k video only Untested, IOS 603 mp4 256x144 24 | ~ 5.06MiB 176k m3u8 | vp09.00.11.08 176k video only Untested, IOS 229 mp4 426x240 24 | ~ 10.22MiB 356k m3u8 | avc1.4D4015 356k video only Untested, IOS 604 mp4 426x240 24 | ~ 8.23MiB 286k m3u8 | vp09.00.20.08 286k video only Untested, IOS 230 mp4 640x360 24 | ~ 23.51MiB 818k m3u8 | avc1.4D401E 818k video only Untested, IOS 605 mp4 640x360 24 | ~ 14.13MiB 492k m3u8 | vp09.00.21.08 492k video only Untested, IOS 231 mp4 854x480 24 | ~ 41.82MiB 1456k m3u8 | avc1.4D401E 1456k video only Untested, IOS 606 mp4 854x480 24 | ~ 22.32MiB 777k m3u8 | vp09.00.30.08 777k video only Untested, IOS 232 mp4 1280x720 24 | ~ 72.92MiB 2538k m3u8 | avc1.64001F 2538k video only Untested, IOS 609 mp4 1280x720 24 | ~ 33.23MiB 1157k m3u8 | vp09.00.31.08 1157k video only Untested, IOS 270 mp4 1920x1080 24 | ~138.27MiB 4813k m3u8 | avc1.640028 4813k video only Untested, IOS 614 mp4 1920x1080 24 | ~ 50.15MiB 1746k m3u8 | vp09.00.40.08 1746k video only Untested, IOS ... and: yt-dlp --extractor-args "youtube:player_client=ios" -vf 234 -N 2 "O5TS2CbBhKo" [debug] Command-line config: ['--ffmpeg-location', '<redacted>\\FFmpeg', '--downloader-args', 'ffmpeg:-v 8 -stats', '--extractor-args', 'youtube:player_client=ios', '-vf', '234', '-N', '2', 'O5TS2CbBhKo'] Deprecated Feature: Support for Python version 3.9 has been deprecated. Please update to Python 3.10 or above [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version nicolaasjan/yt-dlp@2025.08.20.060440 (win32_dir) [debug] Python 3.9.13 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 1.1.1w 11 Sep 2023) [debug] exe versions: ffmpeg n6.1-dev-2615-N-112499-ga76b409 (setts), ffprobe n6.1-dev-2615-N-112499-ga76b409 [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, mutagen-1.47.0, requests-2.32.4, sqlite3-3.37.2, urllib3-2.5.0, websockets-15.0.1 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Plugin directories: none [debug] Loaded 1839 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: O5TS2CbBhKo [youtube] O5TS2CbBhKo: Downloading webpage [youtube] O5TS2CbBhKo: Downloading ios player API JSON [debug] [youtube] O5TS2CbBhKo: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=ios.gvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [youtube] O5TS2CbBhKo: Downloading m3u8 information [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] Testing format 234 [download] Sleeping 6.00 seconds as required by the site... [hlsnative] Downloading m3u8 manifest [hlsnative] Total fragments: 45 [download] Destination: <redacted>\yt-dlp_py39_x86_Vista_onedir\tmpk84x9e_f.tmp [debug] File locking is not supported. Proceeding without locking [download] 100% of 85.49KiB in 00:00:00 at 322.60KiB/s [info] O5TS2CbBhKo: Downloading 1 format(s): 234 [debug] Invoking hlsnative downloader on "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1758778311/ei/Z3_UaMSQCbqJsvQP9fWLqAI/ip/46.12.130.133/id/3b94d2d826c184aa/itag/234/source/youtube/requiressl/yes/ratebypass/yes/pfa/1/goi/133/sgoap/clen%3D3899667%3Bdur%3D240.907%3Bgir%3Dyes%3Bitag%3D140%3Blmt%3D1746948952157345/rqh/1/hls_chunk_host/rr1---sn-4vguioxu-n3bz.googlevideo.com/xpc/EgVo2aDSNQ%3D%3D/met/1758756711,/mh/yJ/mm/31,29/mn/sn-4vguioxu-n3bz,sn-nv47znel/ms/au,rdu/mv/m/mvi/1/pl/18/rms/au,au/initcwndbps/1085000/bui/ATw7iSUOzEWQ6PX6VYYXLkiO7dzFE3xfmcHfZoFK_8S7hMjX1ycDlaPakTSxUuOy0Qdqy7c6PbpJMvb6/spc/hcYD5W3kgO0onbxgfMF8TXKcbK3UkBVFobHYr7hkRDzJ46gEuEdvlNnyX7juBw6M/vprv/1/playlist_type/DVR/dover/13/txp/5318224/mt/1758756313/fvip/4/short_key/1/keepalive/yes/fexp/51552689,51565116,51565681,51580968/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,pfa,goi,sgoap,rqh,xpc,bui,spc,vprv,playlist_type/sig/AJfQdSswRQIhAKM-l416Kpd36plAWO6JIVM79VLGBfbD_7oO__YVX9NfAiBMbZJDeQvoNol-G_1XYy9SoBez9b9X2HvWTwAUVb_h3Q%3D%3D/lsparams/hls_chunk_host,met,mh,mm,mn,ms,mv,mvi,pl,rms,initcwndbps/lsig/APaTxxMwRgIhAPQ4OhatAi1gQBDxujrZ_djlRX9gpWtt3d-a_QNog5AeAiEA9Q8QhO5Ua_aP270AbFi5qbD8TG2jzWVVIh9XSyBz5Vo%3D/playlist/index.m3u8" [hlsnative] Downloading m3u8 manifest [hlsnative] Total fragments: 45 [download] Destination: Love and Money - Halleluiah Man (HQ Audio) [O5TS2CbBhKo].mp4 [download] 100% of 3.75MiB in 00:00:04 at 811.59KiB/s [debug] ffprobe command line: <redacted>\FFmpeg\ffprobe -hide_banner -show_format -show_streams -print_format json "file:Love and Money - Halleluiah Man (HQ Audio) [O5TS2CbBhKo].mp4"
-
Read previous posts in this thread; Google have ruined everything for "legacy" WinOSes (XP/Vista), though Win7 x64 might still stand a chance in the future ... Again, you'd have found your answers if you had read previous posts : i.e. the builds linked in the signature target specifically XP SP3 (32-bit); though the linked Vista builds (e.g. here) should also work on Win7+ ...
-
... Well, isn't this the norm lately? Bad news from everywhere ... But if it involves yt-dlp/youtube-dl, then it must surely come from most satanic Google ... During the last years, "they"'ve been mercilessly throwing in the direction of the popular YT-downloaders whatever they could devise to thwart their normal operation ; proprietary HTML5 player blobs with encrypted signature (n-sig), (lately) streams protected with PO Tokens, various manipulations of signed-in cookies, irreversible breakage of the "hack" to download age-gated clips without being signed-in, very intense IP blocking client-side, using their proprietary streaming protocol called SABR, even full-blown DRM on (TV) streams was trialed some weeks ago (plus other things I forget) ... All this time, the yt-dlp devs tried the best they had in their arsenal to combat Google's anti-download agenda; up until now, the n-sig decrypting "issue" had been successfully dealt with with frequent updates on the yt-dlp side (as soon as a new yt-player showed up), using for decryption what is called a Native JS Interpreter (pure-Pyrhon-based); successful decryption of n-sig is vital these days, because it's an "all or nothing case"; many months ago, YT would let you download at significantly throttled speeds without a decrypted n-sig, but currently you're plainly being denied any download ... The Native JS Interpreter worked fine until (and including) yt-player 0004de42 ; then, yt-player 2b83d2e0 has started to propagate across YT CDNs: https://github.com/yt-dlp/yt-dlp/issues/14400 I have to rely on the expertise of the yt-dlp devs, but, most sadly, it appears this new yt-player is a new kind of a formidable beast that is no match for the Python-based JSinterp ... At the moment, a stop-gap solution has been implemented, https://github.com/yt-dlp/yt-dlp/pull/14398 but, as it's noted, ... hence: https://github.com/yt-dlp/yt-dlp/issues/14404 I do remember well that in the past, in the case of an unsolvable signature, PhantomJS would kick-in; it didn't work in all cases, the 32-bit executable requires Vista+ and the project has now become an "abandonware", thus having been rejected, for "security" reasons, by the overwhelming majority of the yt-dlp "fanbois" (most of them already on Win11) ... I haven't closely followed yt-dlp development ever since they dropped py3.7 support, but has PhantomJS already been dropped as a JSInterp fallback inside the yt-dlp code? In any case, the proposed "solution" by the yt-dlp team isn't suitable for the retrocomputing (Windows) communities whichever way you look at it ; deno is built on recent versions of Node JS and, as such, requires Win10+; the standalone Windows executable they provide is ONLY 64-bit ; this means: a) 32-bit OSes are unsupported (unless someone can compile deno from source as a Windows x86 binary) b) every Windows OS below 10 will be unsupported (that will include Win8.1, that official yt-dlp still supports); this is the part that infuriates me the most : our "brave" retrocomputing heros have gone to great lengths to backport recent CPython versions to XP+Vista (cmalex , literally from the front line ), Vista+Win7 (Vladimir Andreevich), Win7+ (Aohan Dang), just so that XP/Vista/Win7 users can continue to use yt-dlp, but most evil Google , with just one strike, will nullify all those combined efforts ; because how good would yt-dlp/youtube-dl be if it can't fetch YouTube ? Yes, the upstream original app, youtube-dl, that never had a JSInterp fallback (namely PhantomJS) to begin with, in the last months relied mainly on yt-dlp "solutions" to fix its broken JSInterp, whenever the case arose ... Given that youtube-dl caters specifically to older CPython versions (hence, older OSes capable of running said older CPython versions), its predicament is more pronounced: https://github.com/ytdl-org/youtube-dl/issues/33186 Since every open-source app/project out there seems to support almost every Linux distro (a hyperbole, perhaps, but you get the drift ), it's legacy Windows OS users, again, that will be screwed over ... So full of wrath right now... FWIW, yt-player 2b83d2e0-main has just arrived in my neck of the woods : yt-dl -vF "hS4uoPz_A00" [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--ffmpeg-location', '.\\FFmpeg', '--external-downloader-args', '-v 8 -stats', '-vF', 'hS4uoPz_A00'] [debug] Encodings: locale cp1253, fs mbcs, out cp737, pref cp1253 [debug] youtube-dl version 2025.06.29 (single file build) [debug] ** This version was built from the latest master code at https://github.com/ytdl-org/youtube-dl. [debug] ** For support, visit the main site. [debug] Python 3.4.4 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 - OpenSSL 1.0.2d 9 Jul 2015 [debug] exe versions: ffmpeg n6.1-dev-2615-N-112499-ga76b409, ffprobe n6.1-dev-2615-N-112499-ga76b409, phantomjs 2.1.1, rtmpdump 2.4 [debug] Proxy map: {} [youtube] hS4uoPz_A00: Downloading webpage [youtube] hS4uoPz_A00: Downloading TVHTML5 API JSON [youtube] hS4uoPz_A00: Downloading player 2b83d2e0-main WARNING: [youtube] Falling back to generic n function search ERROR: Unable to extract nsig function code (caused by RegexNotFoundError('Unable to extract Initial JS player n function name; please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output.',)); please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output. Traceback (most recent call last): File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1856, in _decrypt_nsig File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1968, in _extract_n_function_code File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1971, in _extract_n_function_code_jsi File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1948, in _extract_n_function_name File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1892, in generic_n_function_search File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\common.py", line 1093, in _search_regex youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player n function name; please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output. Traceback (most recent call last): File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1856, in _decrypt_nsig File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1968, in _extract_n_function_code File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1971, in _extract_n_function_code_jsi File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1948, in _extract_n_function_name File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1892, in generic_n_function_search File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\common.py", line 1093, in _search_regex youtube_dl.utils.RegexNotFoundError: Unable to extract Initial JS player n function name; please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\YoutubeDL.py", line 886, in wrapper File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\YoutubeDL.py", line 982, in __extract_info File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\common.py", line 573, in extract File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 2480, in _real_extract File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 2006, in _unthrottle_format_urls File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1833, in inner File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1825, in inner File "D:\a\ytdl-nightly\ytdl-nightly\youtube_dl\extractor\youtube.py", line 1858, in _decrypt_nsig youtube_dl.utils.ExtractorError: Unable to extract nsig function code (caused by RegexNotFoundError('Unable to extract Initial JS player n function name; please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output.',)); please report this issue on https://github.com/ytdl-org/youtube-dl/issues , using the appropriate issue template. Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose option and include the complete output. Commiserations...
-
... So, this one has been compiled with @vladimir-andreevich's CPython-3.11.9-win32, Vista-compatible, implementation; very nice ... Tip1: v3.11.9 has been compiled with the OpenSSL-3.0.13 dependency (files libcrypto-3.dll+libssl-3.dll); if one downloads python-3.12.10-embed-win32.zip , files libcrypto-3.dll+libssl-3.dll are of version 3.0.16; these are interchangeable with the v3.0.13 files, so one can have CPython-3.11.9 with the updated OpenSSL-3.0.16 dependency ... Tip2: If one copies files _ssl.pyd+libcrypto-3.dll+libssl-3.dll from inside cmalex's py3.11.4 (for XP) distribution and overwrites existing files (of same name) inside Vladimir's 3.11.9 distribution, one can have CPython-3.11.9 with the updated OpenSSL-3.5.2 dependency ...
-
... But why double plus signs in the "test iOS HLS streams" block? @@ -3579,6 +3581,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor): if missing_pot: f['format_note'] = join_nonempty(f.get('format_note'), 'MISSING POT', delim=' ') f['source_preference'] -= 20 ++ # XXX: Check if IOS HLS formats are affected by PO token enforcement; temporary ++ # See https://github.com/yt-dlp/yt-dlp/issues/13511 ++ if proto == 'hls' and client_name == 'ios': ++ f['__needs_testing'] = True itags[itag].add(key) ... Not quite ; I do have a quite old by now (ca. 2016) "portable" installation of a native Windows 32-bit compiler called "media-autobuild_suite" lying around on an external HDD somewhere (that compiler was used until ca. 2018 to compile non-free custom FFmpeg builds), which comes with many MSYS2 utilities, including diff; then I do have a portable installation of GitPortable, with the portable package frozen at v2.11.1-devtest.1 ; that was the last that had a dedicated portable launcher for the CLI version, all versions after that have only one launcher, for the GUI version; I never bothered to update Git itself inside that past v2.22.0-32-bit ... Thanks for that ; has this been properly documented somewhere, or was it a "trial-and-error" discovery? Last info I had about ceasing NT 6.0 support was this: https://github.com/git-for-windows/git/releases/tag/v2.36.0.windows.1 Actually, the software I used to create the patch file I uploaded here is a much older but very simple app, part of DiffUtils for Windows ; the cmd I used was: diff -u -b "_video.py.a" "_video.py.b" > "_video.py.patch"
-
That link worked OK , so thanks , but I'm afraid new "_video.py.diff" ISN'T what I meant in my previous post ; isn't how the (whole) diff should look, but it just contains the segment/lines of your original "_video.py.diff" (for which the link now 404s) that I would modify, to make the code appear as it was before upstream commit 895e762 ; do you now get it? In your second "_video.py.diff", you left out the segment for "testing" the iOS HLS streams (which 895e762 also removed) and this part is indispensable; Windows lacks a native diff app, so I usually employ a Text Editor to modify source; for your sake, I installed a diff.exe Windows port and modifying the latest upstream version of file "_video.py", this is the patch I came up with: --- _video.py.a 2025-09-23 20:56:26.965800000 +0300 +++ _video.py.b 2025-09-23 21:16:39.283800000 +0300 @@ -257,7 +257,7 @@ '401': {'ext': 'mp4', 'height': 2160, 'format_note': 'DASH video', 'vcodec': 'av01.0.12M.08'}, } _SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'srt', 'vtt') - _DEFAULT_CLIENTS = ('tv_simply', 'tv', 'web') + _DEFAULT_CLIENTS = ('tv_simply', 'tv', 'ios', 'web') _DEFAULT_AUTHED_CLIENTS = ('tv', 'web_safari', 'web') # Premium does not require POT (except for subtitles) _DEFAULT_PREMIUM_CLIENTS = ('tv', 'web_creator', 'web') @@ -3284,9 +3284,11 @@ f'{video_id}: {client_name} client {proto} formats require a GVS PO Token which was not provided. ' 'They will be skipped as they may yield HTTP Error 403. ' f'You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token={client_name}.gvs+XXX". ' - f'For more information, refer to {PO_TOKEN_GUIDE_URL}') + f'For more information, refer to {PO_TOKEN_GUIDE_URL} . ' + 'To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"') # Only raise a warning for non-default clients, to not confuse users. + # iOS HLS formats still work without PO Token, so we don't need to warn about them. if client_name in (*self._DEFAULT_CLIENTS, *self._DEFAULT_AUTHED_CLIENTS): self.write_debug(msg, only_once=True) else: @@ -3579,6 +3581,10 @@ if missing_pot: f['format_note'] = join_nonempty(f.get('format_note'), 'MISSING POT', delim=' ') f['source_preference'] -= 20 + # XXX: Check if IOS HLS formats are affected by PO token enforcement; temporary + # See https://github.com/yt-dlp/yt-dlp/issues/13511 + if proto == 'hls' and client_name == 'ios': + f['__needs_testing'] = True itags[itag].add(key) @@ -4389,6 +4395,7 @@ if upload_date and live_status not in ('is_live', 'post_live', 'is_upcoming'): # Newly uploaded videos' HLS formats are potentially problematic and need to be checked + # XXX: This is redundant for as long as we are already checking all IOS HLS formats upload_datetime = datetime_from_str(upload_date).replace(tzinfo=dt.timezone.utc) if upload_datetime >= datetime_from_str('today-2days'): for fmt in info['formats']: I hope it's now clear to you ... Kind regards.
-
=> ...
-
Initial tests with a patched "2025.09.17.84413" yt-dlp version (the zip import "yt-dlp" file was patched locally) look promising ; testing was done with a "bare bones" setup, with no optional Python modules and no FFmpeg : yt-dlp --extractor-args "youtube:player_client=ios" -vF "O5TS2CbBhKo" [debug] Command-line config: ['--extractor-args', 'youtube:player_client=ios', '-vF', 'O5TS2CbBhKo'] [debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT) [debug] yt-dlp version nicolaasjan/yt-dlp@2025.09.17.084413 [e123a48f1] (zip) [debug] Python 3.11.13 (CPython x86 32bit) - Windows-Vista-6.0.6003-SP2 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: none [debug] Optional libraries: sqlite3-3.45.1 [debug] Proxy map: {} [debug] Request Handlers: urllib [debug] Plugin directories: none [debug] Loaded 1833 extractors [debug] [youtube] [pot] PO Token Providers: none [debug] [youtube] [pot] PO Token Cache Providers: memory [debug] [youtube] [pot] PO Token Cache Spec Providers: webpo [youtube] Extracting URL: O5TS2CbBhKo [youtube] O5TS2CbBhKo: Downloading webpage [youtube] O5TS2CbBhKo: Downloading ios player API JSON WARNING: [youtube] O5TS2CbBhKo: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=iosgvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [youtube] O5TS2CbBhKo: Downloading m3u8 information [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 O5TS2CbBhKo: ID EXT RESOLUTION FPS | FILESIZE TBR PROTO | VCODEC VBR ACODEC MORE INFO --------------------------------------------------------------------------------------------------------------- sb3 mhtml 48x27 0 | mhtml | images storyboard sb2 mhtml 80x45 1 | mhtml | images storyboard sb1 mhtml 160x90 1 | mhtml | images storyboard sb0 mhtml 320x180 1 | mhtml | images storyboard 233 mp4 audio only | m3u8 | audio only unknown Untested, Default, low, IOS 234 mp4 audio only | m3u8 | audio only unknown Untested, Default, high, IOS 602 mp4 256x144 12 | ~ 2.55MiB 89k m3u8 | vp09.00.10.08 89k video only Untested, IOS 269 mp4 256x144 24 | ~ 5.55MiB 193k m3u8 | avc1.4D400C 193k video only Untested, IOS 603 mp4 256x144 24 | ~ 5.06MiB 176k m3u8 | vp09.00.11.08 176k video only Untested, IOS 229 mp4 426x240 24 | ~ 10.22MiB 356k m3u8 | avc1.4D4015 356k video only Untested, IOS 604 mp4 426x240 24 | ~ 8.23MiB 286k m3u8 | vp09.00.20.08 286k video only Untested, IOS 230 mp4 640x360 24 | ~ 23.51MiB 818k m3u8 | avc1.4D401E 818k video only Untested, IOS 605 mp4 640x360 24 | ~ 14.13MiB 492k m3u8 | vp09.00.21.08 492k video only Untested, IOS 231 mp4 854x480 24 | ~ 41.82MiB 1456k m3u8 | avc1.4D401E 1456k video only Untested, IOS 606 mp4 854x480 24 | ~ 22.32MiB 777k m3u8 | vp09.00.30.08 777k video only Untested, IOS 232 mp4 1280x720 24 | ~ 72.92MiB 2538k m3u8 | avc1.64001F 2538k video only Untested, IOS 609 mp4 1280x720 24 | ~ 33.23MiB 1157k m3u8 | vp09.00.31.08 1157k video only Untested, IOS 270 mp4 1920x1080 24 | ~138.27MiB 4813k m3u8 | avc1.640028 4813k video only Untested, IOS 614 mp4 1920x1080 24 | ~ 50.15MiB 1746k m3u8 | vp09.00.40.08 1746k video only Untested, IOS and actual download: yt-dlp --extractor-args "youtube:player_client=ios" -f 234 "O5TS2CbBhKo" [youtube] Extracting URL: O5TS2CbBhKo [youtube] O5TS2CbBhKo: Downloading webpage [youtube] O5TS2CbBhKo: Downloading ios player API JSON WARNING: [youtube] O5TS2CbBhKo: ios client https formats require a GVS PO Token which was not provided. They will be skipped as they may yield HTTP Error 403. You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token=iosgvs+XXX". For more information, refer to https://github.com/yt-dlp/yt-dlp/wiki/PO-Token-Guide . To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot" [youtube] O5TS2CbBhKo: Downloading m3u8 information [info] Testing format 234 [info] O5TS2CbBhKo: Downloading 1 format(s): 234 [hlsnative] Downloading m3u8 manifest [hlsnative] Total fragments: 45 [download] Destination: Love and Money - Halleluiah Man (HQ Audio) [O5TS2CbBhKo].mp4 [download] 100% of 3.75MiB in 00:00:12 at 309.95KiB/s WARNING: O5TS2CbBhKo: Possible MPEG-TS in MP4 container or malformed AAC timestamps. Install ffmpeg to fix this automatically Best regards.
-
Greetings ; let me just say that I'm not in a position to make any demands on you; I hope my previous post didn't come off as that (a demand) ; I just picked up from the observation @Reino made previously and, as a courtesy to him, I suggested a way for him to continue fetching iOS (i.e. HLS) YT streams without the need to hunt for and extract POT strings from a browser (or some other way) ; I have no personal interest on this, other than the stated dislike of available (download) options having been removed ... With that out of the way , my Python-fu is certainly worse than yours ; I've now seen that file "_video.py" has been further modified by upstream since 895e762, as can be seen here, so now it isn't just a matter of partially reverting that commit, as I had (foolishly) suggested before... Upstream have changed priorities of yt_clients in 3bd9154, so now iOS would have to be added as third? Let's hope this doesn't break things... In your downloaded "_video.py.diff" patch, I would personally stick closer to how things were on 895e762 , so, instead of: f'For more information, refer to {PO_TOKEN_GUIDE_URL}') + 'To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"') I would go with: f'You can manually pass a GVS PO Token for this client with --extractor-args "youtube:po_token={client_name}.gvs+XXX". ' - f'For more information, refer to {PO_TOKEN_GUIDE_URL}') + f'For more information, refer to {PO_TOKEN_GUIDE_URL} . ' + 'To enable these broken formats anyway, pass --extractor-args "youtube:formats=missing_pot"') # Only raise a warning for non-default clients, to not confuse users. + # iOS HLS formats still work without PO Token, so we don't need to warn about them. if client_name in (*self._DEFAULT_CLIENTS, *self._DEFAULT_AUTHED_CLIENTS): However, as the English say, "the proof is in the pudding", so the patched code should be (compiled and) tested first for inadvertent "malfunctions" ... Thanks already ...