fix(zombies): die Fehlermeldung unterscheidet jetzt Rip von Kompression
Ampel / ampel (push) Successful in 29s

Nachtrag, direkt am echten Fall aufgefallen. Die Zombie-Erkennung hat den toten
Rip gefunden (Beleg: nach 140 s noch "processing 12 %", nach 160 s "failed") -
aber der Fehlertext sagte:

  "Die Rohdateien wurden NICHT geloescht: mit 'Neu komprimieren' laeuft die
   Kompression erneut, ohne die Disc noch einmal zu rippen."

Der Satz war fuer einen toten TRANSCODE geschrieben, wo die Roh-MKV vollstaendig
ist. Seit "running" mit zu den Arbeitsstati gehoert, traf er auch abgebrochene
RIPS - und da ist er schlicht falsch: Die Datei ist ein Bruchstueck (im Vorfall
5,1 GB von rund 40), und wer dem Rat folgt, komprimiert einen Film, der bei 12 %
aufhoert.

Jetzt unterscheidet der Text die Phase:
  Rip tot        -> "Der Rip war bei 12 % - die Roh-Datei ist UNVOLLSTAENDIG ...
                     Richtig ist: Disc wieder einlegen und neu rippen."
  Transcode tot  -> "Der Rip war fertig, nur die Kompression nicht ..."

Die deutschen Anfuehrungszeichen haben dabei zum vierten Mal an einem Tag
zugeschlagen (in DOPPELT gequoteten Python-Strings beendet das schliessende
Zeichen den String). Die betroffenen Zeilen sind jetzt einfach gequotet, wie es
der Bestand ohnehin macht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-26 16:23:15 +02:00
parent 19f3dc5330
commit f7555a17d1
+39 -5
View File
@@ -99,16 +99,50 @@ def finde_zombies(offene_jobs, belegte) -> list:
return [job for job in offene_jobs if job.get("id") not in belegte]
# In welcher Phase starb der Job? Entscheidet, was danach hilft.
RIP_STATI = ("running", "ripping")
def war_im_rip(job) -> bool:
"""Starb der Job WÄHREND des Rippens? (pure Funktion)
Der Unterschied ist für den Nutzer der ganze Punkt: Nach einem toten
TRANSCODE liegt eine vollständige Roh-MKV da — „Neu komprimieren" genügt und
spart eine Stunde Rippen. Nach einem toten RIP liegt ein ABGESCHNITTENES
Bruchstück da (im Vorfall 26.07.2026: 5,1 GB von rund 40), und Komprimieren
ergäbe einen Film, der bei 12 % aufhört.
"""
return (job.get("status") or "") in RIP_STATI
def fehlertext(job) -> str:
"""Ehrlicher Klartext für die Job-Karte — was war, und was jetzt hilft."""
"""Ehrlicher Klartext für die Job-Karte — was war, und was jetzt hilft.
⚠️ Der Text unterscheidet die Phase (26.07.2026). Vorher stand hier für JEDEN
Fall „mit 'Neu komprimieren' läuft die Kompression erneut, ohne die Disc noch
einmal zu rippen" — geschrieben für einen toten Transcode. Seit „running" mit
zu den Arbeitsstati gehört, traf derselbe Satz auch abgebrochene RIPS, und da
ist er schlicht falsch: Wer ihn befolgt, bekommt ein Bruchstück komprimiert.
"""
zuletzt = job.get("status") or "unbekannt"
return (
kopf = (
f"Abgebrochen: Der Vorgang lief nicht mehr (zuletzt gemeldet: {zuletzt}). "
"Beim Start des Workers war dazu weder ein Prozess noch eine Aufgabe in "
"der Warteschlange zu finden — meistens ein Absturz oder ein Neustart "
"mitten im Lauf. Die Rohdateien wurden NICHT gelöscht: mit "
"'Neu komprimieren' läuft die Kompression erneut, ohne die Disc noch "
"einmal zu rippen."
"mitten im Lauf. "
)
if war_im_rip(job):
fortschritt = job.get("progress") or 0
return kopf + (
f'Der Rip war bei {fortschritt} % — die Roh-Datei ist damit '
'UNVOLLSTÄNDIG. Sie wurde nicht gelöscht, aber „Neu komprimieren" '
'ergäbe einen Film, der mitten drin aufhört. Richtig ist: Disc '
'wieder einlegen und neu rippen.'
)
return kopf + (
'Der Rip war fertig, nur die Kompression nicht. Die Roh-Dateien wurden '
'NICHT gelöscht: mit „Neu komprimieren" läuft sie erneut, ohne die Disc '
'noch einmal zu rippen.'
)