DownloadMedia — YouTube → MP3/MP4
- Python 59.2%
- HTML 39%
- Dockerfile 1.8%
YouTube began returning "Sign in to confirm you're not a bot" (LOGIN_REQUIRED
at the player API) for all requests from the VPS. Root cause: our Hostinger
datacenter IP (AS47583) is hard-flagged — confirmed by every player client
failing identically, anonymous and cookie-authenticated alike, including for
guaranteed-public videos. No yt-dlp/cookie/JS-runtime change fixes that on its
own; the request never reaches the cookie or PO-token stage.
Fix: route yt-dlp egress through a SOCKS5 proxy on ms-01 (reached over the
tailnet, exits via a Cox residential IP) using a new DLM_PROXY env var, applied
in _common_args(). Proven end-to-end: preview + full MP3 download now succeed.
Also modernize the stack so it keeps working against current YouTube:
- yt-dlp 2026.3.17 -> 2026.6.9
- Switch JS runtime from Node to Deno (pinned bin-2.8.2); newer yt-dlp's EJS
framework no longer supports Node (reported "unsupported"), which by itself
was breaking signature/n-param solving. Drop the nodejs apt package.
- Clearer failure messages: distinguish "ms-01 proxy unreachable" from the raw
bot-check text when no proxy is configured.
DLM_PROXY (with credentials) lives in the gitignored .env; compose passes it
through via ${DLM_PROXY:-}.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| app | ||
| .gitignore | ||
| docker-compose.yml | ||