Auto-Rename: zwei Mismatch-Bugs gefixt (obfuskierter File-Token + weak Folder)
Bug 1 - Obfuskierter Datei-Token vs Folder: Hoster verteilen Episoden in EPISODEN-Ordner ABER scrambeln den Datei-Token zur Anti-Piracy: Folder: Die.Thundermans.S02E01.Der.Thunder.Van.GERMAN... File: awa-diethundermans02e16hd.mkv (Datei sagt E16, Folder E01) Bisher hat der Episode-Token-Mismatch-Check uebersprungen → Datei behaelt obfuskierten Namen → MKV-Move kopiert Garbage-Namen ins Library-Verzeichnis. Fix: wenn der unmittelbare Eltern-Ordner explizit denselben SxxExx- Token wie unser computed targetBaseName traegt (also ein Per-Episode Scene-Folder ist, NICHT der Extract-Root), wird der Folder-Token als authoritativ behandelt — Scene-Releases benennen Episoden-Folder deterministisch korrekt, der Datei-Name ist die Obfuskation. Bug 2 - Weak Folder ueberschreibt perfekten Source-Filename: Source: Desperate.Housewives.S01E01.German.Synced.DL.720p.WEB-DL.AC3.h264 Folder-Kette: ["S01 Complete", "Desperate.Housewives.S01.Synced..."] Auto-Rename hat den unmittelbaren Parent "S01 Complete" gewaehlt und daraus "S01E01 Complete" gebaut — kompletter Verlust des Series-Namens. Fix: neue Helper-Funktion hasMeaningfulSeriesPrefix() prueft, ob ein Name mindestens 3 alphabetische Zeichen VOR dem Season-Token hat. Wenn (a) Source einen Episode-Token hat, (b) Source einen Series-Prefix hat, (c) Computed Target KEINEN Series-Prefix hat und (d) Target weniger als die Haelfte der Source-Laenge ist → Source behalten, Rename ueberspringen. Renaming wuerde Information ZERSTOEREN. Tests: 3 neue Unit-Tests fuer hasMeaningfulSeriesPrefix decken die relevanten Faelle ab (echte Series-Namen vs generische Season-Labels vs. Folder ohne Season-Token). 577/577 Tests gruen.
This commit is contained in:
@@ -6,9 +6,31 @@ import {
|
||||
ensureRepackToken,
|
||||
buildAutoRenameBaseName,
|
||||
buildAutoRenameBaseNameFromFolders,
|
||||
buildAutoRenameBaseNameFromFoldersWithOptions
|
||||
buildAutoRenameBaseNameFromFoldersWithOptions,
|
||||
hasMeaningfulSeriesPrefix
|
||||
} from "../src/main/download-manager";
|
||||
|
||||
describe("hasMeaningfulSeriesPrefix", () => {
|
||||
it("recognizes a real series name before the season token", () => {
|
||||
expect(hasMeaningfulSeriesPrefix("Desperate.Housewives.S01.Synced.DL.720p.WEB-DL.AC3.h264")).toBe(true);
|
||||
expect(hasMeaningfulSeriesPrefix("Die.Thundermans.S02E06.Tickets.und.Shreddy.GERMAN.WS.720p.HDTV.x264-aWake")).toBe(true);
|
||||
expect(hasMeaningfulSeriesPrefix("Mistresses.2013.S02.GERMAN.DL.720p.WEB.x264-TSCC")).toBe(true);
|
||||
expect(hasMeaningfulSeriesPrefix("show.name.s01e01.720p")).toBe(true);
|
||||
});
|
||||
|
||||
it("rejects generic season-label folders without a series name", () => {
|
||||
expect(hasMeaningfulSeriesPrefix("S01 Complete")).toBe(false);
|
||||
expect(hasMeaningfulSeriesPrefix("S02")).toBe(false);
|
||||
expect(hasMeaningfulSeriesPrefix("S01E01 Complete")).toBe(false);
|
||||
expect(hasMeaningfulSeriesPrefix(".S01.bla")).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false when there is no season token at all", () => {
|
||||
expect(hasMeaningfulSeriesPrefix("Some Random Folder")).toBe(false);
|
||||
expect(hasMeaningfulSeriesPrefix("")).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("extractEpisodeToken", () => {
|
||||
it("extracts S01E01 from standard scene format", () => {
|
||||
expect(extractEpisodeToken("show.name.s01e01.720p")).toBe("S01E01");
|
||||
|
||||
Reference in New Issue
Block a user