I used this:
https://github.com/mstorsjo/llvm-mingw
The 32bit build was compiled with Python 3.14.0 (x86) from adang1345 on Windows 10 IoT Enterprise LTSC.
The 64bit build was compiled with Python 3.14.0 (x86-64) from adang1345 on Windows 7.
To let Python use this compiler, place a file named `distutils.cfg` (see below) in `.\Lib\distutils` in Python install directory (create folder `distutils`).
[build]
compiler = mingw32
Build Brotli:
Download source tarball and extract.
In source directory run:
python setup.py build_ext --compiler=mingw32 install
Build wheel:
python setup.py build_ext --compiler=mingw32 bdist_wheel
In the directory where the built wheel is, run:
pip install --force-reinstall brotli-1.1.0-cp314-cp314-win32.whl
Huh???
.\yt-dlp_win7.exe -v
[debug] Command-line config: ['-v']
[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.10.05.061237 (win7_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-10-04-e05f8ac-ffmpeg-windows-build-helpers (fdk,setts), ffprobe git-2025-10-04-e05f8ac-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\bgutil-ytdlp-pot-provider\yt_dlp_plugins, C:\Users\Nico\AppData\Roaming\yt-dlp\plugins\yt-dlp-YTNSigDeno\yt_dlp_plugins
[debug] Loaded 1833 extractors
And the next Win7 builds will be Py3.14 based.