From 8751ae572223b6afbddf3b58f6b23c02bb90a530 Mon Sep 17 00:00:00 2001 From: Asger Geel Weirsoee Date: Tue, 6 Oct 2026 13:56:22 +0200 Subject: [PATCH] =?UTF-8?q?fix(yt):=20nye=20fors=C3=B8g=20med=20samme=20kl?= =?UTF-8?q?ient=20og=20l=C3=A6ngere=20pause?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test mod en video der fik 403: kun standardklienten gav 1080p; android_vr faldt til 360p, og tv, web_safari, mweb og tv_simply gav ingen brugbare formater. Nye forsøg bruger derfor standardklienten med 30 s og 2 min pause. Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG --- ytdl.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ytdl.py b/ytdl.py index 8d9cc34..1806202 100644 --- a/ytdl.py +++ b/ytdl.py @@ -144,7 +144,7 @@ def _build_cmd(job: dict, settings: dict, with_subs: bool, klient: str = "") -> cmd += ["--sponsorblock-remove", "default", "--sponsorblock-mark", "all"] if klient: - # Nyt forsøg efter en 403: bed YouTube om videoen som en anden klient. + # Valgfrit: bed YouTube om videoen som en anden klient (se FORSOEG). cmd += ["--extractor-args", f"youtube:player_client={klient}"] if not job.get("playlist"): @@ -186,9 +186,12 @@ async def _attempt(job: dict, settings: dict, with_subs: bool, klient: str = "") # (403/429), eller forbindelsen falder. yt-dlp gentager ikke selv en 403. _MIDLERTIDIG = ("403", "forbidden", "429", "too many requests", "timed out", "connection reset", "remote end closed", "temporary failure") -# Forsøg: (pause før, YouTube-klient). Andet og tredje forsøg beder om videoen -# som en anden klient, hvilket typisk kommer uden om en 403. -FORSOEG = [(0, ""), (30, "tv,web_safari"), (90, "mweb")] +# Forsøg: (pause før, YouTube-klient). Samme klient med stigende pause: testet +# 2026-10-06 gav kun standardklienten 1080p (android_vr faldt til 360p, tv, +# web_safari, mweb og tv_simply gav slet ingen formater), og 403'erne kom af +# mange samtidige hentninger, som kø-låsen nu forhindrer. Klientfeltet bliver +# stående, hvis en anden klient senere viser sig bedre. +FORSOEG = [(0, ""), (30, ""), (120, "")] def midlertidig(err: str) -> bool: @@ -203,8 +206,8 @@ async def _run_ytdlp(job: dict, settings: dict) -> dict: uafhængigt af selve videoen, og uden dette fald-tilbage ville en 429 på en undertekstfil vælte hele hentningen. Vi prøver derfor én gang mere uden dem. - Midlertidige fejl (403/429/timeout) prøves igen op til to gange med pause - og en anden YouTube-klient (FORSOEG). + Midlertidige fejl (403/429/timeout) prøves igen op til to gange med + stigende pause (FORSOEG). """ want_subs = bool(settings.get("subtitles", True)) res = {"ok": False, "error": "ingen forsøg"}