Renaming: vollstaendigen Episoden-Ordner als Namen nutzen, wenn Quelle keinen SxxExx-Token hat
User-Report (Desktop-Log): "Kreuzfahrt ins Glück" — 25 Folgen "bet_kig_01_hdt.mkv" (obfuskiert, KEIN SxxExx-Token) landeten roh in der Library, obwohl der Episoden-Ordner "Kreuzfahrt.ins.Glueck.01.Hochzeitsreise.nach.Burma.2007.German.720p.HDTV.x264-BET" bereits der saubere Name ist (Episode als "01" statt S01E01). Ursache (vorbestehend, nicht v1.7.178/179): buildAutoRenameBaseName gibt null zurueck, sobald die QUELLE keinen SxxExx-Token hat — das "Folge 01"-Nummernformat wurde nie unterstuetzt. Fix: Fallback in decideAutoRenameBaseName — fehlt der Quell-Episode-Token und kann normal kein Name abgeleitet werden, aber ein folderCandidate ist ein VOLLSTAENDIGER Scene-Release-Ordner (Scene-Gruppe UND Aufloesung ODER Codec, kein reiner Season-Ordner), wird dieser Ordnername direkt verwendet (note "folder-as-is"). Greift NUR ohne Quell-Episode-Token -> Mega-Direct (mit Quell-Token) bleibt no-target. Aufloesung ODER Codec (nicht nur Aufloesung) deckt DVDRip/XviD ohne 720p ab (Advisor-Punkt). Bonus/Sample werden vorher gefiltert. Verifiziert: tsc 6, 682 Tests gruen (+3: Kreuzfahrt real, DVDRip-nur-Codec, Mega-Direct-bleibt- no-target), Build gruen. Advisor + reproduzierter Diagnose-Test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
e9c6a6bcae
commit
dc271e08ff
@@ -128,6 +128,41 @@ describe("decideAutoRenameBaseName (shared naming decision — used by auto-rena
|
||||
expect(decision.kind).toBe("rename");
|
||||
expect(decision.kind === "rename" && decision.baseName).toBe(epFolder);
|
||||
});
|
||||
|
||||
it("uses the complete per-episode folder when the SOURCE has no SxxExx token (bare 'Folge 01' format)", () => {
|
||||
// User-Report: "Kreuzfahrt ins Glück" — Datei "bet_kig_01_hdt.mkv" (kein SxxExx-Token),
|
||||
// Episoden-Ordner nummeriert mit "01" statt S01E01. Frueher "kein Zielname" -> roh in die
|
||||
// Library. Jetzt: der vollstaendige Release-Ordnername wird direkt verwendet.
|
||||
const folders = [
|
||||
"Kreuzfahrt.ins.Glueck.01.Hochzeitsreise.nach.Burma.2007.German.720p.HDTV.x264-BET",
|
||||
"kig.hdtv.7p-001",
|
||||
"Kreuzfahrt ins Glück S01"
|
||||
];
|
||||
const decision = decideAutoRenameBaseName(folders, "bet_kig_01_hdt.mkv", "bet_kig_01_hdt", folders[0], folders[2]);
|
||||
expect(decision.kind).toBe("rename");
|
||||
expect(decision.kind === "rename" && decision.baseName).toBe(folders[0]);
|
||||
});
|
||||
|
||||
it("complete-folder fallback fires on CODEC alone (no resolution token — DVDRip/XviD class)", () => {
|
||||
const folders = [
|
||||
"Kreuzfahrt.ins.Glueck.01.Hochzeitsreise.nach.Burma.2007.German.DVDRip.x264-BET",
|
||||
"Kreuzfahrt ins Glück S01"
|
||||
];
|
||||
const decision = decideAutoRenameBaseName(folders, "bet_kig_01.mkv", "bet_kig_01", folders[0], folders[1]);
|
||||
expect(decision.kind).toBe("rename");
|
||||
expect(decision.kind === "rename" && decision.baseName).toBe(folders[0]);
|
||||
});
|
||||
|
||||
it("complete-folder fallback does NOT fire when the source HAS an episode token (generic pack stays no-target)", () => {
|
||||
const decision = decideAutoRenameBaseName(
|
||||
["Mega-Direct-Pack"],
|
||||
"Direct.Show.S01E01.German.1080p.WEB.x264-DIRECT.mkv",
|
||||
"Direct.Show.S01E01.German.1080p.WEB.x264-DIRECT",
|
||||
"Mega-Direct-Pack",
|
||||
"Mega-Direct-Pack"
|
||||
);
|
||||
expect(decision.kind).toBe("skip");
|
||||
});
|
||||
});
|
||||
|
||||
describe("hasMeaningfulSeriesPrefix", () => {
|
||||
|
||||
Reference in New Issue
Block a user