// 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', // Der echte Studio-Titel der Disc vom 01.09.2026 — MIT Doppelpunkt und // Verpackungs-Zusatz, genau so, wie er von der Disc kommt. 'Spartacus: Gods Of The Arena - Disc 2', '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) }) })