Fix radio downloads: ship EJS solver scripts and allow runtime refresh

yt-dlp now solves YouTube JS challenges via external EJS scripts (yt-dlp-ejs package); a bare PyPI yt-dlp does not include them and remote fetching is disabled by default. Images built after the EJS migration therefore fail every download with HTTP 403 while playlists keep working. Use yt-dlp[default] so the matching yt-dlp-ejs ships in the image, and pass --remote-components ejs:github so solver scripts refresh at runtime when YouTube rotates challenges.
This commit is contained in:
Diane committed 2026-09-03 13:31:00 +00:00
1 parent ad828c3605
commit 1ba136b91c
2 files changed
+7 -1

No files matched your search

+4
View File
@@ -486,6 +486,10 @@ async def process_radio_track(video_link, video_id, title):
"jpg", "jpg",
"--js-runtimes", "--js-runtimes",
"quickjs", "quickjs",
# Refresh EJS challenge-solver scripts from GitHub at runtime so a
# stale image doesn't break downloads when YouTube rotates challenges.
"--remote-components",
"ejs:github",
"--output", "--output",
f"{base_filepath}.%(ext)s", f"{base_filepath}.%(ext)s",
video_link, video_link,
+3 -1
View File
@@ -1,5 +1,7 @@
matrix-nio == 0.24.0 matrix-nio == 0.24.0
google-auth-oauthlib == 1.3.1 google-auth-oauthlib == 1.3.1
google-api-python-client == 2.194.0 google-api-python-client == 2.194.0
yt-dlp # The "default" extra pulls in yt-dlp-ejs, the JS challenge solver scripts
# YouTube requires for downloads. Keep it in lockstep with yt-dlp.
yt-dlp[default]
mutagen mutagen