From 53ea64ee8aa063375bdd18c1af6b91317a5a17dd Mon Sep 17 00:00:00 2001 From: Mattias Tall Date: Tue, 26 May 2026 10:12:32 +0200 Subject: [PATCH] Switch to web_embedded player client web_embedded: supports cookies, no Node.js/JS runtime needed, 23 video formats available. android_vr was skipped by yt-dlp when cookies are present since that client doesn't support cookie auth. Co-Authored-By: Claude Sonnet 4.6 --- backend/routers/settings.py | 2 +- backend/services/ytdlp.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/routers/settings.py b/backend/routers/settings.py index e1099bd..056c417 100644 --- a/backend/routers/settings.py +++ b/backend/routers/settings.py @@ -247,7 +247,7 @@ def ytdlp_test( "yt-dlp", "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "--dump-json", "--no-download", "--no-playlist", - "--extractor-args", "youtube:player_client=android_vr", + "--extractor-args", "youtube:player_client=web_embedded", *cookie_args, ], capture_output=True, text=True, timeout=30, diff --git a/backend/services/ytdlp.py b/backend/services/ytdlp.py index ba6fc99..f271a07 100644 --- a/backend/services/ytdlp.py +++ b/backend/services/ytdlp.py @@ -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=android_vr", + "--extractor-args", "youtube:player_client=web_embedded", ] 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=android_vr", + "--extractor-args", "youtube:player_client=web_embedded", *cookie_args, ], stdout=subprocess.PIPE,