Give yt-dlp a JavaScript runtime to avoid YouTube's bot checks

Downloads failed with "Sign in to confirm you're not a bot" even with
cookies and a working proxy. yt-dlp was also warning that no JavaScript
runtime was available: YouTube's player challenges now require one, and
without it extraction degrades into exactly those bot checks.

The image already ships Node, so yt-dlp is pointed at it via
--js-runtimes, but only after confirming the installed build understands
the flag — an older binary would otherwise fail on an unknown option.
Startup logs which runtime was picked and warns when there is none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Leonid Pershin
2026-09-09 00:34:42 +03:00
co-authored by Claude Opus 5
parent 71dc3f2da8
commit 2ee907626e
5 changed files with 64 additions and 6 deletions
+5
View File
@@ -57,6 +57,11 @@ YTDLP_PATH=yt-dlp
# на хосте, используйте socks5h://host.docker.internal:1080 и добавьте в
# compose.yml к extra_hosts строку "host.docker.internal:host-gateway".
# JS-рантайм для yt-dlp: YouTube требует исполнять свой JS, иначе извлечение
# деградирует и начинаются бот-проверки. В образе уже есть Node, поэтому по
# умолчанию используется он. Пустое значение отключает флаг.
YTDLP_JS_RUNTIME=node
# Необязательно: дополнительные --extractor-args, через ";".
# Помогает, когда YouTube не отдаёт форматы серверному IP:
# YTDLP_EXTRACTOR_ARGS=youtube:player_client=default,web_safari