fix(v5): Serien über mehrere Discs — nur die eigenen Folgen benennen, nie überschreiben; HandBrake schreibt auf Zwischennamen
WAS: - episodenUmbenennen bekommt die Dateien DIESER Disc (nurDiese) statt den ganzen Season-Ordner zu zählen. Vorher hieß es bei Disc 2 „über- sprungen: 4 Dateien, 2 Zuordnungen", sobald Disc 1 dort schon S01E01/ S01E02 abgelegt hatte — Serien-Merker und „ab Folge" liefen ins Leere. - freierName: eine vorhandene Datei gleichen Namens im Ziel wird nie ersetzt („title_t00 (2).mkv") — außer beim Wiederholen, wo die alte Fassung ausdrücklich weicht (auftrag.ersetzt). - komprimieren() lässt HandBrake auf „<name>.teil.mkv" schreiben und benennt erst die fertige Datei um; nach Abbruch oder Fehler werden die Reste (auch eine Datei daneben) entfernt. Vorher blieb eine halbe Datei unter dem endgültigen Namen liegen — ohne Arbeitsordner direkt in der Ablage, wo Jellyfin sie als kaputten Film zeigte. WARUM: Durchsicht 12.09.2026, Funde F3 und F9 — mit Tests (Season-Ordner mit Bestand, Kollision, Zwischenname, Reste). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8c4456d005
commit
904e4b2ef6
@@ -220,3 +220,22 @@ describe('etaAusZeile — Restzeit aus der Encoding-Zeile (5.6.0, Format aus dem
|
||||
expect(a.verarbeite('Encoding: task 1 of 1, 11.00 %')).toEqual({ prozent: 11 })
|
||||
})
|
||||
})
|
||||
|
||||
// 5.7.0 (Durchsicht F9): HandBrake schreibt auf einen Zwischennamen; eine
|
||||
// halbe Datei trägt nie den echten Namen.
|
||||
describe('Zwischenname (5.7.0)', () => {
|
||||
it('zwischenname und endname gehören zusammen', async () => {
|
||||
const { zwischenname, endname } = await import('../src/kern/komprimieren/handbrake')
|
||||
expect(zwischenname('E:\\Filme\\Akira (1988)\\Akira (1988).mkv')).toBe('E:\\Filme\\Akira (1988)\\Akira (1988).teil.mkv')
|
||||
expect(endname('E:\\Filme\\Akira (1988)\\Akira (1988).teil.mkv')).toBe('E:\\Filme\\Akira (1988)\\Akira (1988).mkv')
|
||||
expect(endname('E:\\x\\title_t00.teil.mp4')).toBe('E:\\x\\title_t00.mp4')
|
||||
expect(zwischenname('ohne-endung')).toBe('ohne-endung.teil')
|
||||
})
|
||||
it('zwischenReste räumt die Zwischen-Datei und ihre Datei daneben', async () => {
|
||||
const { zwischenReste } = await import('../src/kern/komprimieren/handbrake')
|
||||
const da = new Set(['E:\\x\\a.teil.mkv', 'E:\\x\\a.teil.mp4'])
|
||||
const weg: string[] = []
|
||||
expect(zwischenReste('E:\\x\\a.teil.mkv', (p) => weg.push(p), (p) => da.has(p))).toEqual(['E:\\x\\a.teil.mkv', 'E:\\x\\a.teil.mp4'])
|
||||
expect(zwischenReste('E:\\x\\b.teil.mkv', (p) => weg.push(p), (p) => da.has(p))).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user