"""Tests für die Hauptfilm-Auswahl (TINFO-Parsing) und Datei-Laufzeiten.""" from ripping import ( build_makemkv_cmd, laengster_titel, parse_scan_dauer, parse_tinfo_dauern, parse_titel_info, ) # Echte Robot-Mode-Zeilenform laut makemkv.com/developers/usage.txt: # TINFO:,,,"wert" — Attribut 9 = Laufzeit "H:MM:SS" TINFO_BEISPIEL = """ TINFO:0,2,0,"Hauptfilm" TINFO:0,9,0,"1:52:29" TINFO:1,9,0,"0:03:12" TINFO:2,9,0,"0:24:01" MSG:1011,0,1,"Using LibreDrive mode","%1","x" """ def test_parse_tinfo_dauern(): dauern = parse_tinfo_dauern(TINFO_BEISPIEL) assert dauern == {0: 6749, 1: 192, 2: 1441} def test_laengster_titel_ist_der_hauptfilm(): assert laengster_titel({0: 6749, 1: 192, 2: 1441}) == 0 assert laengster_titel({}) is None def test_makemkv_cmd_mit_titelwahl(): cmd = build_makemkv_cmd("/dev/sr0", "/out", titel="7") assert cmd[-2:] == ["7", "/out"] assert "all" not in cmd def test_makemkv_cmd_default_bleibt_all(): cmd = build_makemkv_cmd("/dev/sr0", "/out") assert cmd[-2:] == ["all", "/out"] def test_parse_titel_info_volle_tabelle(): """Attr 8=Kapitel, 9=Dauer, 11=Bytes (MakeMKV apdefs.h) → Auswahl-Tabelle.""" ausgabe = """ TINFO:0,8,0,"24" TINFO:0,9,0,"1:52:29" TINFO:0,11,0,"31234567890" TINFO:1,9,0,"0:03:12" TINFO:1,11,0,"98765432" """ titel = parse_titel_info(ausgabe) assert titel == [ {"nr": 0, "dauer_s": 6749, "groesse_bytes": 31234567890, "kapitel": 24}, {"nr": 1, "dauer_s": 192, "groesse_bytes": 98765432, "kapitel": 0}, ] def test_parse_scan_dauer(): ausgabe = "…\n + duration: 01:52:29\n…" assert parse_scan_dauer(ausgabe) == 6749 assert parse_scan_dauer("kein treffer") == 0