Jump to content

Who here has a Youtube-DL compile for WinXP?


Recommended Posts


Posted (edited)
2 hours ago, nicolaasjan said:

... But why double plus signs in the "test iOS HLS streams" block? :dubbio:

@@ -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 :blushing: ...

2 hours ago, nicolaasjan said:

The last version to support Windows Vista and Server 2008 was v2.37.1

Thanks for that :thumbup ; has this been properly documented somewhere, or was it a "trial-and-error" discovery? :P 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"

:D 

Edited by VistaLover
Posted
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 :cheerleader:...

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 :) ...

Posted
11 hours ago, nicolaasjan said:

Bad news:

... Well, isn't this the norm lately? Bad news from everywhere :angry: ...
But if it involves yt-dlp/youtube-dl, then it must surely come from most satanic Google :realmad: :realmad::realmad: ...

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 :angry:; 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) :realmad:... 

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 :no: 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" :huh: (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:dubbio:

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 :realmad: : our "brave" retrocomputing heros have gone to great lengths to backport recent CPython versions to XP+Vista (cmalex :wub:, literally from the front line :worship: ), Vista+Win7 (Vladimir Andreevich), Win7+ (Aohan Dang), just so that XP/Vista/Win7 users can continue to use yt-dlp, but most evil Google :realmad: , 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:unsure:

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 :whistle:), it's legacy Windows OS users, again, that will be screwed over :} :( ... So full of wrath :angry: 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...

Posted
9 hours ago, VistaLover said:

... But why double plus signs in the "test iOS HLS streams" block? :dubbio:

I was a bit tired when editing that file... :blushing:

Fixed now.
 

Quote

 

Thanks for that :thumbup ; has this been properly documented somewhere, or was it a "trial-and-error" discovery? :P 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:dubbio:

I still see it in the code, but it won't be of any use for at least YouTube...

 

Posted (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 :realmad:

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 by nicolaasjan

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...