UDF-Volume-Label-Leser (Blu-rays haben keine ISO-Bridge) + Etappe 12 (ARM)
Ampel / ampel (push) Successful in 35s
Ampel / ampel (push) Successful in 35s
Praxis-Befund mit echter BD-50: reines UDF, der ISO-PVD-Leser griff nicht. Jetzt ECMA-167-Weg (AVDP Sektor 256 -> Main VDS -> PVD Tag-ID 1 -> Volume Identifier als d-string), mit Tests fuer das d-string-Parsing. ROADMAP Etappe 12 aus der ARM-Vollanalyse: was wir uebernehmen (Fingerprint-DB, bdmt_eng.xml, Suchdegradation, Manual Mode, Apprise, Multi-Drive, Backup-Modus) und wo wir ARM schlagen (Serien-Episoden- Matching, Main-Feature per Laufzeitabgleich). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,26 @@
|
||||
"""Tests für die puren Pre-Scan-/OMDb-Helfer (Label-Normalisierung, Parsing)."""
|
||||
|
||||
from clients.omdb import parse_runtime_minutes, parse_year
|
||||
from prescan.prescan import normalize_disc_label
|
||||
from prescan.prescan import normalize_disc_label, parse_udf_dstring
|
||||
|
||||
|
||||
def test_udf_dstring_latin1():
|
||||
# d-string: [comp_id=8]["MEIN_FILM"][padding][len=10]
|
||||
daten = bytes([8]) + b"MEIN_FILM" + bytes(21) + bytes([10])
|
||||
assert parse_udf_dstring(daten) == "MEIN_FILM"
|
||||
|
||||
|
||||
def test_udf_dstring_utf16():
|
||||
text = "FILM".encode("utf-16-be")
|
||||
daten = bytes([16]) + text + bytes(32 - 2 - len(text)) + bytes([1 + len(text)])
|
||||
assert parse_udf_dstring(daten) == "FILM"
|
||||
|
||||
|
||||
def test_udf_dstring_kaputt_gibt_leer():
|
||||
assert parse_udf_dstring(b"") == ""
|
||||
assert parse_udf_dstring(bytes(32)) == "" # Länge 0
|
||||
daten = bytes([8]) + b"X" + bytes(29) + bytes([99]) # Länge > Puffer
|
||||
assert parse_udf_dstring(daten) == ""
|
||||
|
||||
|
||||
def test_label_normalisierung():
|
||||
|
||||
Reference in New Issue
Block a user