refactor: Spur-Fehlermeldung und yt-dlp-Fake gemeinsam nutzen

- yt_untertitel.no_track_message() für yt_untertitel.py und extract_text.py
- tests/conftest.py: Fixtures fake_yt_dlp und yt_dlp_installed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-10 19:52:20 +02:00
commit 0413455ea5

View file

@ -56,6 +56,18 @@ def available_tracks(info):
return manual, original
def no_track_message(info, lang):
"""Explain that no usable track exists for `lang` (None: original language)."""
manual, original = available_tracks(info)
wanted = f"„{lang}“" if lang else "der Originalsprache"
return (
f"Keine Untertitel in {wanted} (weder manuell noch automatisch in "
f"Originalsprache).\n"
f"Manuell: {', '.join(manual) or '–'}\n"
f"Automatisch (Originalsprache): {', '.join(original) or '–'}"
)
def download(url, track, is_auto, target_base):
"""Download one subtitle track; yt-dlp writes <target_base>.<track>.vtt."""
command = [
@ -103,13 +115,7 @@ def main():
chosen = choose_track(info, args.lang)
if chosen is None:
manual, original = available_tracks(info)
raise SystemExit(
f"Keine Untertitel in „{args.lang}“ (weder manuell noch automatisch in "
f"Originalsprache).\n"
f"Manuell: {', '.join(manual) or '–'}\n"
f"Automatisch (Originalsprache): {', '.join(original) or '–'}"
)
raise SystemExit(no_track_message(info, args.lang))
track, is_auto = chosen
kind = "automatische" if is_auto else "manuelle"
print(f"Lade {kind} Untertitel „{track}“ …", flush=True)