Windows-Worker: Pfad-Mapping fuer echte Transcodes + leere-Titel-Meldung + E2E-Beweis dokumentiert
Ampel / ampel (push) Successful in 27s
Ampel / ampel (push) Successful in 27s
- pfad_lokal (tasks.py, mit Tests): RIPPY_PATH_MAP uebersetzt Container-Pfade (/app/temp, /app/media) auf Netzlaufwerke des nativen Workers — ohne Mapping unveraendert (Docker-Worker). - Rip-Dialog: 'done' mit 0 Titeln bekommt Klartext (Disc vermutlich nicht entschluesselbar) statt leerer Tabelle. - SAVEPOINT: E2E-Beweis des nativen Windows-Workers dokumentiert (test-windows-nativ online, HandBrake 1.9.2, echte LAN-IP). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,29 @@ from ripping import (
|
||||
|
||||
API_URL = os.getenv("API_URL", "http://api:8000")
|
||||
|
||||
|
||||
def pfad_lokal(pfad: str, mapping: str = None) -> str:
|
||||
"""Übersetzt Rippy-Container-Pfade für native Worker (pure Funktion).
|
||||
|
||||
Der native Windows-Worker sieht /app/temp und /app/media nicht — er
|
||||
mountet Rippys Freigabe als Netzlaufwerk und setzt RIPPY_PATH_MAP,
|
||||
z. B. "/app/media=Z:\\media;/app/temp=Y:\\temp". Ohne Mapping (Docker-
|
||||
Worker: identische Mounts) kommt der Pfad unverändert zurück.
|
||||
"""
|
||||
mapping = mapping if mapping is not None else os.getenv("RIPPY_PATH_MAP", "")
|
||||
if not pfad or not mapping:
|
||||
return pfad
|
||||
for paar in mapping.split(";"):
|
||||
if "=" not in paar:
|
||||
continue
|
||||
quelle, ziel = paar.split("=", 1)
|
||||
if quelle and pfad.startswith(quelle):
|
||||
rest = pfad[len(quelle):]
|
||||
if "\\" in ziel:
|
||||
rest = rest.replace("/", "\\")
|
||||
return ziel + rest
|
||||
return pfad
|
||||
|
||||
RAW_DIR = os.getenv("RAW_DIR", "/app/temp/raw")
|
||||
MEDIA_ROOT = "/app/media"
|
||||
|
||||
@@ -453,6 +476,9 @@ def transcode_files(self, job_id: str, raw_dir: str, final_dir: str):
|
||||
Über POST /jobs/{id}/retry-transcode jederzeit neu anstoßbar.
|
||||
"""
|
||||
db.init_db()
|
||||
# Native Worker (Windows) übersetzen Container-Pfade aufs Netzlaufwerk
|
||||
raw_dir = pfad_lokal(raw_dir)
|
||||
final_dir = pfad_lokal(final_dir)
|
||||
quellen = sorted(glob.glob(os.path.join(raw_dir, "*.mkv")))
|
||||
if not quellen:
|
||||
ergebnis = {"status": "error", "error": f"Keine Roh-MKVs in {raw_dir} gefunden"}
|
||||
|
||||
Reference in New Issue
Block a user