feat: Ausschnitte an Satzgrenzen erweitern (--exakt schneidet genau)

Bei -s/-e werden angeschnittene Sätze an beiden Enden vollständig
aufgenommen (höchstens 30 s über den Zeitraum hinaus). rede_korrigieren.py
weist das Modell bei Ausschnitten zusätzlich an, nichts zu ergänzen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-11 19:34:36 +02:00
commit faea4bf465

View file

@ -45,11 +45,12 @@ def parse_args():
return args
def fetch_text(url, lang=None, start=None, end=None):
def fetch_text(url, lang=None, start=None, end=None, exact=False):
"""Download the subtitles of a video; return (video info, text lines).
Without `lang` the language of the original audio is used. `start`/`end`
(seconds) keep only the captions of that time range.
(seconds) keep only the captions of that time range, completed to whole
sentences unless `exact`.
"""
info = fetch_info(url)
print(f"Video: {info.get('title', '?')}")
@ -69,7 +70,7 @@ def fetch_text(url, lang=None, start=None, end=None):
vtt = Path(f"{target_base}.{track}.vtt")
if not vtt.is_file():
raise SystemExit("yt-dlp hat keine Untertitel-Datei geschrieben.")
lines = vtt_to_lines(vtt.read_text(encoding="utf-8-sig"), start, end)
lines = vtt_to_lines(vtt.read_text(encoding="utf-8-sig"), start, end, exact)
if not lines:
if start is None and end is None:
@ -80,7 +81,7 @@ def fetch_text(url, lang=None, start=None, end=None):
def main():
args = parse_args()
info, lines = fetch_text(args.url, args.lang, args.start, args.ende)
info, lines = fetch_text(args.url, args.lang, args.start, args.ende, args.exakt)
suffix = time_suffix(args.start, args.ende)
output = args.output or Path(f"{default_name(info)}{suffix}.txt")