Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
473eea7d4e | ||
|
|
687173430c |
@@ -1,6 +1,69 @@
|
||||
# SAVEPOINT — Rippy
|
||||
|
||||
## ÜBERGABE an die nächste Session (03.09.2026 abends — 5.6.0 gebaut, lokal installiert und im Tag `aktuell` VERÖFFENTLICHT)
|
||||
## ÜBERGABE an die nächste Session (03.09.2026 spät — 5.6.1 gebaut und lokal installiert, NICHT veröffentlicht: Untertitel-Spuren wieder erkannt)
|
||||
|
||||
### Stand
|
||||
|
||||
**5.6.1 ist gebaut, am ausgepackten Paket bewiesen und auf DIESEM PC
|
||||
installiert (03.09.2026 19:40, Installer-Exit 0 — Rippy 5.6.0 lief dabei mit fünf Prozessen ohne Rip oder Encode und wurde vom Installer beendet), NICHT im Kanal — dort liegt 5.6.0.** Der
|
||||
Commander testet erst; auf sein Wort geht 5.6.1 in den Kanal (Weg wie bei
|
||||
5.6.0, siehe die Übergabe darunter: ERST Setup und Blockmap, DANN
|
||||
`latest.yml`, PATCH, anonym gegenmessen).
|
||||
|
||||
* Setup: `RippySetup-5.6.1.exe`, **131 566 691 Bytes**, SHA-256 `04806C8DF53A799FB38EE185E3FE49A8CA139D61CF6BAD041C39A4F6CAEF6ED4`
|
||||
(Bau in `dist-setup-561/`, Kopie in `dist-setup/`).
|
||||
* Paket-Smoke: `SMOKE: OK — fenster=geladen kern=pid:27472,node:24.18.1 datenbank=ok leine=gesetzt pong=ok version=5.6.1`.
|
||||
* **450 Tests** in 45 Dateien, drei Typprüfungen, Bau
|
||||
und Klick-Beweis (33 Schritte) grün.
|
||||
* Commits: `6871734` (Fix, Test, Messung, Aenderungsnotizen, Version 5.6.1 — 17 Dateien) und dieser SAVEPOINT.
|
||||
|
||||
### Der Fund des Commanders (03.09.2026, 19:35): „die auswahl der untertitel ist weiterhin nicht drin"
|
||||
|
||||
Bild aus 5.6.0: Blu-ray „Digimon Adventure: Last Evolution Kizuna" (2020),
|
||||
Titel 1 mit TON deu×2 und jpn×2, aber ohne UNTERTITEL-Chips. Gemessen
|
||||
(Regel D) mit `makemkvcon64 -r --minlength=120 info disc:0` an der Disc in
|
||||
G: — die volle Ausgabe liegt unter
|
||||
`beweise/messungen/2026-09-03-makemkvcon-info-kizuna.txt` (375 Zeilen):
|
||||
|
||||
```
|
||||
SINFO:1,1,1,6202,"Audio" SINFO:1,1,3,0,"deu" DTS-HD MA Surround 5.1 German
|
||||
SINFO:1,3,1,6202,"Audio" SINFO:1,3,3,0,"jpn" DTS-HD MA Stereo Japanese
|
||||
SINFO:1,5,1,6203,"Untertitel" SINFO:1,5,3,0,"deu" PGS German
|
||||
SINFO:1,6,1,6203,"Untertitel" SINFO:1,6,3,0,"deu" PGS German (nur erzwungene) Attribut 22 = 6144
|
||||
SINFO:1,7,1,6203,"Untertitel" SINFO:1,7,3,0,"deu"
|
||||
```
|
||||
|
||||
**Ursache:** MakeMKV schreibt den Stream-Typ (Attribut 1) in seiner
|
||||
Anzeigesprache. Deutsch eingestellt heißt es „Untertitel"; der Parser
|
||||
(`kern/rip/parser.ts parseStreamInfo`) prüfte seit 26.07. auf das
|
||||
englische „Subtitles" (damals an einem englisch eingestellten MakeMKV
|
||||
gemessen). „Audio" heißt zufällig in beiden Sprachen gleich — deshalb
|
||||
kamen die Tonspuren an, die Untertitel nicht. Die MakeMKV-Auswahlregel
|
||||
(`spurauswahl.ts`) war nicht betroffen: MakeMKV nimmt alle Spuren mit, nur
|
||||
der Dialog konnte sie nicht zeigen.
|
||||
|
||||
**Fix (5.6.1):** Der Typ-CODE im vierten Feld zählt — 6201 Video, 6202
|
||||
Audio, 6203 Untertitel (`STREAM_CODE_*`, `StreamInfo.typCode`); das Wort
|
||||
bleibt nur Notnagel für Ausgaben ohne Code. Test
|
||||
`test/rip-parser-561.test.ts` mit den gemessenen Zeilen (deu×2/jpn×2 Ton,
|
||||
deu×3 Untertitel; französisch „Sous-titres" per Code erkannt).
|
||||
|
||||
**Nebenbefund für später:** Attribut 22 trägt Flags — 6144 bei der Spur
|
||||
„nur erzwungene", 0 bei der vollen; Attribut 30 die Beschreibung („PGS
|
||||
German (nur erzwungene)"). Damit ließe sich die Option „einzelne Spuren
|
||||
(voll / nur erzwungen)" bauen, die der Commander am 03.09. NICHT gewählt
|
||||
hat („nur Extras, immer optional"). Heute: Chip „deu×3" = alle drei
|
||||
kommen mit, die Vorwahl gilt je Sprache.
|
||||
|
||||
### Was am Gerät zu prüfen ist
|
||||
|
||||
* Dieselbe Disc noch einmal in den Dialog: UNTERTITEL-Chip „deu×3" muss
|
||||
erscheinen; bei Rolle Extra dazu „BEIM ABSPIELEN AN".
|
||||
* Alles aus der 5.6.0-Übergabe darunter (zwei Filme je Disc, Vorwahl im
|
||||
Spieler, Restzeit, Hell-Modus mit Postern, Rettungs-Abbild, Automatik,
|
||||
Benachrichtigung, Datenbank-Befund).
|
||||
|
||||
## Übergabe vom 03.09.2026 abends (5.6.0 — veröffentlicht im Tag `aktuell`; überholt durch 5.6.1)
|
||||
|
||||
### Wo die nächste Session startet
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 341 KiB |
|
Before Width: | Height: | Size: 711 KiB After Width: | Height: | Size: 711 KiB |
|
Before Width: | Height: | Size: 712 KiB After Width: | Height: | Size: 712 KiB |
|
Before Width: | Height: | Size: 749 KiB After Width: | Height: | Size: 750 KiB |
|
Before Width: | Height: | Size: 341 KiB After Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 465 KiB |
|
Before Width: | Height: | Size: 458 KiB After Width: | Height: | Size: 456 KiB |
|
Before Width: | Height: | Size: 447 KiB After Width: | Height: | Size: 438 KiB |
@@ -0,0 +1,375 @@
|
||||
MSG:1005,0,1,"MakeMKV v1.18.4 win(x64-release) gestartet","%1 gestartet","MakeMKV v1.18.4 win(x64-release)"
|
||||
DRV:0,2,999,12,"BD-RE HL-DT-ST BD-RE BU40N 1.03 MOBPBDF1840","DA_LAST EVOLUTION KIZUNA","G:"
|
||||
DRV:1,256,999,0,"","",""
|
||||
DRV:2,256,999,0,"","",""
|
||||
DRV:3,256,999,0,"","",""
|
||||
DRV:4,256,999,0,"","",""
|
||||
DRV:5,256,999,0,"","",""
|
||||
DRV:6,256,999,0,"","",""
|
||||
DRV:7,256,999,0,"","",""
|
||||
DRV:8,256,999,0,"","",""
|
||||
DRV:9,256,999,0,"","",""
|
||||
DRV:10,256,999,0,"","",""
|
||||
DRV:11,256,999,0,"","",""
|
||||
DRV:12,256,999,0,"","",""
|
||||
DRV:13,256,999,0,"","",""
|
||||
DRV:14,256,999,0,"","",""
|
||||
DRV:15,256,999,0,"","",""
|
||||
MSG:1011,0,1,"Using LibreDrive mode (v06.3 id=866A98CB9C4E)","%1","Using LibreDrive mode (v06.3 id=866A98CB9C4E)"
|
||||
MSG:3007,0,0,"Direkter Zugriffsmodus wird verwendet","Direkter Zugriffsmodus wird verwendet"
|
||||
MSG:5054,0,1,"Evaluierungsversion. Der Testzeitraum lief vor 10 Tagen ab.","Evaluierungsversion. Der Testzeitraum lief vor %1 Tagen ab.","10"
|
||||
MSG:5051,1028,0,"Der Testzeitraum ist abgelaufen. Erwerben Sie bitte einen Aktivierungsschlüssel, wenn Sie das Programm nützlich fanden. Sie können den vollen Funktionsumfang noch einige Tage nutzen.","Der Testzeitraum ist abgelaufen. Erwerben Sie bitte einen Aktivierungsschlüssel, wenn Sie das Programm nützlich fanden. Sie können den vollen Funktionsumfang noch einige Tage nutzen."
|
||||
MSG:5085,0,0,"Inhalte-Hashtabelle geladen, überprüfe Integrität der M2TS-Dateien.","Inhalte-Hashtabelle geladen, überprüfe Integrität der M2TS-Dateien."
|
||||
MSG:3307,16777216,2,"Datei 00011.mpls wurde als Titel 0 hinzugefügt ","Datei %1 wurde als Titel %2 hinzugefügt ","00011.mpls","0"
|
||||
MSG:3025,0,3,"Titel #00000.mpls hat eine Länge von 41 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00000.mpls","41","120"
|
||||
MSG:3307,16777216,2,"Datei 00003.mpls wurde als Titel 1 hinzugefügt ","Datei %1 wurde als Titel %2 hinzugefügt ","00003.mpls","1"
|
||||
MSG:3025,16777216,3,"Titel #00005.m2ts hat eine Länge von 93 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00005.m2ts","93","120"
|
||||
MSG:3025,16777216,3,"Titel #00004.m2ts hat eine Länge von 98 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00004.m2ts","98","120"
|
||||
MSG:3025,16777216,3,"Titel #00015.m2ts hat eine Länge von 10 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00015.m2ts","10","120"
|
||||
MSG:3025,16777216,3,"Titel #00003.m2ts hat eine Länge von 7 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00003.m2ts","7","120"
|
||||
MSG:3025,16777216,3,"Titel #00002.m2ts hat eine Länge von 18 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00002.m2ts","18","120"
|
||||
MSG:3025,16777216,3,"Titel #00001.m2ts hat eine Länge von 7 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00001.m2ts","7","120"
|
||||
MSG:3025,16777216,3,"Titel #00000.m2ts hat eine Länge von 8 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00000.m2ts","8","120"
|
||||
MSG:3025,16777216,3,"Titel #00014.m2ts hat eine Länge von 107 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00014.m2ts","107","120"
|
||||
MSG:3025,16777216,3,"Titel #00013.m2ts hat eine Länge von 63 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00013.m2ts","63","120"
|
||||
MSG:3025,16777216,3,"Titel #00012.m2ts hat eine Länge von 93 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00012.m2ts","93","120"
|
||||
MSG:3025,16777216,3,"Titel #00011.m2ts hat eine Länge von 78 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00011.m2ts","78","120"
|
||||
MSG:3025,16777216,3,"Titel #00010.m2ts hat eine Länge von 89 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00010.m2ts","89","120"
|
||||
MSG:3025,16777216,3,"Titel #00009.m2ts hat eine Länge von 98 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00009.m2ts","98","120"
|
||||
MSG:3025,0,3,"Titel #00008.m2ts hat eine Länge von 95 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00008.m2ts","95","120"
|
||||
MSG:5011,0,0,"Die Aufgabe wurde erfolgreich abgeschlossen","Die Aufgabe wurde erfolgreich abgeschlossen"
|
||||
TCOUNT:2
|
||||
CINFO:1,6209,"Blu-ray-Disk"
|
||||
CINFO:2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
CINFO:28,0,"eng"
|
||||
CINFO:29,0,"English"
|
||||
CINFO:30,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
CINFO:31,6119,"<b>Quelleninformationen</b><br>"
|
||||
CINFO:32,0,"DA_LAST EVOLUTION KIZUNA"
|
||||
CINFO:33,0,"0"
|
||||
TINFO:0,2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
TINFO:0,8,0,"6"
|
||||
TINFO:0,9,0,"0:08:51"
|
||||
TINFO:0,10,0,"1.1 GB"
|
||||
TINFO:0,11,0,"1219086336"
|
||||
TINFO:0,16,0,"00011.mpls"
|
||||
TINFO:0,25,0,"6"
|
||||
TINFO:0,26,0,"9,10,11,12,13,14"
|
||||
TINFO:0,27,0,"Digimon Adventure- Last Evolution Kizuna_t00.mkv"
|
||||
TINFO:0,28,0,"eng"
|
||||
TINFO:0,29,0,"English"
|
||||
TINFO:0,30,0,"Digimon Adventure: Last Evolution Kizuna - 6 Kapitel , 1.1 GB"
|
||||
TINFO:0,31,6120,"<b>Titelinformationen</b><br>"
|
||||
TINFO:0,33,0,"0"
|
||||
SINFO:0,0,1,6201,"Video"
|
||||
SINFO:0,0,5,0,"V_MPEG4/ISO/AVC"
|
||||
SINFO:0,0,6,0,"Mpeg4"
|
||||
SINFO:0,0,7,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:0,0,19,0,"1920x1080"
|
||||
SINFO:0,0,20,0,"16:9"
|
||||
SINFO:0,0,21,0,"23.976 (24000/1001)"
|
||||
SINFO:0,0,22,0,"0"
|
||||
SINFO:0,0,28,0,"eng"
|
||||
SINFO:0,0,29,0,"English"
|
||||
SINFO:0,0,30,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:0,0,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,0,33,0,"0"
|
||||
SINFO:0,0,38,0,""
|
||||
SINFO:0,0,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,1,1,6202,"Audio"
|
||||
SINFO:0,1,2,5091,"Stereo"
|
||||
SINFO:0,1,3,0,"deu"
|
||||
SINFO:0,1,4,0,"German"
|
||||
SINFO:0,1,5,0,"A_DTS"
|
||||
SINFO:0,1,6,0,"DTS-HD MA"
|
||||
SINFO:0,1,7,0,"DTS-HD Master Audio"
|
||||
SINFO:0,1,14,0,"2"
|
||||
SINFO:0,1,17,0,"48000"
|
||||
SINFO:0,1,18,0,"16"
|
||||
SINFO:0,1,22,0,"1024"
|
||||
SINFO:0,1,28,0,"eng"
|
||||
SINFO:0,1,29,0,"English"
|
||||
SINFO:0,1,30,0,"DTS-HD MA Stereo German"
|
||||
SINFO:0,1,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,1,33,0,"100"
|
||||
SINFO:0,1,38,0,""
|
||||
SINFO:0,1,40,0,"stereo"
|
||||
SINFO:0,1,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,2,1,6202,"Audio"
|
||||
SINFO:0,2,2,5091,"Stereo"
|
||||
SINFO:0,2,3,0,"deu"
|
||||
SINFO:0,2,4,0,"German"
|
||||
SINFO:0,2,5,0,"A_DTS"
|
||||
SINFO:0,2,6,0,"DTS"
|
||||
SINFO:0,2,7,0,"DTS"
|
||||
SINFO:0,2,13,0,"768 Kb/s"
|
||||
SINFO:0,2,14,0,"2"
|
||||
SINFO:0,2,17,0,"48000"
|
||||
SINFO:0,2,22,0,"2304"
|
||||
SINFO:0,2,28,0,"eng"
|
||||
SINFO:0,2,29,0,"English"
|
||||
SINFO:0,2,30,0,"DTS Stereo German"
|
||||
SINFO:0,2,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,2,33,0,"100"
|
||||
SINFO:0,2,38,0,"d"
|
||||
SINFO:0,2,39,0,"Default"
|
||||
SINFO:0,2,40,0,"stereo"
|
||||
SINFO:0,2,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,3,1,6202,"Audio"
|
||||
SINFO:0,3,2,5091,"Stereo"
|
||||
SINFO:0,3,3,0,"deu"
|
||||
SINFO:0,3,4,0,"German"
|
||||
SINFO:0,3,5,0,"A_DTS"
|
||||
SINFO:0,3,6,0,"DTS-HD MA"
|
||||
SINFO:0,3,7,0,"DTS-HD Master Audio"
|
||||
SINFO:0,3,14,0,"2"
|
||||
SINFO:0,3,17,0,"48000"
|
||||
SINFO:0,3,18,0,"16"
|
||||
SINFO:0,3,22,0,"1024"
|
||||
SINFO:0,3,28,0,"eng"
|
||||
SINFO:0,3,29,0,"English"
|
||||
SINFO:0,3,30,0,"DTS-HD MA Stereo German"
|
||||
SINFO:0,3,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,3,33,0,"100"
|
||||
SINFO:0,3,38,0,""
|
||||
SINFO:0,3,40,0,"stereo"
|
||||
SINFO:0,3,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,4,1,6202,"Audio"
|
||||
SINFO:0,4,2,5091,"Stereo"
|
||||
SINFO:0,4,3,0,"deu"
|
||||
SINFO:0,4,4,0,"German"
|
||||
SINFO:0,4,5,0,"A_DTS"
|
||||
SINFO:0,4,6,0,"DTS"
|
||||
SINFO:0,4,7,0,"DTS"
|
||||
SINFO:0,4,13,0,"768 Kb/s"
|
||||
SINFO:0,4,14,0,"2"
|
||||
SINFO:0,4,17,0,"48000"
|
||||
SINFO:0,4,22,0,"2304"
|
||||
SINFO:0,4,28,0,"eng"
|
||||
SINFO:0,4,29,0,"English"
|
||||
SINFO:0,4,30,0,"DTS Stereo German"
|
||||
SINFO:0,4,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,4,33,0,"100"
|
||||
SINFO:0,4,38,0,""
|
||||
SINFO:0,4,40,0,"stereo"
|
||||
SINFO:0,4,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,5,1,6203,"Untertitel"
|
||||
SINFO:0,5,3,0,"deu"
|
||||
SINFO:0,5,4,0,"German"
|
||||
SINFO:0,5,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,5,6,0,"PGS"
|
||||
SINFO:0,5,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,5,22,0,"0"
|
||||
SINFO:0,5,28,0,"eng"
|
||||
SINFO:0,5,29,0,"English"
|
||||
SINFO:0,5,30,0,"PGS German"
|
||||
SINFO:0,5,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,5,33,0,"100"
|
||||
SINFO:0,5,38,0,""
|
||||
SINFO:0,5,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,6,1,6203,"Untertitel"
|
||||
SINFO:0,6,3,0,"deu"
|
||||
SINFO:0,6,4,0,"German"
|
||||
SINFO:0,6,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,6,6,0,"PGS"
|
||||
SINFO:0,6,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,6,22,0,"6144"
|
||||
SINFO:0,6,28,0,"eng"
|
||||
SINFO:0,6,29,0,"English"
|
||||
SINFO:0,6,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:0,6,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,6,33,0,"100"
|
||||
SINFO:0,6,38,0,"d"
|
||||
SINFO:0,6,39,0,"Default"
|
||||
SINFO:0,6,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,7,1,6203,"Untertitel"
|
||||
SINFO:0,7,3,0,"deu"
|
||||
SINFO:0,7,4,0,"German"
|
||||
SINFO:0,7,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,7,6,0,"PGS"
|
||||
SINFO:0,7,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,7,22,0,"0"
|
||||
SINFO:0,7,28,0,"eng"
|
||||
SINFO:0,7,29,0,"English"
|
||||
SINFO:0,7,30,0,"PGS German"
|
||||
SINFO:0,7,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,7,33,0,"100"
|
||||
SINFO:0,7,38,0,""
|
||||
SINFO:0,7,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,8,1,6203,"Untertitel"
|
||||
SINFO:0,8,3,0,"deu"
|
||||
SINFO:0,8,4,0,"German"
|
||||
SINFO:0,8,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,8,6,0,"PGS"
|
||||
SINFO:0,8,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,8,22,0,"6144"
|
||||
SINFO:0,8,28,0,"eng"
|
||||
SINFO:0,8,29,0,"English"
|
||||
SINFO:0,8,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:0,8,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,8,33,0,"100"
|
||||
SINFO:0,8,38,0,""
|
||||
SINFO:0,8,42,5088,"( Lossless conversion )"
|
||||
TINFO:1,2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
TINFO:1,8,0,"13"
|
||||
TINFO:1,9,0,"1:34:45"
|
||||
TINFO:1,10,0,"16.4 GB"
|
||||
TINFO:1,11,0,"17668571136"
|
||||
TINFO:1,16,0,"00003.mpls"
|
||||
TINFO:1,25,0,"1"
|
||||
TINFO:1,26,0,"7"
|
||||
TINFO:1,27,0,"Digimon Adventure- Last Evolution Kizuna_t01.mkv"
|
||||
TINFO:1,28,0,"eng"
|
||||
TINFO:1,29,0,"English"
|
||||
TINFO:1,30,0,"Digimon Adventure: Last Evolution Kizuna - 13 Kapitel , 16.4 GB"
|
||||
TINFO:1,31,6120,"<b>Titelinformationen</b><br>"
|
||||
TINFO:1,33,0,"0"
|
||||
SINFO:1,0,1,6201,"Video"
|
||||
SINFO:1,0,5,0,"V_MPEG4/ISO/AVC"
|
||||
SINFO:1,0,6,0,"Mpeg4"
|
||||
SINFO:1,0,7,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:1,0,19,0,"1920x1080"
|
||||
SINFO:1,0,20,0,"16:9"
|
||||
SINFO:1,0,21,0,"23.976 (24000/1001)"
|
||||
SINFO:1,0,22,0,"0"
|
||||
SINFO:1,0,28,0,"eng"
|
||||
SINFO:1,0,29,0,"English"
|
||||
SINFO:1,0,30,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:1,0,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,0,33,0,"0"
|
||||
SINFO:1,0,38,0,""
|
||||
SINFO:1,0,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,1,1,6202,"Audio"
|
||||
SINFO:1,1,2,0,"Surround 5.1"
|
||||
SINFO:1,1,3,0,"deu"
|
||||
SINFO:1,1,4,0,"German"
|
||||
SINFO:1,1,5,0,"A_DTS"
|
||||
SINFO:1,1,6,0,"DTS-HD MA"
|
||||
SINFO:1,1,7,0,"DTS-HD Master Audio"
|
||||
SINFO:1,1,14,0,"6"
|
||||
SINFO:1,1,17,0,"48000"
|
||||
SINFO:1,1,18,0,"16"
|
||||
SINFO:1,1,22,0,"1024"
|
||||
SINFO:1,1,28,0,"eng"
|
||||
SINFO:1,1,29,0,"English"
|
||||
SINFO:1,1,30,0,"DTS-HD MA Surround 5.1 German"
|
||||
SINFO:1,1,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,1,33,0,"100"
|
||||
SINFO:1,1,38,0,""
|
||||
SINFO:1,1,40,0,"5.1(side)"
|
||||
SINFO:1,1,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,2,1,6202,"Audio"
|
||||
SINFO:1,2,2,0,"Surround 5.1"
|
||||
SINFO:1,2,3,0,"deu"
|
||||
SINFO:1,2,4,0,"German"
|
||||
SINFO:1,2,5,0,"A_DTS"
|
||||
SINFO:1,2,6,0,"DTS"
|
||||
SINFO:1,2,7,0,"DTS"
|
||||
SINFO:1,2,13,0,"1.5 Mb/s"
|
||||
SINFO:1,2,14,0,"6"
|
||||
SINFO:1,2,17,0,"48000"
|
||||
SINFO:1,2,22,0,"2304"
|
||||
SINFO:1,2,28,0,"eng"
|
||||
SINFO:1,2,29,0,"English"
|
||||
SINFO:1,2,30,0,"DTS Surround 5.1 German"
|
||||
SINFO:1,2,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,2,33,0,"100"
|
||||
SINFO:1,2,38,0,"d"
|
||||
SINFO:1,2,39,0,"Default"
|
||||
SINFO:1,2,40,0,"5.1(side)"
|
||||
SINFO:1,2,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,3,1,6202,"Audio"
|
||||
SINFO:1,3,2,5091,"Stereo"
|
||||
SINFO:1,3,3,0,"jpn"
|
||||
SINFO:1,3,4,0,"Japanese"
|
||||
SINFO:1,3,5,0,"A_DTS"
|
||||
SINFO:1,3,6,0,"DTS-HD MA"
|
||||
SINFO:1,3,7,0,"DTS-HD Master Audio"
|
||||
SINFO:1,3,14,0,"2"
|
||||
SINFO:1,3,17,0,"48000"
|
||||
SINFO:1,3,18,0,"16"
|
||||
SINFO:1,3,22,0,"1024"
|
||||
SINFO:1,3,28,0,"eng"
|
||||
SINFO:1,3,29,0,"English"
|
||||
SINFO:1,3,30,0,"DTS-HD MA Stereo Japanese"
|
||||
SINFO:1,3,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,3,33,0,"100"
|
||||
SINFO:1,3,38,0,""
|
||||
SINFO:1,3,40,0,"stereo"
|
||||
SINFO:1,3,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,4,1,6202,"Audio"
|
||||
SINFO:1,4,2,5091,"Stereo"
|
||||
SINFO:1,4,3,0,"jpn"
|
||||
SINFO:1,4,4,0,"Japanese"
|
||||
SINFO:1,4,5,0,"A_DTS"
|
||||
SINFO:1,4,6,0,"DTS"
|
||||
SINFO:1,4,7,0,"DTS"
|
||||
SINFO:1,4,13,0,"768 Kb/s"
|
||||
SINFO:1,4,14,0,"2"
|
||||
SINFO:1,4,17,0,"48000"
|
||||
SINFO:1,4,22,0,"2304"
|
||||
SINFO:1,4,28,0,"eng"
|
||||
SINFO:1,4,29,0,"English"
|
||||
SINFO:1,4,30,0,"DTS Stereo Japanese"
|
||||
SINFO:1,4,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,4,33,0,"100"
|
||||
SINFO:1,4,38,0,""
|
||||
SINFO:1,4,40,0,"stereo"
|
||||
SINFO:1,4,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,5,1,6203,"Untertitel"
|
||||
SINFO:1,5,3,0,"deu"
|
||||
SINFO:1,5,4,0,"German"
|
||||
SINFO:1,5,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,5,6,0,"PGS"
|
||||
SINFO:1,5,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,5,22,0,"0"
|
||||
SINFO:1,5,28,0,"eng"
|
||||
SINFO:1,5,29,0,"English"
|
||||
SINFO:1,5,30,0,"PGS German"
|
||||
SINFO:1,5,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,5,33,0,"100"
|
||||
SINFO:1,5,38,0,""
|
||||
SINFO:1,5,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,6,1,6203,"Untertitel"
|
||||
SINFO:1,6,3,0,"deu"
|
||||
SINFO:1,6,4,0,"German"
|
||||
SINFO:1,6,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,6,6,0,"PGS"
|
||||
SINFO:1,6,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,6,22,0,"6144"
|
||||
SINFO:1,6,28,0,"eng"
|
||||
SINFO:1,6,29,0,"English"
|
||||
SINFO:1,6,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:1,6,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,6,33,0,"100"
|
||||
SINFO:1,6,38,0,"d"
|
||||
SINFO:1,6,39,0,"Default"
|
||||
SINFO:1,6,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,7,1,6203,"Untertitel"
|
||||
SINFO:1,7,3,0,"deu"
|
||||
SINFO:1,7,4,0,"German"
|
||||
SINFO:1,7,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,7,6,0,"PGS"
|
||||
SINFO:1,7,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,7,22,0,"0"
|
||||
SINFO:1,7,28,0,"eng"
|
||||
SINFO:1,7,29,0,"English"
|
||||
SINFO:1,7,30,0,"PGS German"
|
||||
SINFO:1,7,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,7,33,0,"100"
|
||||
SINFO:1,7,38,0,""
|
||||
SINFO:1,7,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,8,1,6203,"Untertitel"
|
||||
SINFO:1,8,3,0,"deu"
|
||||
SINFO:1,8,4,0,"German"
|
||||
SINFO:1,8,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,8,6,0,"PGS"
|
||||
SINFO:1,8,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,8,22,0,"6144"
|
||||
SINFO:1,8,28,0,"eng"
|
||||
SINFO:1,8,29,0,"English"
|
||||
SINFO:1,8,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:1,8,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,8,33,0,"100"
|
||||
SINFO:1,8,38,0,""
|
||||
SINFO:1,8,42,5088,"( Lossless conversion )"
|
||||
@@ -1,3 +1,15 @@
|
||||
Version 5.6.1
|
||||
|
||||
Untertitel-Spuren werden wieder erkannt.
|
||||
MakeMKV schreibt den Typ eines Streams in seiner Anzeigesprache - auf einem
|
||||
deutsch eingestellten MakeMKV "Untertitel" statt "Subtitles". Rippy prueft
|
||||
seit 5.4.0 auf das englische Wort und fand deshalb keine Untertitel mehr
|
||||
(Ton heisst in beiden Sprachen "Audio", darum fiel es dort nicht auf).
|
||||
Jetzt zaehlt der Typ-Code (6202 Ton, 6203 Untertitel), der ist
|
||||
sprachunabhaengig. Gemessen an der Blu-ray "Digimon Adventure: Last
|
||||
Evolution Kizuna": drei deutsche PGS-Spuren, darunter eine nur fuer
|
||||
erzwungene Untertitel.
|
||||
|
||||
Version 5.6.0
|
||||
|
||||
Mehrere Filme auf einer Disc.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"license": "UNLICENSED",
|
||||
"dependencies": {
|
||||
"electron-updater": "^6.8.9",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rippy",
|
||||
"productName": "Rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"description": "Rippy v5 — Disc-Ripping als eigenständiges Windows-Programm (KONZEPT-WINDOWS.md)",
|
||||
"main": "out/haupt/index.js",
|
||||
"author": "KrBrZ",
|
||||
|
||||
@@ -114,9 +114,21 @@ export function parseTitelInfo(ausgabe: string): TitelInfo[] {
|
||||
// ⚠️ Die Sprache steht in 3/4 — NICHT in 28/29: Die tragen auf JEDEM
|
||||
// Stream „eng"/„English" (MakeMKVs Anzeigesprache). Wer 28 nimmt, hält
|
||||
// jede Disc für englisch.
|
||||
// ⚠️ 5.6.1 (Commander-Fund 03.09.2026, Digimon Last Evolution Kizuna): Auch
|
||||
// der TEXT von Attribut 1 ist MakeMKVs Anzeigesprache — deutsch eingestellt
|
||||
// schreibt es `SINFO:1,5,1,6203,"Untertitel"`, nicht „Subtitles". „Audio"
|
||||
// heißt zufällig in beiden Sprachen gleich, deshalb fehlten NUR die
|
||||
// Untertitel. Verlässlich ist der CODE im vierten Feld: 6201 Video,
|
||||
// 6202 Audio, 6203 Untertitel (gemessen an makemkvcon64 auf diesem PC).
|
||||
export const STREAM_CODE_VIDEO = 6201
|
||||
export const STREAM_CODE_AUDIO = 6202
|
||||
export const STREAM_CODE_UNTERTITEL = 6203
|
||||
|
||||
export interface StreamInfo {
|
||||
nr: number
|
||||
typ: string
|
||||
/** Typ-Code aus Attribut 1 (6201/6202/6203), 0 wenn keiner dastand. */
|
||||
typCode: number
|
||||
lang: string
|
||||
sprache: string
|
||||
codec: string
|
||||
@@ -129,7 +141,7 @@ export interface TitelStreams {
|
||||
untertitel: StreamInfo[]
|
||||
}
|
||||
|
||||
const SINFO_ZEILE = /^SINFO:(\d+),(\d+),(\d+),\d+,"(.*)"\s*$/
|
||||
const SINFO_ZEILE = /^SINFO:(\d+),(\d+),(\d+),(\d+),"(.*)"\s*$/
|
||||
|
||||
export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const titel = new Map<number, Map<number, StreamInfo>>()
|
||||
@@ -139,7 +151,8 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const tNr = Number(treffer[1])
|
||||
const sNr = Number(treffer[2])
|
||||
const attr = Number(treffer[3])
|
||||
const wert = treffer[4]
|
||||
const code = Number(treffer[4])
|
||||
const wert = treffer[5]
|
||||
let streams = titel.get(tNr)
|
||||
if (streams === undefined) {
|
||||
streams = new Map()
|
||||
@@ -147,10 +160,13 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
}
|
||||
let eintrag = streams.get(sNr)
|
||||
if (eintrag === undefined) {
|
||||
eintrag = { nr: sNr, typ: '', lang: '', sprache: '', codec: '', kanaele: '', beschreibung: '' }
|
||||
eintrag = { nr: sNr, typ: '', typCode: 0, lang: '', sprache: '', codec: '', kanaele: '', beschreibung: '' }
|
||||
streams.set(sNr, eintrag)
|
||||
}
|
||||
if (attr === 1) eintrag.typ = wert
|
||||
if (attr === 1) {
|
||||
eintrag.typ = wert
|
||||
eintrag.typCode = code
|
||||
}
|
||||
else if (attr === 3) eintrag.lang = wert
|
||||
else if (attr === 4) eintrag.sprache = wert
|
||||
else if (attr === 6) eintrag.codec = wert
|
||||
@@ -164,9 +180,10 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const untertitel: StreamInfo[] = []
|
||||
for (const sNr of [...streams.keys()].sort((a, b) => a - b)) {
|
||||
const s = streams.get(sNr)!
|
||||
// MakeMKV schreibt „Subtitles" (englisch, Plural) — gemessen.
|
||||
if (s.typ === 'Audio') audio.push(s)
|
||||
else if (s.typ.startsWith('Subtitle')) untertitel.push(s)
|
||||
// Der Code entscheidet (5.6.1); das Wort nur als Notnagel für Ausgaben
|
||||
// ohne Code („Audio", „Subtitles", „Untertitel").
|
||||
if (s.typCode === STREAM_CODE_AUDIO || (s.typCode === 0 && s.typ === 'Audio')) audio.push(s)
|
||||
else if (s.typCode === STREAM_CODE_UNTERTITEL || (s.typCode === 0 && (s.typ.startsWith('Subtitle') || s.typ.startsWith('Untertitel')))) untertitel.push(s)
|
||||
}
|
||||
ergebnis.set(tNr, { audio, untertitel })
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
// 5.6.1 — Commander-Fund vom 03.09.2026: Bei der Blu-ray „Digimon Adventure:
|
||||
// Last Evolution Kizuna" fehlten im Auswahl-Dialog die Untertitel-Chips,
|
||||
// obwohl die Disc drei deutsche PGS-Spuren hat. Gemessen mit
|
||||
// makemkvcon64 -r info auf diesem PC: MakeMKV (deutsch eingestellt) schreibt
|
||||
// den Stream-Typ als „Untertitel", der Parser prüfte auf „Subtitles". Der
|
||||
// Typ-Code im vierten Feld (6203) ist sprachunabhängig.
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { STREAM_CODE_AUDIO, STREAM_CODE_UNTERTITEL, parseStreamInfo, sprachenFuerTitel } from '../src/kern/rip/parser'
|
||||
|
||||
// Wörtlich aus der Messung (gekürzt auf Typ, Sprache, Name, Beschreibung).
|
||||
const KIZUNA = [
|
||||
'SINFO:1,0,1,6201,"Video"',
|
||||
'SINFO:1,0,6,0,"Mpeg4"',
|
||||
'SINFO:1,1,1,6202,"Audio"',
|
||||
'SINFO:1,1,3,0,"deu"',
|
||||
'SINFO:1,1,4,0,"German"',
|
||||
'SINFO:1,1,30,0,"DTS-HD MA Surround 5.1 German"',
|
||||
'SINFO:1,2,1,6202,"Audio"',
|
||||
'SINFO:1,2,3,0,"deu"',
|
||||
'SINFO:1,2,4,0,"German"',
|
||||
'SINFO:1,3,1,6202,"Audio"',
|
||||
'SINFO:1,3,3,0,"jpn"',
|
||||
'SINFO:1,3,4,0,"Japanese"',
|
||||
'SINFO:1,4,1,6202,"Audio"',
|
||||
'SINFO:1,4,3,0,"jpn"',
|
||||
'SINFO:1,4,4,0,"Japanese"',
|
||||
'SINFO:1,5,1,6203,"Untertitel"',
|
||||
'SINFO:1,5,3,0,"deu"',
|
||||
'SINFO:1,5,4,0,"German"',
|
||||
'SINFO:1,5,30,0,"PGS German"',
|
||||
'SINFO:1,6,1,6203,"Untertitel"',
|
||||
'SINFO:1,6,3,0,"deu"',
|
||||
'SINFO:1,6,4,0,"German"',
|
||||
'SINFO:1,6,22,0,"6144"',
|
||||
'SINFO:1,6,30,0,"PGS German (nur erzwungene)"',
|
||||
'SINFO:1,7,1,6203,"Untertitel"',
|
||||
'SINFO:1,7,3,0,"deu"',
|
||||
'SINFO:1,7,4,0,"German"',
|
||||
].join('\n')
|
||||
|
||||
describe('parseStreamInfo — Stream-Typ per Code, nicht per Wort (5.6.1)', () => {
|
||||
it('deutsches MakeMKV schreibt „Untertitel": die drei PGS-Spuren werden erkannt', () => {
|
||||
const streams = parseStreamInfo(KIZUNA).get(1)!
|
||||
expect(streams.audio.map((s) => s.lang)).toEqual(['deu', 'deu', 'jpn', 'jpn'])
|
||||
expect(streams.untertitel.map((s) => s.lang)).toEqual(['deu', 'deu', 'deu'])
|
||||
expect(streams.untertitel[0].typCode).toBe(STREAM_CODE_UNTERTITEL)
|
||||
expect(streams.audio[0].typCode).toBe(STREAM_CODE_AUDIO)
|
||||
expect(streams.untertitel[1].beschreibung).toBe('PGS German (nur erzwungene)')
|
||||
})
|
||||
it('für den Dialog: deu×2 Ton, jpn×2 Ton, deu×3 Untertitel', () => {
|
||||
const sprachen = sprachenFuerTitel(parseStreamInfo(KIZUNA).get(1))
|
||||
expect(sprachen.audio).toEqual([
|
||||
{ lang: 'deu', sprache: 'German', spuren: 2 },
|
||||
{ lang: 'jpn', sprache: 'Japanese', spuren: 2 },
|
||||
])
|
||||
expect(sprachen.untertitel).toEqual([{ lang: 'deu', sprache: 'German', spuren: 3 }])
|
||||
})
|
||||
it('jede Anzeigesprache: der Code zählt — französisch, englisch, und ohne Code das Wort als Notnagel', () => {
|
||||
expect(parseStreamInfo('SINFO:0,1,1,6203,"Sous-titres"\nSINFO:0,1,3,0,"fra"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,6203,"Subtitles"\nSINFO:0,1,3,0,"eng"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Subtitles"\nSINFO:0,1,3,0,"eng"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Untertitel"\nSINFO:0,1,3,0,"deu"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Audio"\nSINFO:0,1,3,0,"deu"').get(0)!.audio).toHaveLength(1)
|
||||
})
|
||||
it('Video bleibt draußen', () => {
|
||||
const streams = parseStreamInfo('SINFO:0,0,1,6201,"Video"\nSINFO:0,0,3,0,"und"').get(0)!
|
||||
expect(streams.audio).toHaveLength(0)
|
||||
expect(streams.untertitel).toHaveLength(0)
|
||||
})
|
||||
})
|
||||