feat: mehrere Zeitbereiche (-z) mit Zeit-Überschriften in einer Datei
- Zeitformat: 00:05:10 (hⓂ️s), 00:20 (h:m = Minute 20), 25 (Minute 25)
- -z "00:05-00:06 00:10-00:12 00:25": A-B, A (bis Ende), -B (ab Anfang)
- jeder Bereich unter einer Überschrift [HH:MM:SS - HH:MM:SS] mit den
tatsächlichen Zeiten; nach der Satz-Erweiterung überlappende Blöcke
werden verschmolzen
- rede_korrigieren.py korrigiert und gliedert jeden Block einzeln; das
Modell sieht die Überschriften nicht
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
faea4bf465
commit
0bf42dee74
1 changed files with 700 additions and 254 deletions
|
|
@ -130,10 +130,12 @@ def test_cli_errors(tmp_path, monkeypatch, capsys, args, message):
|
|||
def test_time_range_default_name(fake_yt_dlp, tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(yt.subprocess, "run", fake_yt_dlp(GERMAN_VIDEO, vtt=VTT))
|
||||
monkeypatch.chdir(tmp_path)
|
||||
run_main(monkeypatch, "-u", URL, "-s", "2", "-e", "0:03")
|
||||
run_main(monkeypatch, "-u", URL, "-s", "0:00:02", "-e", "0:00:03")
|
||||
|
||||
name = "Kanal_Eine_Rede_2026-03-28_00-00-02_bis_00-00-03.txt"
|
||||
assert (tmp_path / name).read_text(encoding="utf-8") == "Schön, dass Sie da sind.\n"
|
||||
assert (tmp_path / name).read_text(encoding="utf-8") == (
|
||||
"[00:00:02 - 00:00:03]\nSchön, dass Sie da sind.\n"
|
||||
)
|
||||
|
||||
|
||||
def test_time_range_without_text(fake_yt_dlp, tmp_path, monkeypatch):
|
||||
|
|
@ -157,11 +159,32 @@ CUT_VTT = (
|
|||
|
||||
|
||||
@pytest.mark.parametrize("exact, text", [
|
||||
([], "Guten Abend und\nwillkommen. Schön, dass\nSie da sind.\n"),
|
||||
(["--exakt"], "willkommen. Schön, dass\n"),
|
||||
([], "[00:00:01 - 00:00:04]\nGuten Abend und\nwillkommen. Schön, dass\nSie da sind.\n"),
|
||||
(["--exakt"], "[00:00:02 - 00:00:03]\nwillkommen. Schön, dass\n"),
|
||||
])
|
||||
def test_time_range_sentence_bounds(fake_yt_dlp, tmp_path, monkeypatch, exact, text):
|
||||
monkeypatch.setattr(yt.subprocess, "run", fake_yt_dlp(GERMAN_VIDEO, vtt=CUT_VTT))
|
||||
target = tmp_path / "out.txt"
|
||||
run_main(monkeypatch, "-u", URL, "-s", "2", "-e", "3", "-o", target, *exact)
|
||||
run_main(monkeypatch, "-u", URL, "-s", "0:00:02", "-e", "0:00:03", "-o", target, *exact)
|
||||
assert target.read_text(encoding="utf-8") == text
|
||||
|
||||
|
||||
MULTI_VTT = (
|
||||
"WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nErster Satz der Rede.\n\n"
|
||||
"00:01:00.000 --> 00:01:01.000\nZweiter Satz.\n\n"
|
||||
"00:02:00.000 --> 00:02:01.000\nDritter Satz, der etwas länger ist.\n"
|
||||
)
|
||||
|
||||
|
||||
def test_several_ranges_flow_text_keeps_headers(fake_yt_dlp, tmp_path, monkeypatch, capsys):
|
||||
monkeypatch.setattr(yt.subprocess, "run", fake_yt_dlp(GERMAN_VIDEO, vtt=MULTI_VTT))
|
||||
monkeypatch.setattr(extract_text, "FLOW_WIDTH", 20)
|
||||
monkeypatch.chdir(tmp_path)
|
||||
run_main(monkeypatch, "-u", URL, "-z", "0:00:00-0:00:30 0:02", "-f")
|
||||
|
||||
name = "Kanal_Eine_Rede_2026-03-28_00-00-00_bis_00-00-30+ab_00-02-00.txt"
|
||||
assert (tmp_path / name).read_text(encoding="utf-8") == (
|
||||
"[00:00:01 - 00:00:02]\nErster Satz der\nRede.\n\n"
|
||||
"[00:02:00 - 00:02:01]\nDritter Satz, der\netwas länger ist.\n"
|
||||
)
|
||||
assert "(7 Zeilen, 10 Wörter)" in capsys.readouterr().out
|
||||
|
|
|
|||
Loading…
Reference in a new issue