Jump to content

Who here has a Youtube-DL compile for WinXP?


Recommended Posts

Posted (edited)
5 hours ago, autodidact said:

@nicolaasjan

I have attempted to make compatible 64-bit OpenSSL shared libraries using MSYS2.  If you would like to test them.

It works. :worship:

[debug] Command-line config: ['-v']
[debug] User config "C:\Users\Nico\AppData\Roaming\yt-dlp\config.txt": ['--rm-cache-dir', '--console-title', '--js-runtimes', 'node', '-o', '~/Desktop/%(title)s.%(ext)s', '-S', 'res:1080,vcodec:vp9,acodec:opus', '--embed-thumbnail', '--add-metadata', '--convert-thumbnails', 'jpg', '--ppa', 'ffmpeg:-metadata synopsis=""', '--force-ipv4', '-N', '6', '--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@2026.01.09.064524 (win7_exe*)
[debug] Python 3.14.2 (CPython AMD64 64bit) - Windows-7-6.1.7601-SP1 (OpenSSL 3.6.0 1 Oct 2025)
[debug] exe versions: ffmpeg N-122272-g224b3ff82a-WIN7 (fdk,setts), ffprobe N-122272-g224b3ff82a-WIN7, phantomjs 2.5.0
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.01.04, curl_cffi-0.13.0, mutagen-1.47.0, requests-2.32.5, sqlite3-3.50.4, urllib3-2.6.3, websockets-16.0, yt_dlp_ejs-0.3.2
[debug] JS runtimes: node-20.19.2
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: C:\Users\Nico\AppData\Roaming\yt-dlp\plugins\bgutil-ytdlp-pot-provider\yt_dlp_plugins
[debug] Loaded 1853 extractors
Removing cache dir C:\Users\Nico/.cache\yt-dlp ..

yt-dlp_win7.7z

Edited by nicolaasjan

Posted (edited)

As I don't think that it is fair to report this to yt-dlp, as I'm using your builds under Windows 7 (and the officials aren't valid for this), and so, just in case, the fault is in this build, I want to tell that your latest, this is 2026.01.19.143412, but not the previous, this is 2026.01.18.152406, there is a problem with DNS resolving.

Instead request the OS to resolve an A DNS record (this is the IPv4 IP) for the host of the video www.youtube.com (after re-review is not the host of the video, it doesn't even reach that step, is www.youtube.com), requests a ?65? DNS record (question mark, 6, 5, question mark), that is absolutely invalid (there is no such record in the standard and so replies the Google DNS server).

I use my own DNS resolver (local resolver, I mean, not external) and so I can inspect what is going on with DNS requests and so I'm seen it and reporting it.

Where is the fault coming? I don't have the knowledge to tell. Just that in the 18th of January, it works OK.

Regards.

 

EDIT: just to add up, I double checked the hash and file download isn't corrupted.

 

EDIT2: now that I think about it... 65 matches to the decimal value of the character A (capital A)... Might be some sort of UTF or ASCII thing? DNS is pure ASCII (or maybe ANSI), so no clue what has been introduced this issue.

 

LAST EDIT: ok I wasted the time digging it, using wireshark in loopback mode, and 65 means code 41, which means EDNS.

Why on earth yt-dlp is now requesting an EDNS record for www.youtube.com :-?

Edited by johk
Posted (edited)
2 hours ago, johk said:

I want to tell that your latest, this is 2026.01.19.143412, but not the previous, this is 2026.01.18.152406, there is a problem with DNS resolving.

I have little to no understanding of networking, so I'm afraid I can´t help you with this particular issue. :no:

I just tested a random video from YouTube in my Windows 7 VM and all went fine.

Edited by nicolaasjan
Posted (edited)

What is the output of :

nslookup -querytype=TYPE65 www.youtube.com

(this checks if your local resolver/OS handles Type 65 queries correctly outside of yt-dlp)

And what is the output of a --verbose log?

Edited by nicolaasjan
Posted

It could be, that the issue has arisen because I updated to the module curl_cffi 0.14.0:dubbio:

What happens when you add the `--force-ipv4` flag to your yt-dlp command?

Posted (edited)

It is actually the curl stage, as it is what it fails when can't  do an OPT DNS query type 41 hex (65 is the decimal conversion)).

No, my DNS server/resolver software doesn't support it. I should have told, but I got tired of test, renames, edits... oh dear...

I know the software is old, but trusted, but, also, there shouldn't be need to hardcode EDNS queries on curl. Too paranoid, in my opinion.

I tested with the "--force-ipv4" and it is the same.

If the curl update is really necessary... I'll have to change the software, but it is really dumb reason :/

It works if I redirect queries to an external resolver (example: 1.1.1.1)... but defeats the purpose of using a local one in first place :(

Do you know what is really curious? That I almost always perform formats queries first, and it does this without a problem (querying correctly an A record for www.youtube.com), but when queries it again (or direct download, without query formats first) for download...  In other words, it happens at download time

Quote

[info] Writing video subtitles to: x:\I_support_NYC_Mayor_Mamdani_s_executive_order_11_-_here_s_what
_I_hope_it_focuses_on Louis_Rossmann 20260118 ZCaOuftYMMg 256x144 19-58 avc1.4d400c.en-orig.srt
[debug] Invoking http downloader on "https://www.youtube.com/api/timedtext?v=ZCaOuftYMMg&ei=4_tvaafa
Lt2IvdIPocaX0A8&caps=asr&opi=112496729&xoaf=4&xowf=1&xospf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=176897
1859&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=D76B73CBED247243809B00D393F
A81C25F3A7B.47AC922C966E90FC4576A9BE345A85EAECABE737&key=yt8&kind=asr&lang=en&fmt=srt"
[download] Got error: Failed to perform, curl: (28) Resolving timed out after 20004 milliseconds. Se
e https://curl.se/libcurl/c/libcurl-errors.html first for more details.. Retrying (1/10)...
[download] Got error: Failed to perform, curl: (28) Resolving timed out after 20010 milliseconds. Se
e https://curl.se/libcurl/c/libcurl-errors.html first for more details.. Retrying (2/10)...
[download] Got error: Failed to perform, curl: (28) Resolving timed out after 20007 milliseconds. Se
e https://curl.se/libcurl/c/libcurl-errors.html first for more details.. Retrying (3/10)...
[download] Got error: Failed to perform, curl: (28) Resolving timed out after 20007 milliseconds. Se
e https://curl.se/libcurl/c/libcurl-errors.html first for more details.. Retrying (4/10)...


In the version of curl I have I don't have such an EDNS option to test.

Quote


curl 8.10.0 (x86_64-w64-mingw32) libcurl/8.10.0 LibreSSL/3.9.2 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 Wi
nIDN libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.63.0 ngtcp2/1.7.0 nghttp3/1.5.0
Release-Date: 2024-09-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 po
p3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli CAcert HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile l
ibz NTLM PSL SPNEGO SSL SSPI threadsafe UnixSockets zstd

Edited by johk
Posted

@johk

What happens if you switch to the 32-bit yt-dlp variant for Win7

https://github.com/nicolaasjan/yt-dlp/releases/download/2026.01.19.143412/yt-dlp_x86_win7.exe

That one doesn't come with the curl_cffi Python module bundled (it's currently only 64-bit); some sites require this module to work, but NOT youtube.com (yet) ...

1 hour ago, johk said:

In the version of curl I have I don't have such an EDNS option to test

curl_cffi is a Python binding (wrapper) for curl-impersonate, not for "ordinary" curl ; curl-impersonate uses Google's BoringSSL crypto lib (not Libre/OpenSSL), making it incompatible with < Win7 :( (I have Vista) ...

curl 8.15.0-IMPERSONATE (Windows) 

libcurl/8.15.0-IMPERSONATE 
BoringSSL 
zlib/1.3
brotli/1.1.0 
zstd/1.5.6 
c-ares/1.30.0 
WinIDN 
nghttp2/1.63.0 
ngtcp2/1.11.0 
nghttp3/1.9.0

Release-Date: [unreleased]

Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli ECH HSTS HTTP2 HTTP3 HTTPS-proxy HTTPSRR IDN IPv6 Largefile libz NTLM SSL SSLS-EXPORT threadsafe Unicode UnixSockets zstd
Posted (edited)
1 hour ago, VistaLover said:

What happens if you switch to the 32-bit yt-dlp variant for Win7

https://github.com/nicolaasjan/yt-dlp/releases/download/2026.01.19.143412/yt-dlp_x86_win7.exe

That's it!!!

Oh lord facepalm.gif, what a waste of day doing tests back and forth, searching for alternatives, finding BIND9 stopped support for Windows on 9.17.14.... Anything, but not with the x86 build... :realmad:

I'll end with a correction to myself.

I should have said that EDNS is not for security only. I always mix it with DNSSEC (which actually is a feature of the upstream curl utility), despite this requires EDNS, too.But, anyway, there is no need for such implementation, IMHO.

Edited by johk
Posted

I don't think there will be many users of the 64-bit version that also have an old local DNS resolver, but nevertheless I will downgrade curl_cffi to version 0.13.0 for the next release.
Forcing these modern DNS extensions on a legacy-OS target is counter-productive anyway.

Meanwhile, here is a 64-bit test version, so we can see if curl_cffi 0.13.0 doesn't give issues for you with 2026.01.19.143412.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   1 member

×
×
  • Create New...