Fix: Hybrid-Race liess .DL.+Doppeltonspur auf einzelnen Episoden zurueck
Symptom: Bei manchen Episoden (z.B. Desperate Housewives S03E08/E11/E17) blieb der .DL.-Marker stehen UND beide Tonspuren (DE+EN) erhalten — obwohl keepGermanAudioOnly aktiv war und alle anderen Episoden des Pakets sauber verarbeitet wurden. Die Vermutung "langer Titel" war falsch; die betroffenen Episoden hatten gleich lange Namen wie die sauberen. Ursache (im Support-Bundle bewiesen): genau die 3 Episoden hatten null "Tonspur-Bereinigung OK"-Zeilen. Im Hybrid-Modus laeuft der Entpacker SEPARAT von der per-Paket-Kette (autoRename -> keepGermanAudio -> collect). Waehrend ein langsamer Remux einer anderen Episode (1,5 GB, ~3 s) lief, entpackte der Extraktor frische .DL.-MKVs in denselben extractDir — also NACH dem Datei-Scan von keepGermanAudio, aber bevor der Ketten-Abschluss- collect lief. collectMkvFilesToLibrary griff sie dann mit .DL. ab und verschob sie in die MKV-Bibliothek, bevor ihre eigene Tonspur-Bereinigung je lief. Einmal aus extractDir heraus, fand der finale Deferred- keepGermanAudio sie nicht mehr. Das 2000-ms-Frische-Gate schuetzte nicht, weil die Dateien beim collect schon ~2,3 s alt waren. Fix: collectMkvFilesToLibrary haelt im Hybrid-Lauf (deferFreshFiles=true) bei aktivem keepGermanAudioOnly jede remuxbare Datei (.mkv/.mp4) zurueck, die noch den .DL.-Marker traegt — sie hat die Tonspur-Bereinigung sicher noch nicht durchlaufen. Sie bleibt in extractDir und wird von einer spaeteren Hybrid-Runde ODER dem finalen Deferred-Pass (erst keepGermanAudio, dann collect mit deferFreshFiles=false) bereinigt + gesammelt. Praezise auf remuxbare Dateien begrenzt: eine .DL.avi ruehrt keepGermanAudio nie an, also darf sie nicht haengen bleiben. Der Deferred-Pass (deferFreshFiles=false) ist NICHT betroffen — dort darf eine legitim doppeltonige Datei (kein DE-Track) weiterhin mit .DL. gesammelt werden, statt fuer immer liegen zu bleiben. Regressionstest tests/hybrid-collect-race.test.ts (3 Faelle): Hybrid haelt remuxbare .DL.-Datei zurueck (sammelt bereinigte mkv + nicht-remuxbare .DL.avi trotzdem), Deferred sammelt sie, keepGermanAudioOnly aus haelt nichts zurueck.
This commit is contained in:
@@ -4924,6 +4924,14 @@ export class DownloadManager extends EventEmitter {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (deferFreshFiles && this.settings.keepGermanAudioOnly) {
|
||||
const baseName = path.basename(sourcePath);
|
||||
if (isRemuxableVideoFile(baseName) && hasDualLangMarker(baseName)) {
|
||||
logger.info(`MKV-Sammelordner: ${baseName} uebersprungen — .DL. noch nicht tonspur-bereinigt (Race-Schutz), wird im finalen Durchlauf gesammelt`);
|
||||
skipped += 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (sourceSize === 0) {
|
||||
logger.warn(`MKV-Sammelordner: überspringe 0-Byte-Datei ${path.basename(sourcePath)}`);
|
||||
const resolved = this.inferItemForMediaLog(pkg, sourcePath, path.basename(sourcePath), targetDir);
|
||||
|
||||
Reference in New Issue
Block a user