feat: Zeitraum-Auswahl (-s/-e) auch in rede_korrigieren.py und extract_text.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1668a8dcad
commit
82489ee83c
1 changed files with 111 additions and 17 deletions
|
|
@ -12,7 +12,7 @@ import urllib.request
|
|||
|
||||
from aenderungen import REVIEW_MARK, print_summary, report_path, write_report
|
||||
from extract_text import fetch_text
|
||||
from vtt2txt import vtt_to_lines
|
||||
from vtt2txt import add_time_options, check_time_range, time_suffix, vtt_to_lines
|
||||
from yt_untertitel import YT_DLP, base_language, default_name, original_language
|
||||
|
||||
MODEL = "qwen3:32b"
|
||||
|
|
@ -452,7 +452,8 @@ def parse_args():
|
|||
parser.add_argument(
|
||||
"-o", "--output", type=Path,
|
||||
help="Ausgabedatei (Standard: <Eingabe ohne Endung>.korrigiert.txt, "
|
||||
"mit -u <Kanal>_<Titel>_<Datum>.korrigiert.txt)",
|
||||
"mit -u <Kanal>_<Titel>_<Datum>.korrigiert.txt; mit -s/-e zusätzlich "
|
||||
"der Zeitraum)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-g", "--glossar", type=Path, action="append", default=[],
|
||||
|
|
@ -466,7 +467,10 @@ def parse_args():
|
|||
"--kein-bericht", action="store_true",
|
||||
help="keinen Änderungsbericht <Ausgabe>.aenderungen.html schreiben",
|
||||
)
|
||||
add_time_options(parser)
|
||||
args = parser.parse_args()
|
||||
check_time_range(parser, args)
|
||||
timed = args.start is not None or args.ende is not None
|
||||
|
||||
for glossary in args.glossar:
|
||||
if not glossary.is_file():
|
||||
|
|
@ -483,8 +487,11 @@ def parse_args():
|
|||
|
||||
if not args.input.is_file():
|
||||
parser.error(f"Eingabedatei nicht gefunden: {args.input}")
|
||||
if timed and args.input.suffix.lower() != ".vtt":
|
||||
parser.error("-s/-e brauchen Zeitstempel: nur mit .vtt-Eingabe oder -u.")
|
||||
if args.output is None:
|
||||
args.output = args.input.with_name(f"{args.input.stem}.korrigiert.txt")
|
||||
suffix = time_suffix(args.start, args.ende)
|
||||
args.output = args.input.with_name(f"{args.input.stem}{suffix}.korrigiert.txt")
|
||||
if args.output.resolve() == args.input.resolve():
|
||||
parser.error("Ausgabedatei darf nicht die Eingabedatei sein.")
|
||||
return args
|
||||
|
|
@ -510,20 +517,21 @@ def save_raw_text(path, raw):
|
|||
def read_source(args):
|
||||
"""Return the raw transcript, the output path and the language of the speech."""
|
||||
if args.url is not None:
|
||||
info, lines = fetch_text(args.url, args.lang)
|
||||
info, lines = fetch_text(args.url, args.lang, args.start, args.ende)
|
||||
lang = base_language(args.lang or original_language(info) or DEFAULT_LANGUAGE)
|
||||
if lang not in PROMPTS:
|
||||
raise SystemExit(
|
||||
f"Die Rede ist auf „{lang}“; unterstützt: {', '.join(PROMPTS)} (-l)."
|
||||
)
|
||||
target = args.output or Path(f"{default_name(info)}.korrigiert.txt")
|
||||
suffix = time_suffix(args.start, args.ende)
|
||||
target = args.output or Path(f"{default_name(info)}{suffix}.korrigiert.txt")
|
||||
raw = "\n".join(lines) + "\n"
|
||||
save_raw_text(raw_text_path(target), raw)
|
||||
return raw, target, lang
|
||||
|
||||
raw = args.input.read_text(encoding="utf-8-sig")
|
||||
if args.input.suffix.lower() == ".vtt":
|
||||
raw = "\n".join(vtt_to_lines(raw))
|
||||
raw = "\n".join(vtt_to_lines(raw, args.start, args.ende))
|
||||
return raw, args.output, base_language(args.lang or DEFAULT_LANGUAGE)
|
||||
|
||||
|
||||
|
|
@ -560,7 +568,9 @@ def main():
|
|||
chunks = split_chunks(text)
|
||||
|
||||
if not chunks:
|
||||
raise SystemExit("Die Eingabedatei ist leer.")
|
||||
if args.start is None and args.ende is None:
|
||||
raise SystemExit("Die Eingabedatei ist leer.")
|
||||
raise SystemExit("Die Eingabedatei enthält im gewählten Zeitraum keinen Text.")
|
||||
|
||||
parts_dir.mkdir(parents=True, exist_ok=True)
|
||||
results = []
|
||||
|
|
|
|||
Loading…
Reference in a new issue