Compare commits

...
1 Commits
Author SHA1 Message Date
agw 8751ae5722 fix(yt): nye forsøg med samme klient og længere pause
CI / check (push) Successful in 23s
CD / deploy (push) Successful in 15s
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
2026-10-06 13:56:22 +02:00
+9 -6
View File
@@ -144,7 +144,7 @@ def _build_cmd(job: dict, settings: dict, with_subs: bool, klient: str = "") ->
cmd += ["--sponsorblock-remove", "default", "--sponsorblock-mark", "all"] cmd += ["--sponsorblock-remove", "default", "--sponsorblock-mark", "all"]
if klient: 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}"] cmd += ["--extractor-args", f"youtube:player_client={klient}"]
if not job.get("playlist"): 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. # (403/429), eller forbindelsen falder. yt-dlp gentager ikke selv en 403.
_MIDLERTIDIG = ("403", "forbidden", "429", "too many requests", "timed out", _MIDLERTIDIG = ("403", "forbidden", "429", "too many requests", "timed out",
"connection reset", "remote end closed", "temporary failure") "connection reset", "remote end closed", "temporary failure")
# Forsøg: (pause før, YouTube-klient). Andet og tredje forsøg beder om videoen # Forsøg: (pause før, YouTube-klient). Samme klient med stigende pause: testet
# som en anden klient, hvilket typisk kommer uden om en 403. # 2026-10-06 gav kun standardklienten 1080p (android_vr faldt til 360p, tv,
FORSOEG = [(0, ""), (30, "tv,web_safari"), (90, "mweb")] # 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: 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 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. 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 Midlertidige fejl (403/429/timeout) prøves igen op til to gange med
og en anden YouTube-klient (FORSOEG). stigende pause (FORSOEG).
""" """
want_subs = bool(settings.get("subtitles", True)) want_subs = bool(settings.get("subtitles", True))
res = {"ok": False, "error": "ingen forsøg"} res = {"ok": False, "error": "ingen forsøg"}