Ampel / ampel (push) Successful in 1m38s
Der Commander legte Disc 2 von „Spartacus: Gods of the Arena" ein, Rippy meldete den FILM „Spartacus" von 1960. An der echten Disc gemessen (Laufwerk G:, Label SPARTACUS_GOTA_D2, UDF, 33.759.100.928 Bytes): Der stark gestutzte Kandidat „Spartacus" stand auf Platz 2 der Suchvarianten und holte dort einen wörtlichen Filmtreffer mit 95 Prozent — die richtige Serie stand auf Platz 6 und wurde nie gefragt. Vier Ursachen, alle behoben: 1. Die Sicherheit maß die ART des Treffers, nie die QUALITÄT der Frage. Neu: abdeckung() + MINDEST_ABDECKUNG — wer mehr als die Hälfte des Titels wegwerfen musste, um zu treffen, bekommt höchstens einen Vorschlag (0,60), und das UI fragt nach, statt sich sicher zu irren. 2. Verpackungs-Zusätze galten als Wortmüll. Neu: discZusatzAbtrennen() trennt "- Disc 2" / "_D2" / "S1" ab UND merkt sie — die Nummer braucht die Ablage später sowieso. Vier Fallen sind abgesichert: "Rocky 2", "Kill Bill Teil 2", "Ocean s 11" (Apostroph-Wortgrenze) und nackte Zahlen am Ende. 3. Der Titelvergleich war zeichengenau. Ein Volume-Label KANN keinen Doppelpunkt tragen, TMDb schreibt ihn — der exakt richtige Treffer fiel an einem Satzzeichen durch. Neu: gleichBedeutend(). 4. Rippy öffnete das Inhaltsverzeichnis der Disc und las nur die erste Zeile daraus. Neu: inhaltAusBdmt() liest auch <di:titleName>. "EP 1" und "EP 2" beweisen die Serie, "DUB GER 1" und "104 GER FSK" nicht. Ist die Serie bewiesen, sind die Film-Zweige der Kaskade AUS. Gemessen an der eingelegten Disc (neue messung.disc-erkennung.test.ts): Titel "Spartacus: Gods Of The Arena - Disc 2" (Quelle: bdmt) Disc 2 | Staffel — | Folgen 2 | Serie bewiesen: true Varianten: "...Arena - Disc 2" -> "...Arena" -> ... -> "Spartacus" 225 Tests grün (vorher 209), Typprüfung sauber. Disc-Nummer, Staffel und Folgenzahl stehen jetzt auch im Fenster (Kachel neben der Erkennung). Version 5.1.1 — zugleich der erste echte Selbst-Update-Beweis (§ 6.8). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
48 lines
2.2 KiB
TypeScript
48 lines
2.2 KiB
TypeScript
// MESSUNG an einer ECHTEN Disc im Laufwerk — läuft nur auf Verlangen und
|
|
// nur unter Windows (die CI-Ampel auf Linux überspringt sie):
|
|
//
|
|
// RIPPY_MESSUNG_DISC=G npx vitest run test/messung.disc-erkennung.test.ts --reporter=verbose
|
|
//
|
|
// Der Anlass (01.09.2026): Der Commander legte Disc 2 der Serie
|
|
// „Spartacus: Gods of the Arena" ein, Rippy meldete den FILM „Spartacus"
|
|
// von 1960. Gemessen am Laufwerk G: — Volume-Label SPARTACUS_GOTA_D2,
|
|
// UDF, 33 759 100 928 Bytes. Die Disc trug die richtige Antwort die
|
|
// ganze Zeit selbst mit sich: In G:\BDMV\META\DL\bdmt_eng.xml steht der
|
|
// Studio-Titel MIT Disc-Nummer und ein Inhaltsverzeichnis, das `EP 1`
|
|
// und `EP 2` nennt. Rippy las davon nur die erste Zeile.
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
const buchstabe = (process.env.RIPPY_MESSUNG_DISC ?? '').replace(/:$/, '').toUpperCase()
|
|
const messen = /^[A-Z]$/.test(buchstabe) && process.platform === 'win32'
|
|
|
|
describe.skipIf(!messen)('Disc-Erkennung an der eingelegten Disc', () => {
|
|
it('liest Titel, Verpackungs-Zusatz und Inhaltsverzeichnis', async () => {
|
|
const { discTitel, discWurzel, inhaltAusBdmt, titelKandidaten } = await import(
|
|
'../src/kern/metadaten/discmerkmale'
|
|
)
|
|
const geraetepfad = `\\\\.\\${buchstabe}:`
|
|
const gefunden = discTitel(geraetepfad)
|
|
|
|
console.log(`MESSUNG Laufwerk ${buchstabe}: Titel "${gefunden.titel}" (Quelle: ${gefunden.quelle || 'keine'})`)
|
|
console.log(
|
|
`MESSUNG Disc ${gefunden.discNr ?? '—'} | Staffel ${gefunden.staffel ?? '—'} | ` +
|
|
`Folgen ${gefunden.folgen} | Serie bewiesen: ${gefunden.istSerie}`,
|
|
)
|
|
const wurzel = discWurzel(geraetepfad)
|
|
if (wurzel.length > 0) {
|
|
console.log(`MESSUNG Inhaltsverzeichnis: ${inhaltAusBdmt(wurzel).eintraege.join(' | ') || '(keines)'}`)
|
|
}
|
|
console.log(`MESSUNG Suchvarianten: ${titelKandidaten(gefunden.titel).join(' -> ')}`)
|
|
|
|
// Eine eingelegte Disc muss sich benennen lassen — sonst ist die
|
|
// Messung selbst kaputt und nicht die Erkennung.
|
|
expect(gefunden.titel.length).toBeGreaterThan(0)
|
|
})
|
|
})
|
|
|
|
describe.skipIf(messen)('Disc-Messung übersprungen', () => {
|
|
it('läuft nur mit RIPPY_MESSUNG_DISC=<Laufwerksbuchstabe> unter Windows', () => {
|
|
expect(true).toBe(true)
|
|
})
|
|
})
|