Korrektur-Flow + Freigaben-Auswahl + Schreibtest + Schnellwahl-Klartext
Ampel / ampel (push) Failing after 52s
Ampel / ampel (push) Failing after 52s
Commander-Befunde (23.07. spaet): - MANUELLE KORREKTUR (KONZEPT Schritt 5 endlich komplett): Metadaten-Seite hat jetzt Titelsuche ueber ALLE Quellen (GET /metadata/search) mit Poster-Kacheln; ein Klick uebernimmt den Treffer (POST /metadata/override) fuer Karte, Jobs UND merkt ihn sich 30 Tage per Disc-Fingerabdruck — dieselbe Disc wird beim naechsten Einlegen sofort richtig erkannt - PC/NAS per Klick: SMB-Freigaben eines Rechners auflisten (GET /storage-mounts/shares via smbclient) statt //host/share raten - Berechtigungs-PRUEFUNG beim Einhaengen: Schreibtest, Warnung bei nur-lesbaren Zielen (API + UI + Log) - "Standard-Unterordner" verstaendlich gemacht: heisst jetzt "Schnellwahl beim Rippen" mit Erklaertext; kryptisches Basis-Feld raus - Preview zeigt Poster; Fingerprint fuer Cache/Override vereinheitlicht (billiges Label+Groesse statt Mount-Titel) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -150,6 +150,20 @@ def titel_kandidaten(titel: str) -> List[str]:
|
||||
return kandidaten
|
||||
|
||||
|
||||
def disc_fingerprint(device_path: str) -> str:
|
||||
"""Billiger, stabiler Disc-Fingerabdruck (Volume-Label + Größe).
|
||||
|
||||
Für Cache-Keys und das Merken manueller Korrekturen — bewusst OHNE den
|
||||
teuren Mount-Titel, damit ihn jeder Endpunkt schnell berechnen kann.
|
||||
"""
|
||||
label = read_iso_volume_label(device_path) or read_udf_volume_label(device_path) or "unbekannt"
|
||||
try:
|
||||
groesse = detection.disc_size_bytes(device_path)
|
||||
except OSError:
|
||||
groesse = 0
|
||||
return f"{label}|{groesse}"
|
||||
|
||||
|
||||
def read_udf_volume_label(device_path: str) -> Optional[str]:
|
||||
"""Liest das Volume-Label aus dem UDF Primary Volume Descriptor.
|
||||
|
||||
@@ -226,11 +240,7 @@ class PreScan:
|
||||
# Cache-Key braucht den Fingerabdruck (sonst erbt die nächste Disc
|
||||
# die Metadaten der vorherigen).
|
||||
toc["disc_type"] = disc_type
|
||||
try:
|
||||
groesse = detection.disc_size_bytes(device_path)
|
||||
except OSError:
|
||||
groesse = 0
|
||||
toc["fingerprint"] = f"{toc.get('title') or 'unbekannt'}|{groesse}"
|
||||
toc["fingerprint"] = disc_fingerprint(device_path)
|
||||
|
||||
if disc_type == "CD":
|
||||
return self._scan_audio(device_path, toc)
|
||||
|
||||
Reference in New Issue
Block a user