feat(downloads): Deno JS runtime + web/android clients to complete the POT setup

The web player clients need two things beyond the PO token: (1) a JavaScript runtime for
YouTube's 'n' signature challenge — install Deno (v2.9.1) + yt-dlp[default] (bundles yt-dlp-ejs
solver scripts); auto-detected on PATH. (2) an audio source — the web clients only expose
video-only DASH, so add the 'android' client (also PO-token-backed) for audio/muxed formats.
Player clients: web_safari,web,android (dropped tv — it falsely reports normal videos as DRM).

End-to-end verified in the worker: extraction (POT + Deno n-challenge) + download completes,
no bot/DRM/format errors. Full YouTube stack now: force-ipv4 + bgutil POT sidecar + Deno.
This commit is contained in:
npeter83 2026-07-03 22:46:32 +02:00
parent 03a1865aa8
commit 21c5508889
3 changed files with 15 additions and 8 deletions

View file

@ -145,7 +145,7 @@ class Settings(BaseSettings):
# yt-dlp player clients to use (comma-separated). POT-capable clients (web_safari/web) must
# be used for the PO token to actually apply; the default clients (android_vr) don't request
# one. Empty = yt-dlp's own default. Admin-tunable when YouTube shifts what works.
download_player_clients: str = "web_safari,web,tv"
download_player_clients: str = "web_safari,web,android"
@property
def player_client_list(self) -> list[str]: