nicolaasjan Posted 20 hours ago Posted 20 hours ago 31 minutes ago, VistaLover said: I hope it's now clear to you ... Yes, I think so. _video.py.diff.zip I use the `git diff` command to make diff files. I presume you have git for Windows installed? The last version to support Windows Vista and Server 2008 was v2.37.1 https://git-scm.com/docs/git-diff
VistaLover Posted 18 hours ago Posted 18 hours ago (edited) 2 hours ago, nicolaasjan said: _video.py.diff.zip ... 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) 2 hours ago, nicolaasjan said: I presume you have git for Windows installed? ... 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 ... 2 hours ago, nicolaasjan said: The last version to support Windows Vista and Server 2008 was v2.37.1 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 Quote Git for Windows will also stop supporting Windows Vista soon after Git for Windows 2.36.0 is released. 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" Edited 18 hours ago by VistaLover 1
VistaLover Posted 17 hours ago Posted 17 hours ago 8 hours ago, nicolaasjan said: Updated yt-dlp_x86 for Vista: link. ... 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 ... 1
VistaLover Posted 14 hours ago Posted 14 hours ago 11 hours ago, nicolaasjan said: Bad news: ... 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 2b83d2e 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, Quote This is only expected to work for a limited time. ... 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 2b83d2e has just arrived in my neck of the woods : yt-dl -F "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... 1
nicolaasjan Posted 7 hours ago Posted 7 hours ago 9 hours ago, VistaLover said: ... But why double plus signs in the "test iOS HLS streams" block? I was a bit tired when editing that file... Fixed now. Quote 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 From the Requirements page: Quote Git for Windows requires Windows 8.1 or later on i686 and x86_64 CPU architectures. The last version to support Windows 7, 8, Server 2008 R2 and Server 2012 was v2.46.2. The last version to support Windows Vista and Server 2008 was v2.37.1. The last version of Git for Windows to support Windows XP and Windows Server 2003 is v2.10.0. The diff files I provided should be placed inside the yt-dlp source folder and applied with these commands: git apply _base.py.diff git apply _video.py.diff Quote 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? I still see it in the code, but it won't be of any use for at least YouTube... 1
nicolaasjan Posted 1 hour ago Posted 1 hour ago (edited) 13 hours ago, VistaLover said: 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 Well, at least there is Deno v1.27.0, the last one that works on Windows 7 (only 64bit...). https://github.com/yt-dlp/yt-dlp/issues/14404#issuecomment-3327285821 Quote The latest Deno binary that works on Windows 7 natively is v1.27.0 https://github.com/denoland/deno/releases/tag/v1.27.0 Deno versions 1.27.1 onwards need VxKex to run on Win7 . The latest Deno version that works with VxKex enabled is v2.0.6 v2.1.0 onwards stack dumps with VxKex enabled. [debug] Command-line config: ['-vUF', 'https://www.youtube.com/watch?v=flexhqu1zhg'] [debug] User config "C:\Users\Nico\AppData\Roaming\yt-dlp\config.txt": ['--rm-cache-dir', '--console-title', '--extractor-args', 'youtube:bypass_native_jsi;deno_no_jitless', '--list-formats-as-table', '--no-mtime', '-o', '~/Desktop/%(title)s.%(ext)s', '-S', 'res:720,vcodec:h264,acodec:mp4a', '--embed-thumbnail', '--add-metadata', '--convert-thumbnails', 'jpg', '--ppa', 'ffmpeg:-metadata synopsis=""', '--force-ipv4', '--sponsorblock-remove', 'all'] [debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out cp1252 (No VT), error cp1252 (No VT), screen cp1252 (No VT) [debug] yt-dlp version nicolaasjan/yt-dlp@2025.09.23.052315 (win_exe) [debug] Python 3.13.7 (CPython AMD64 64bit) - Windows-7-6.1.7601-SP1 (OpenSSL 3.0.16 11 Feb 2025) [debug] exe versions: ffmpeg git-2025-09-14-bdb81d9-ffmpeg-windows-build-helpers (fdk,setts), ffprobe git-2025-09-14-bdb81d9-ffmpeg-windows-build-helpers, phantomjs 2.5.0 [debug] Optional libraries: Cryptodome-3.23.0, brotli-1.1.0, certifi-2025.08.03, curl_cffi-0.13.0, 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, curl_cffi [debug] Extractor Plugins: NSigDeno (YoutubeIE) [debug] Plugin directories: C:\Users\Nico\AppData\Roaming\yt-dlp\plugins\yt-dlp-YTNSigDeno\yt_dlp_plugins [debug] Loaded 1833 extractors Removing cache dir C:\Users\Nico/.cache\yt-dlp ... [debug] Fetching release info: https://api.github.com/repos/nicolaasjan/yt-dlp/releases/latest Latest version: nicolaasjan/yt-dlp@2025.09.23.052315 yt-dlp is up to date (nicolaasjan/yt-dlp@2025.09.23.052315) [debug] [youtube+NSigDeno] [pot] PO Token Providers: none [debug] [youtube+NSigDeno] [pot] PO Token Cache Providers: memory [debug] [youtube+NSigDeno] [pot] PO Token Cache Spec Providers: webpo [youtube+NSigDeno] Extracting URL: https://www.youtube.com/watch?v=flexhqu1zhg [youtube+NSigDeno] flexhqu1zhg: Downloading webpage [debug] [youtube+NSigDeno] Forcing "main" player JS variant for player 0004de42 original url = /s/player/2b83d2e0/player_ias.vflset/en_US/base.js [youtube+NSigDeno] flexhqu1zhg: Downloading tv simply player API JSON [youtube+NSigDeno] flexhqu1zhg: Downloading tv client config [youtube+NSigDeno] flexhqu1zhg: Downloading tv player API JSON [youtube+NSigDeno] flexhqu1zhg: Downloading player 0004de42-main [debug] [youtube+NSigDeno] Deno command line: deno run C:\Users\Nico\AppData\Local\Temp\tmpkq8t1kxl [debug] [youtube+NSigDeno] Decrypted nsig CgOJja7cldvYMEu => WV3WYPF2UPHWkQ [debug] Saving youtube-nsig.0004de42-main to cache [debug] [youtube+NSigDeno] Deno command line: deno run C:\Users\Nico\AppData\Local\Temp\tmpf_1d82in [debug] [youtube+NSigDeno] Decrypted nsig 5tJUPxD_Bi4bcSP => onOnwCzMQinnaQ [debug] Sort order given by user: res:720, vcodec:h264, acodec:mp4a [debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto [debug] Formats sorted by: hasvid, ie_pref, res:720(720.0), vcodec:h264(7), acodec:mp4a(9), quality, fps, hdr:12(7), source, channels, lang, proto, size, br, asr, vext, aext, hasaud, id [SponsorBlock] Fetching SponsorBlock segments [debug] SponsorBlock query: https://sponsor.ajay.app/api/skipSegments/0854?service=YouTube&categories=%5B%22filler%22%2C+%22intro%22%2C+%22preview%22%2C+%22music_offtopic%22%2C+%22interaction%22%2C+%22outro%22%2C+%22sponsor%22%2C+%22selfpromo%22%5D&actionTypes=%5B%22skip%22%2C+%22poi%22%2C+%22chapter%22%5D [SponsorBlock] No matching segments were found in the SponsorBlock database [info] Available formats for flexhqu1zhg: ID EXT RESOLUTION FPS CH | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO ------------------------------------------------------------------------------------------------------------------------------- sb2 mhtml 48x27 2 | mhtml | images storyboard sb1 mhtml 80x45 1 | mhtml | images storyboard sb0 mhtml 160x90 1 | mhtml | images storyboard 249-drc webm audio only 2 | 319.04KiB 40k https | audio only opus 40k 48k low, DRC, TV-S, webm_dash 250-drc webm audio only 2 | 397.98KiB 50k https | audio only opus 50k 48k low, DRC, TV-S, webm_dash 249 webm audio only 2 | 316.67KiB 40k https | audio only opus 40k 48k low, TV-S, webm_dash 250 webm audio only 2 | 394.90KiB 50k https | audio only opus 50k 48k low, TV-S, webm_dash 251-drc webm audio only 2 | 731.72KiB 93k https | audio only opus 93k 48k medium, DRC, TV-S, webm_dash 251 webm audio only 2 | 727.11KiB 92k https | audio only opus 92k 48k medium, TV-S, webm_dash 140-drc m4a audio only 2 | 1.00MiB 130k https | audio only mp4a.40.2 130k 44k medium, DRC, TV-S, m4a_dash 140 m4a audio only 2 | 1.00MiB 130k https | audio only mp4a.40.2 130k 44k medium, TV-S, m4a_dash 394 mp4 256x144 24 | 530.40KiB 67k https | av01.0.00M.08 67k video only 144p, TV-S, mp4_dash 278 webm 256x144 24 | 682.80KiB 86k https | vp9 86k video only 144p, TV-S, webm_dash 160 mp4 256x144 24 | 796.09KiB 101k https | avc1.4d400c 101k video only 144p, TV-S, mp4_dash 395 mp4 426x240 24 | 725.21KiB 92k https | av01.0.00M.08 92k video only 240p, TV-S, mp4_dash 242 webm 426x240 24 | 746.23KiB 94k https | vp9 94k video only 240p, TV-S, webm_dash 133 mp4 426x240 24 | 1.75MiB 227k https | avc1.4d4015 227k video only 240p, TV-S, mp4_dash 396 mp4 640x360 24 | 2.36MiB 306k https | av01.0.01M.08 306k video only 360p, TV-S, mp4_dash 243 webm 640x360 24 | 1.48MiB 192k https | vp9 192k video only 360p, TV-S, webm_dash 134 mp4 640x360 24 | 4.55MiB 590k https | avc1.4d401e 590k video only 360p, TV-S, mp4_dash 18 mp4 640x360 24 2 | 5.56MiB 720k https | avc1.42001E mp4a.40.2 44k 360p, TV-S 397 mp4 854x480 24 | 4.36MiB 565k https | av01.0.04M.08 565k video only 480p, TV-S, mp4_dash 244 webm 854x480 24 | 6.62MiB 858k https | vp9 858k video only 480p, TV-S, webm_dash 135 mp4 854x480 24 | 8.15MiB 1056k https | avc1.4d401e 1056k video only 480p, TV-S, mp4_dash 779 webm 1080x608 24 | 3.81MiB 494k https | vp9 494k video only 480p, TV-S, webm_dash 780 webm 1080x608 24 | 6.63MiB 859k https | vp9 859k video only 480p, TV-S, webm_dash 398 mp4 1280x720 24 | 8.70MiB 1128k https | av01.0.05M.08 1128k video only 720p, TV-S, mp4_dash 247 webm 1280x720 24 | 11.59MiB 1502k https | vp9 1502k video only 720p, TV-S, webm_dash 136 mp4 1280x720 24 | 17.79MiB 2306k https | avc1.4d401f 2306k video only 720p, TV-S, mp4_dash Edited 1 hour ago by nicolaasjan
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now