Fix: Mega-Debrid "Fichier supprime" ist transient, nicht tot -- korrigiert v1.7.210
v1.7.210 hat den franzoesischen Mega-Debrid-Fehler "Fichier supprime chez l'hebergeur" als permanent toten Link behandelt (Item sofort gescheitert, kein Web-Fallback). Die Support-Bundle-Logs widerlegen das: von 18 Links mit diesem Fehler haben 4 Sekunden spaeter ein OK geliefert -- 1x ueber Web, 3x ueber API-Retry (7-66s). Der Fehler ist TRANSIENT; v1.7.210 haette diese erholbaren Links faelschlich dauerhaft gekillt und den rettenden Web-Fallback abgeklemmt. Korrektur: - classifyAccountFailure: "supprime"/"introuvable" -> temporaer, cooldownMs 0, NICHT fatal. Der eigentliche Stall-Verursacher (30s Account-Cooldown, der bei nur einem Account auch alle gesunden Links via SKIP_COOLDOWN blockierte) ist damit weg, OHNE die erholbaren Links zu verlieren. - isPermanentLinkError: franzoesische Phrasen wieder entfernt (nur echte permanente engl. Signale fuer RD/AllDebrid bleiben). - Provider-Kette + interner Web-Fallback: Kurzschluss entfernt -> Web-Fallback wird wieder versucht (hat 1/4 der Links gerettet). - Pacing kommt vom bestehenden 5s-Exponential-Backoff (unrestrictDelayMs) pro Item, nicht vom Account-Cooldown -> weit unter Mega-Debrid 50 req/s, kein IP-Ban-Risiko. - Anzeige: deutsche, transient formulierte Meldung "Datei beim Hoster gerade nicht abrufbar" statt franzoesisch und statt "tot". - shared/dead-link.ts -> shared/mega-debrid-errors.ts, Semantik korrekt benannt. Tests: tests/mega-debrid-errors.test.ts + behavioraler Test in debrid.test.ts (supprime -> kein Account-Cooldown, deutsche Meldung, retrybar). Volle Suite 822/822 gruen. Behebt die Queue-Quervergiftung; macht echte tote Links bei retryLimit 0 NICHT aufgeben (vorbestehend, unveraendert). Parallel-Umwandlung folgt separat.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
export function isMegaDebridResolveFailure(errorText: string): boolean {
|
||||
const text = String(errorText || "").toLowerCase();
|
||||
return /supprim/.test(text)
|
||||
|| text.includes("introuvable")
|
||||
|| text.includes("n'existe plus")
|
||||
|| text.includes("n existe plus")
|
||||
|| text.includes("fichier inexistant");
|
||||
}
|
||||
|
||||
export function germanMegaDebridResolveReason(errorText: string): string {
|
||||
const text = String(errorText || "").toLowerCase();
|
||||
if (text.includes("introuvable") || text.includes("fichier inexistant") || text.includes("n'existe plus") || text.includes("n existe plus")) {
|
||||
return "Datei beim Hoster nicht gefunden";
|
||||
}
|
||||
return "Datei beim Hoster gerade nicht abrufbar";
|
||||
}
|
||||
Reference in New Issue
Block a user