Add Node.js to Docker image; use web player client only
Node.js is required by yt-dlp to solve YouTube's n-challenge (format URL deobfuscation). Without it the web client returns no video formats. The tv and ios player clients were removed — both require GVS PO tokens that we don't have, so they only produce warnings and block every request. The web client with Node.js installed gives 30+ formats and works cleanly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -216,7 +216,7 @@ def fetch_video_metadata(video_id: str) -> dict | None:
|
||||
base_cmd = [
|
||||
"yt-dlp", url,
|
||||
"--dump-json", "--no-download", "--no-playlist",
|
||||
"--extractor-args", "youtube:player_client=tv,ios,web",
|
||||
"--extractor-args", "youtube:player_client=web",
|
||||
]
|
||||
stdout, stderr, code = _run([*base_cmd, *cookie_args], timeout=30)
|
||||
if code != 0:
|
||||
@@ -567,7 +567,7 @@ def start_download(
|
||||
"--no-part", "--no-mtime",
|
||||
"-o", output_template,
|
||||
"--newline", "--progress", "--no-colors",
|
||||
"--extractor-args", "youtube:player_client=tv,ios,web",
|
||||
"--extractor-args", "youtube:player_client=web",
|
||||
*_cookie_args(),
|
||||
],
|
||||
stdout=subprocess.PIPE,
|
||||
|
||||
Reference in New Issue
Block a user