feat(downloads): clear multi-phase download progress + transient-error retries

The progress bar looked broken (95% -> 5% -> recount) because yt-dlp downloads the video and
audio streams separately (each 0->100%) then merges — with no indication of which step is
running. Now:
- worker labels the phase from the stream codecs (video / audio) and via a postprocessor hook
  (merging / processing), so the user sees what's happening
- DownloadCenter shows the phase as the status and renders an indeterminate pulse (no bogus %)
  during merge/processing; phase i18n en/hu/de
- yt-dlp retries (3) + fragment_retries (5) so transient network blips self-heal instead of
  failing the job (seen once as a DNS 'No address associated with hostname' error)

Verified: phase transitions queued -> video -> processing -> done.
This commit is contained in:
npeter83 2026-07-03 02:42:36 +02:00
parent c6ceaea899
commit b200f61642
6 changed files with 73 additions and 9 deletions

View file

@ -91,6 +91,10 @@ def build_ydl_opts(spec: dict, outtmpl: str, progress_hook) -> dict:
"writethumbnail": True, # kept for the poster.jpg sidecar (and embed, if requested)
"progress_hooks": [progress_hook],
"postprocessors": [],
# Self-heal transient network blips instead of failing the whole job.
"retries": 3,
"fragment_retries": 5,
"retry_sleep": {"http": 2, "fragment": 2},
}
if s["mode"] == "a":