Ampel / ampel (push) Failing after 1m20s
metadaten/: discmerkmale.ts (BDMT-Studio-Titel, ISO-9660- und UDF-Volume-Label direkt vom Medium — OHNE koffi, ueber fs auf \.\G: —, Label-Normalisierung, Fingerabdruck, progressive Titel-Kandidaten), tmdb.ts (v3-Key UND v4-Token, de-DE, /find fuer deutsche Texte zu OMDb-Treffern), omdb.ts, zuordnung.ts (die Confidence-Kaskade 0,95/0,90/0,80/0,60/0,30 aus prescan.py). ablage/poster.ts. Kern meldet 'disc-info' beim Einlegen; die Pipeline benennt den fertigen Ordner '<Titel> (Jahr)', schreibt movie.nfo/tvshow.nfo mit echten Metadaten und laedt das Poster. Fenster zeigt 'sehr wahrscheinlich: … · 95 %'. ZWEI Kaskaden-Schwaechen LIVE GEFUNDEN und gehaertet (gegen die echten APIs gemessen, Keys aus den Docker-Settings der VM, nicht persistiert): 1. 'Spartacus Gods Of The Arena' wurde zum FILM 'Spartacus' (1960) — der stark gekuerzte Kandidat traf woertlich, bevor die volle Anfrage als spezifische SERIE galt. Kaskade jetzt JE KANDIDAT woertlich→spezifisch (spezifisch nur fuer die volle Anfrage, auch fuer Serien). Nachgemessen: jetzt Serie, 90 %. 2. OMDbs t=-Suche machte aus dem Label 'Bd Evg D2' selbstbewusst 'BD Scream 5' — jetzt Wort-Jaccard-Gate >= 0,5. Nachgemessen: der Fall ist jetzt ein ehrlicher 60-%-Vorschlag, den das UI nachfragt. Messwerte: Akira→95% · Evangelion 2.22→80% (der dokumentierte Fund) · Spartacus GotA→Serie 90% · Bd Evg D2→Vorschlag 60%. Dazu ein neuer Quelltext-Hygiene-Waechter (keine rohen Steuerbytes — zweimal beim Schreiben passiert, einmal haette ein Test dadurch anders gemessen als gelesen). 165 Tests gruen, Smoke gruen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
// MESSUNG gegen die echten Metadaten-APIs (TMDb/OMDb) — läuft nur auf
|
|
// Verlangen und mit Schlüsseln aus der Umgebung (nie committet):
|
|
//
|
|
// RIPPY_MESSUNG_META=1 RIPPY_TMDB_KEY=… RIPPY_OMDB_KEY=… \
|
|
// npx vitest run test/messung.metadaten.test.ts --reporter=verbose
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
const messen = process.env.RIPPY_MESSUNG_META === '1'
|
|
const tmdbKey = process.env.RIPPY_TMDB_KEY ?? ''
|
|
const omdbKey = process.env.RIPPY_OMDB_KEY ?? ''
|
|
|
|
// Echte Disc-Titel-Fälle aus dem Projektalltag: der saubere Studio-Titel,
|
|
// der spezifische Fall (Evangelion-Fund), ein kryptisches Label und eine
|
|
// Serien-Disc.
|
|
const FAELLE = [
|
|
'Akira',
|
|
'Evangelion 2.22',
|
|
'Spartacus Gods Of The Arena',
|
|
'Bd Evg D2',
|
|
]
|
|
|
|
describe.skipIf(!messen)('Zuordnung gegen echte APIs', () => {
|
|
it('ordnet die Projekt-Fälle zu', { timeout: 120_000 }, async () => {
|
|
expect(tmdbKey.length, 'RIPPY_TMDB_KEY fehlt').toBeGreaterThan(0)
|
|
const { TmdbClient } = await import('../src/kern/metadaten/tmdb')
|
|
const { OmdbClient } = await import('../src/kern/metadaten/omdb')
|
|
const { zuordnen } = await import('../src/kern/metadaten/zuordnung')
|
|
|
|
const tmdb = new TmdbClient(tmdbKey)
|
|
const omdb = new OmdbClient(omdbKey)
|
|
for (const fall of FAELLE) {
|
|
const z = await zuordnen(fall, tmdb, omdb)
|
|
console.log(
|
|
`MESSUNG „${fall}" → „${z.titel}"${z.jahr !== null ? ` (${z.jahr})` : ''} · ` +
|
|
`${Math.round(z.confidence * 100)} % · ${z.meta.quelle || 'keine Quelle'} · ${z.meta.typ}`,
|
|
)
|
|
expect(z.confidence).toBeGreaterThan(0)
|
|
}
|
|
})
|
|
})
|
|
|
|
describe.skipIf(messen)('Metadaten-Messung übersprungen', () => {
|
|
it('läuft nur mit RIPPY_MESSUNG_META=1', () => {
|
|
expect(true).toBe(true)
|
|
})
|
|
})
|