feat: Hinweis, wenn ein Zeitbereich über das Ende der Untertitel reicht

„-z 0-05:00“ bedeutet fünf Stunden und bearbeitete bisher stillschweigend
das ganze Video. vtt2txt.py (und damit extract_text.py und
abschrift_korrigieren.py) nennt jetzt das Ende der Untertitel, bei
Bereichen ab einer Stunde mit dem Tipp „Minute 5 ist 00:05“.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-11 21:58:12 +02:00
commit d9512bcedc

View file

@ -366,10 +366,33 @@ def test_vtt_to_text_skips_empty_range(capsys):
assert text == "[00:01:40 - 00:01:41]\nErster Satz ist hier."
out = capsys.readouterr().out
assert "keine Untertitel im Bereich 00:00:00 – 00:00:50" in out
assert "keine Untertitel im Bereich 00:03:20 – Ende" in out
assert "keine Untertitel im Bereich 00:03:20 – Ende (die Untertitel enden bei" in out
assert vtt2txt.vtt_to_text(SPEECH, [(200, None)]) == ""
def test_vtt_to_text_notes_range_past_last_caption(capsys):
# "-z 0-05:00" means five hours, not five minutes
text = vtt2txt.vtt_to_text(SPEECH, [(0, 5 * 3600)])
assert text.startswith("[00:01:40 - ")
out = capsys.readouterr().out
assert "Bereich 00:00:00 – 05:00:00 reicht über das Ende der Untertitel hinaus" in out
assert "Stunden:Minuten, Minute 5 ist 00:05" in out
@pytest.mark.parametrize("start, end, expected", [
(100, 110, ""), # inside
(None, None, ""),
(100, 200, " (die Untertitel enden bei 00:02:00)"),
(150, None, " (die Untertitel enden bei 00:02:00)"),
(0, 3600, " (die Untertitel enden bei 00:02:00; zwei Zahlen wie 05:00 sind "
"Stunden:Minuten, Minute 5 ist 00:05)"),
(0, 200, ""), # no captions at all: no end known
])
def test_end_hint(start, end, expected):
captions_end = None if (start, end) == (0, 200) else 120
assert vtt2txt.end_hint(start, end, captions_end) == expected
def test_vtt_to_text_without_ranges_has_no_header():
assert vtt2txt.vtt_to_text(SPEECH).splitlines()[0] == "Erster Satz ist hier."