Jellyfin-Abgleich: unbekannte Titel aus TMDB nachladen statt zu überspringen #16

Closed
opened 2026-09-02 09:47:20 +00:00 by florian.wilde · 4 comments
Owner

Was heute passiert

Der Abgleich aus #1 ordnet Jellyfin-Items über die TMDB-Kennung zu — aber nur gegen Titel, die Flimmer schon kennt. Was der Katalog nicht enthält, wird übersprungen und landet mit dem Grund „TMDB 424242 nicht im Katalog" im Bericht (src/lib/mediaserver.ts:226).

Für eine frisch aufgesetzte Instanz heißt das: Jellyfin meldet 800 Filme, Flimmer ordnet null davon zu, weil die Bibliothek leer ist. Der Abgleich kann nur bestätigen, was ohnehin schon da war.

Das Häkchen „Fehlende Titel dabei aufnehmen" hilft dabei nicht — es nimmt nur Titel auf, die im Katalog stehen, aber noch nicht in der Bibliothek. Zwei verschiedene Dinge, die man leicht verwechselt.

Was fehlt

ensureTitle(type, tmdbId) (src/lib/catalog.ts:331) kann genau das: einen Titel bei TMDB holen und im Katalog anlegen, samt Staffeln und Episoden. Der Abgleich ruft es bloß nicht auf.

Mit diesem Schritt wird aus „Bestand bestätigen" ein echtes Übernehmen: Jellyfin einmal verbinden, und die eigene Mediathek steht in Flimmer.

Was dabei zu bedenken ist

Der Typ muss stimmen. ensureTitle braucht SERIES oder MOVIE. Jellyfin liefert bei Episoden die TMDB-Kennung der Serie — die Zuordnung ist also Episode → Series → SERIES, Movie → MOVIE. Das steht schon so im Abgleich; es muss nur mitgereicht werden.

Das kostet Zeit und TMDB-Anfragen. 800 unbekannte Titel bedeuten 800 Abrufe, bei Serien zusätzlich einen je Staffel. Der erste Lauf einer großen Mediathek läuft damit nicht mehr in Sekunden. Nötig sind deshalb:

  • eine Obergrenze je Lauf (etwa 100 neue Titel), der Rest kommt beim nächsten Mal
  • Fortschrittsanzeige oder wenigstens ein Hinweis, dass es dauert
  • kein Abbruch bei einem einzelnen Fehlschlag — TMDB kennt nicht jede Kennung

Nur mit ausdrücklicher Erlaubnis. Das Nachladen gehört an dasselbe Häkchen wie das Aufnehmen (oder an ein eigenes daneben), und im täglichen Lauf bleibt es aus. Eine Mediathek soll nicht nachts ungefragt zur Bibliothek werden — dieser Grundsatz aus #1 gilt weiter.

Ohne TMDB-Schlüssel geht es nicht. Fehlt er, muss die Oberfläche das sagen, statt still nichts zu tun.

Umzusetzen

  • In syncConnection() beim Fehlschlag der Katalogsuche ensureTitle() aufrufen, wenn erlaubt
  • Zähler im Bericht: „aus TMDB nachgeladen"
  • Obergrenze je Lauf, Fehler je Titel sammeln statt abbrechen
  • Häkchen und Beschriftung in den Einstellungen schärfen — der Unterschied zwischen Katalog und Bibliothek ist heute nicht sichtbar
  • Anleitung: was beim ersten Abgleich einer großen Mediathek passiert

Abnahme

  • Ein Jellyfin-Titel, den Flimmer nicht kennt, wird bei gesetzter Erlaubnis aus TMDB nachgeladen und aufgenommen
  • Bei Serien kommen Staffeln und Episoden mit, damit der Fortschritt stimmt
  • Ohne Erlaubnis bleibt es wie bisher: Bericht statt Import
  • Der tägliche Lauf lädt nie nach
  • Die Obergrenze je Lauf greift; der Rest kommt beim nächsten Durchgang
  • Ein einzelner Fehlschlag bei TMDB bricht den Lauf nicht ab
  • Ohne TMDB-Schlüssel erscheint ein verständlicher Hinweis
  • Tests gegen nachgebildete Antworten, ohne echten Jellyfin und ohne echtes TMDB

Abgrenzung

Das ist die Fortsetzung von #1, nicht dessen Wiederholung. Bereits umgesetzt und ausgeliefert (v0.8.0):

  • Verbindung einrichten und prüfen, Warnung bei fehlendem Gesehen-Status
  • Zuordnung über die TMDB-Kennung, „hab ich" setzen
  • Sichtungen mit dem Termin aus Jellyfin übernehmen, entdoppelt
  • Aufnehmen von Titeln, die im Katalog stehen
  • Täglicher Abgleich, Einbahnstraße

Offen bleibt daneben weiterhin Stufe 3 aus #1: das Zurückschreiben von Flimmer nach Jellyfin.


Angelegt auf ausdrücklichen Wunsch direkt in Gitea, ohne Verknüpfung zu einem Nebula-Task.

## Was heute passiert Der Abgleich aus #1 ordnet Jellyfin-Items über die TMDB-Kennung zu — aber nur gegen **Titel, die Flimmer schon kennt**. Was der Katalog nicht enthält, wird übersprungen und landet mit dem Grund „TMDB 424242 nicht im Katalog" im Bericht (`src/lib/mediaserver.ts:226`). Für eine frisch aufgesetzte Instanz heißt das: Jellyfin meldet 800 Filme, Flimmer ordnet **null** davon zu, weil die Bibliothek leer ist. Der Abgleich kann nur bestätigen, was ohnehin schon da war. Das Häkchen „Fehlende Titel dabei aufnehmen" hilft dabei nicht — es nimmt nur Titel auf, die im **Katalog** stehen, aber noch nicht in der **Bibliothek**. Zwei verschiedene Dinge, die man leicht verwechselt. ## Was fehlt `ensureTitle(type, tmdbId)` (`src/lib/catalog.ts:331`) kann genau das: einen Titel bei TMDB holen und im Katalog anlegen, samt Staffeln und Episoden. Der Abgleich ruft es bloß nicht auf. Mit diesem Schritt wird aus „Bestand bestätigen" ein echtes **Übernehmen**: Jellyfin einmal verbinden, und die eigene Mediathek steht in Flimmer. ## Was dabei zu bedenken ist **Der Typ muss stimmen.** `ensureTitle` braucht `SERIES` oder `MOVIE`. Jellyfin liefert bei Episoden die TMDB-Kennung der **Serie** — die Zuordnung ist also `Episode → Series → SERIES`, `Movie → MOVIE`. Das steht schon so im Abgleich; es muss nur mitgereicht werden. **Das kostet Zeit und TMDB-Anfragen.** 800 unbekannte Titel bedeuten 800 Abrufe, bei Serien zusätzlich einen je Staffel. Der erste Lauf einer großen Mediathek läuft damit nicht mehr in Sekunden. Nötig sind deshalb: - eine **Obergrenze je Lauf** (etwa 100 neue Titel), der Rest kommt beim nächsten Mal - Fortschrittsanzeige oder wenigstens ein Hinweis, dass es dauert - kein Abbruch bei einem einzelnen Fehlschlag — TMDB kennt nicht jede Kennung **Nur mit ausdrücklicher Erlaubnis.** Das Nachladen gehört an dasselbe Häkchen wie das Aufnehmen (oder an ein eigenes daneben), und im **täglichen Lauf bleibt es aus**. Eine Mediathek soll nicht nachts ungefragt zur Bibliothek werden — dieser Grundsatz aus #1 gilt weiter. **Ohne TMDB-Schlüssel geht es nicht.** Fehlt er, muss die Oberfläche das sagen, statt still nichts zu tun. ## Umzusetzen - In `syncConnection()` beim Fehlschlag der Katalogsuche `ensureTitle()` aufrufen, wenn erlaubt - Zähler im Bericht: „aus TMDB nachgeladen" - Obergrenze je Lauf, Fehler je Titel sammeln statt abbrechen - Häkchen und Beschriftung in den Einstellungen schärfen — der Unterschied zwischen *Katalog* und *Bibliothek* ist heute nicht sichtbar - Anleitung: was beim ersten Abgleich einer großen Mediathek passiert ## Abnahme - [ ] Ein Jellyfin-Titel, den Flimmer nicht kennt, wird bei gesetzter Erlaubnis aus TMDB nachgeladen und aufgenommen - [ ] Bei Serien kommen Staffeln und Episoden mit, damit der Fortschritt stimmt - [ ] Ohne Erlaubnis bleibt es wie bisher: Bericht statt Import - [ ] Der tägliche Lauf lädt nie nach - [ ] Die Obergrenze je Lauf greift; der Rest kommt beim nächsten Durchgang - [ ] Ein einzelner Fehlschlag bei TMDB bricht den Lauf nicht ab - [ ] Ohne TMDB-Schlüssel erscheint ein verständlicher Hinweis - [ ] Tests gegen nachgebildete Antworten, ohne echten Jellyfin und ohne echtes TMDB ## Abgrenzung Das ist die Fortsetzung von #1, nicht dessen Wiederholung. Bereits umgesetzt und ausgeliefert (v0.8.0): - Verbindung einrichten und prüfen, Warnung bei fehlendem Gesehen-Status - Zuordnung über die TMDB-Kennung, „hab ich" setzen - Sichtungen mit dem Termin aus Jellyfin übernehmen, entdoppelt - Aufnehmen von Titeln, die im Katalog stehen - Täglicher Abgleich, Einbahnstraße Offen bleibt daneben weiterhin **Stufe 3** aus #1: das Zurückschreiben von Flimmer nach Jellyfin. --- *Angelegt auf ausdrücklichen Wunsch direkt in Gitea, ohne Verknüpfung zu einem Nebula-Task.*
Author
Owner

Ergänzung: auswählen statt alles oder nichts

Florian hat den ersten Lauf gegen seine echte Mediathek gemacht. Das Ergebnis zeigt das Problem in voller Größe:

1322 Einträge gelesen
0× „hab ich" gesetzt
0 Sichtungen übernommen
▾ 50 nicht zuzuordnen

Keine einzige Zuordnung. Der Katalog kennt schlicht nichts davon, und der Bericht kann nur aufzählen, was er nicht einsortieren konnte.

Gewünscht ist deshalb kein pauschaler Import, sondern eine Auswahl: die nicht zuzuordnenden Einträge als Liste mit Häkchen, daraus aussuchen, was nach Flimmer soll, und nur das nachladen.

Das ist die bessere Lösung als das Häkchen aus der ursprünglichen Beschreibung. Bei 1322 Einträgen will niemand „alles oder nichts" — in einer Mediathek liegen Konzertmitschnitte, Kinderfilme und Testaufnahmen neben dem, was man wirklich verfolgen möchte.

Was der Screenshot zusätzlich zeigt

Die Berichtsgrenze von 50 ist viel zu klein. BERICHT_GRENZE in src/lib/mediaserver.ts:55 schneidet nach 50 Einträgen ab — bei über tausend gelesenen Items ist das ein Blick durchs Schlüsselloch. Wenn die Liste zur Auswahlliste wird, muss sie vollständig sein: blätterbar, durchsuchbar, sortierbar.

Dubletten stehen doppelt drin. „College Animals 2 — TMDB 10104" erscheint zweimal, ebenso mehrere Bourne-Filme. Jellyfin führt offenbar mehrere Dateien zum selben Titel (verschiedene Fassungen, Extended Editions). Die Auswahlliste muss nach TMDB-Kennung zusammenfassen, sonst wählt man denselben Film dreimal aus.

Zwei verschiedene Gründe brauchen zwei verschiedene Behandlungen:

Grund Beispiele aus dem Screenshot Was möglich ist
TMDB 584 nicht im Katalog „2 Fast 2 Furious", „Das fünfte Element", die Bourne-Reihe Direkt importierbar — die Kennung ist da, TMDB liefert den Rest
keine TMDB-Kennung am Item „Der Herr der Ringe 1 Die Gefaehrten Extended Edition", „Boehse Onkelz … Hockenheimring 2016", „Fack ju Goehte 2" Nicht automatisch — hier fehlt die Kennung in Jellyfin selbst

Für die zweite Gruppe wäre eine Suche daneben richtig: Titel anklicken, Flimmer sucht bei TMDB, man wählt den passenden Treffer. Das ist mehr Arbeit und sollte einen eigenen Schritt bekommen — vielleicht sogar ein eigenes Issue, wenn die erste Gruppe erst einmal läuft.

Ein Hinweis nebenbei: Bei den Extended Editions liegt es an der Benennung in Jellyfin. Wer dort die Erkennung nachzieht, bekommt die Kennung ohne Zutun von Flimmer.

Ergänzung zur Abnahme

  • Die nicht zuzuordnenden Einträge stehen vollständig zur Verfügung, nicht auf 50 gekürzt
  • Nach TMDB-Kennung zusammengefasst — derselbe Film erscheint einmal, auch wenn Jellyfin drei Dateien dazu führt
  • Auswahl über Häkchen, dazu „alle auswählen" und eine Suche in der Liste
  • Einträge ohne TMDB-Kennung sind als solche erkennbar und nicht auswählbar (sie lassen sich nicht automatisch importieren)
  • Nur Ausgewähltes wird geholt; der Fortschritt ist sichtbar, ein einzelner Fehlschlag bricht nicht ab
  • Nach dem Import verschwinden die übernommenen Einträge aus der Liste

Nachgetragen auf Zuruf; die ursprüngliche Beschreibung bleibt unverändert.

## Ergänzung: auswählen statt alles oder nichts Florian hat den ersten Lauf gegen seine echte Mediathek gemacht. Das Ergebnis zeigt das Problem in voller Größe: ``` 1322 Einträge gelesen 0× „hab ich" gesetzt 0 Sichtungen übernommen ▾ 50 nicht zuzuordnen ``` **Keine einzige Zuordnung.** Der Katalog kennt schlicht nichts davon, und der Bericht kann nur aufzählen, was er nicht einsortieren konnte. Gewünscht ist deshalb **kein pauschaler Import**, sondern eine **Auswahl**: die nicht zuzuordnenden Einträge als Liste mit Häkchen, daraus aussuchen, was nach Flimmer soll, und nur das nachladen. Das ist die bessere Lösung als das Häkchen aus der ursprünglichen Beschreibung. Bei 1322 Einträgen will niemand „alles oder nichts" — in einer Mediathek liegen Konzertmitschnitte, Kinderfilme und Testaufnahmen neben dem, was man wirklich verfolgen möchte. ### Was der Screenshot zusätzlich zeigt **Die Berichtsgrenze von 50 ist viel zu klein.** `BERICHT_GRENZE` in `src/lib/mediaserver.ts:55` schneidet nach 50 Einträgen ab — bei über tausend gelesenen Items ist das ein Blick durchs Schlüsselloch. Wenn die Liste zur Auswahlliste wird, muss sie vollständig sein: blätterbar, durchsuchbar, sortierbar. **Dubletten stehen doppelt drin.** „College Animals 2 — TMDB 10104" erscheint zweimal, ebenso mehrere Bourne-Filme. Jellyfin führt offenbar mehrere Dateien zum selben Titel (verschiedene Fassungen, Extended Editions). Die Auswahlliste muss **nach TMDB-Kennung zusammenfassen**, sonst wählt man denselben Film dreimal aus. **Zwei verschiedene Gründe brauchen zwei verschiedene Behandlungen:** | Grund | Beispiele aus dem Screenshot | Was möglich ist | |---|---|---| | `TMDB 584 nicht im Katalog` | „2 Fast 2 Furious", „Das fünfte Element", die Bourne-Reihe | **Direkt importierbar** — die Kennung ist da, TMDB liefert den Rest | | `keine TMDB-Kennung am Item` | „Der Herr der Ringe 1 Die Gefaehrten Extended Edition", „Boehse Onkelz … Hockenheimring 2016", „Fack ju Goehte 2" | **Nicht automatisch** — hier fehlt die Kennung in Jellyfin selbst | Für die zweite Gruppe wäre eine Suche daneben richtig: Titel anklicken, Flimmer sucht bei TMDB, man wählt den passenden Treffer. Das ist mehr Arbeit und sollte einen eigenen Schritt bekommen — vielleicht sogar ein eigenes Issue, wenn die erste Gruppe erst einmal läuft. Ein Hinweis nebenbei: Bei den Extended Editions liegt es an der Benennung in Jellyfin. Wer dort die Erkennung nachzieht, bekommt die Kennung ohne Zutun von Flimmer. ### Ergänzung zur Abnahme - [ ] Die nicht zuzuordnenden Einträge stehen **vollständig** zur Verfügung, nicht auf 50 gekürzt - [ ] Nach TMDB-Kennung zusammengefasst — derselbe Film erscheint einmal, auch wenn Jellyfin drei Dateien dazu führt - [ ] Auswahl über Häkchen, dazu „alle auswählen" und eine Suche in der Liste - [ ] Einträge **ohne** TMDB-Kennung sind als solche erkennbar und nicht auswählbar (sie lassen sich nicht automatisch importieren) - [ ] Nur Ausgewähltes wird geholt; der Fortschritt ist sichtbar, ein einzelner Fehlschlag bricht nicht ab - [ ] Nach dem Import verschwinden die übernommenen Einträge aus der Liste *Nachgetragen auf Zuruf; die ursprüngliche Beschreibung bleibt unverändert.*
florian.wilde added the in-arbeit label 2026-09-02 10:57:48 +00:00
florian.wilde started working 2026-09-02 10:57:53 +00:00
Author
Owner

🤖 Claude Code hat mit der Umsetzung begonnen.

  • Branch: feat/16-titel-nachladen
  • Verstanden als: Was der Abgleich nicht zuordnen konnte, wird zur Auswahlliste — anhaken, was nach Flimmer soll, und nur das aus TMDB nachladen.
  • Geplantes Vorgehen:
    • Bericht umbauen: vollständig statt auf 50 gekürzt, nach TMDB-Kennung zusammengefasst, mit Typ und Anzahl der Dateien je Titel
    • Eigene Aktion zum Nachladen einer Auswahl über ensureTitle(), mit Obergrenze je Lauf; Fehler je Titel gesammelt statt Abbruch
    • Auswahlliste in den Einstellungen: Häkchen, „alle auswählen", Suche; Einträge ohne TMDB-Kennung sichtbar, aber nicht auswählbar
    • Ohne TMDB-Schlüssel ein klarer Hinweis; Tests gegen nachgebildete Antworten

Zur Abweichung: Die ursprüngliche Beschreibung sah ein Häkchen „alles nachladen" vor, der spätere Kommentar eine Auswahl. Ich richte mich nach dem Kommentar — bei 1322 Einträgen ist „alles oder nichts" keine Wahl.

Das alte Häkchen „Fehlende Titel dabei aufnehmen" bleibt bestehen, bekommt aber eine klarere Beschriftung: es nimmt auf, was Flimmer kennt; die neue Liste holt, was es nicht kennt.

Zeiterfassung läuft.

🤖 **Claude Code hat mit der Umsetzung begonnen.** - Branch: `feat/16-titel-nachladen` - Verstanden als: Was der Abgleich nicht zuordnen konnte, wird zur **Auswahlliste** — anhaken, was nach Flimmer soll, und nur das aus TMDB nachladen. - Geplantes Vorgehen: - Bericht umbauen: vollständig statt auf 50 gekürzt, nach TMDB-Kennung zusammengefasst, mit Typ und Anzahl der Dateien je Titel - Eigene Aktion zum Nachladen einer Auswahl über `ensureTitle()`, mit Obergrenze je Lauf; Fehler je Titel gesammelt statt Abbruch - Auswahlliste in den Einstellungen: Häkchen, „alle auswählen", Suche; Einträge ohne TMDB-Kennung sichtbar, aber nicht auswählbar - Ohne TMDB-Schlüssel ein klarer Hinweis; Tests gegen nachgebildete Antworten **Zur Abweichung:** Die ursprüngliche Beschreibung sah ein Häkchen „alles nachladen" vor, der spätere Kommentar eine Auswahl. Ich richte mich nach dem **Kommentar** — bei 1322 Einträgen ist „alles oder nichts" keine Wahl. Das alte Häkchen „Fehlende Titel dabei aufnehmen" bleibt bestehen, bekommt aber eine klarere Beschriftung: es nimmt auf, was Flimmer **kennt**; die neue Liste holt, was es **nicht kennt**. Zeiterfassung läuft.
florian.wilde worked for 14 minutes 2026-09-02 11:12:26 +00:00
florian.wilde added zu-testen and removed in-arbeit labels 2026-09-02 11:13:06 +00:00
Author
Owner

✅ Umsetzung abgeschlossen — bereit zum Testen.

Was geändert wurde

  • Bericht umgebaut: zusammengefasst je TMDB-Kennung mit Zahl der Dateien, Typ (Serie/Film), Grenze von 50 auf 1000 und Rest wird gezählt statt abgeschnitten
  • importUnassigned(): holt eine Auswahl über ensureTitle(), höchstens 100 je Lauf, Fehler je Titel gesammelt statt Abbruch; nimmt auf mit owned und Quelle Jellyfin
  • Auswahlliste in den Einstellungen: Häkchen, „alle auswählen", Suche; Einträge ohne TMDB-Kennung sichtbar, aber gesperrt
  • Das bestehende Häkchen heißt jetzt „Bekannte Titel dabei in die Bibliothek aufnehmen" — der Unterschied zur neuen Liste war vorher nicht sichtbar
  • Ohne TMDB-Schlüssel ein klarer Hinweis
  • docs/ANLEITUNG.md mit eigenem Unterabschnitt

Geänderte Dateien

  • src/lib/mediaserver.ts, src/app/actions/settings.ts
  • src/components/settings/MediaServer.tsx, src/app/einstellungen/page.tsx
  • tests/mediaserver.test.ts, tests/fixtures/jellyfin.ts, docs/ANLEITUNG.md

Eine Selbstkorrektur: Mein erster Entwurf strich auch gescheiterte Titel aus der Auswahlliste — und ich hatte das sogar in einem Test festgeschrieben. Beim Durchklicken fiel auf, wie ärgerlich das wäre: TMDB kurz nicht erreichbar, und die Titel sind aus der Liste, ohne importiert zu sein. Jetzt verschwindet nur, was tatsächlich ankam; Code und Test sind korrigiert.

Ein Fehler, den der Klickweg gefunden hat: Der Typ wurde aus dem Umkehrschluss „keine Episode, also Film" abgeleitet — eine Serie stand damit als „Film" in der Liste. Jetzt kommt er aus dem Item.

Geprüft

83 Tests grün (fünf neue), Typecheck sauber. Klickweg gegen einen nachgebildeten Jellyfin im Produktionsbau: Liste sichtbar, Entdopplung („2 Dateien"), Typ korrekt, Zeile ohne Kennung gesperrt, Suche filtert, Fehlschlag wird ehrlich gemeldet.

Was lokal nicht belegbar war: der Importschritt über die Oberfläche. Der Entwicklungs-Stub beantwortet nur Suchanfragen und speist sich aus dem Katalog — er kann nichts liefern, was dort fehlt. Der Erfolgsfall ist über die Domänenschicht getestet (Katalogeintrag, Bibliothekseintrag mit owned, bei Serien mit Episoden). An deiner Instanz mit echtem TMDB-Schlüssel ist das der eigentliche Test.

So testest du es

  1. git switch feat/16-titel-nachladen
  2. npm run dev (Migration braucht es nicht), Einstellungen → Medienserver
  3. „Jetzt abgleichen" — danach steht unter dem Bericht „Noch nicht in Flimmer"
  4. Erwartet: deine gut tausend Einträge, zusammengefasst, durchsuchbar; die ohne TMDB-Kennung grau und nicht anklickbar
  5. Ein paar anhaken → „N Titel übernehmen"
  6. Erwartet: die Titel landen im Katalog und in der Bibliothek (Watchlist, „hab ich · Jellyfin"), und verschwinden aus der Liste
  7. Gegenprobe mit mehr als hundert: es werden hundert geholt, der Rest bleibt für den nächsten Klick

Aufgewendete Zeit: 00:15
Pull Request: #18

Nach Freigabe: /issue-freigabe 16

✅ **Umsetzung abgeschlossen — bereit zum Testen.** <!-- claude-status branch: feat/16-titel-nachladen pr: 18 zeit_sekunden: 873 --> **Was geändert wurde** - Bericht umgebaut: zusammengefasst je TMDB-Kennung mit Zahl der Dateien, Typ (Serie/Film), Grenze von 50 auf 1000 und Rest wird gezählt statt abgeschnitten - `importUnassigned()`: holt eine Auswahl über `ensureTitle()`, höchstens 100 je Lauf, Fehler je Titel gesammelt statt Abbruch; nimmt auf mit `owned` und Quelle Jellyfin - Auswahlliste in den Einstellungen: Häkchen, „alle auswählen", Suche; Einträge ohne TMDB-Kennung sichtbar, aber gesperrt - Das bestehende Häkchen heißt jetzt „**Bekannte** Titel dabei in die Bibliothek aufnehmen" — der Unterschied zur neuen Liste war vorher nicht sichtbar - Ohne TMDB-Schlüssel ein klarer Hinweis - `docs/ANLEITUNG.md` mit eigenem Unterabschnitt **Geänderte Dateien** - `src/lib/mediaserver.ts`, `src/app/actions/settings.ts` - `src/components/settings/MediaServer.tsx`, `src/app/einstellungen/page.tsx` - `tests/mediaserver.test.ts`, `tests/fixtures/jellyfin.ts`, `docs/ANLEITUNG.md` **Eine Selbstkorrektur:** Mein erster Entwurf strich auch **gescheiterte** Titel aus der Auswahlliste — und ich hatte das sogar in einem Test festgeschrieben. Beim Durchklicken fiel auf, wie ärgerlich das wäre: TMDB kurz nicht erreichbar, und die Titel sind aus der Liste, ohne importiert zu sein. Jetzt verschwindet nur, was tatsächlich ankam; Code und Test sind korrigiert. **Ein Fehler, den der Klickweg gefunden hat:** Der Typ wurde aus dem Umkehrschluss „keine Episode, also Film" abgeleitet — eine Serie stand damit als „Film" in der Liste. Jetzt kommt er aus dem Item. **Geprüft** 83 Tests grün (fünf neue), Typecheck sauber. Klickweg gegen einen nachgebildeten Jellyfin im Produktionsbau: Liste sichtbar, Entdopplung („2 Dateien"), Typ korrekt, Zeile ohne Kennung gesperrt, Suche filtert, Fehlschlag wird ehrlich gemeldet. **Was lokal nicht belegbar war:** der Importschritt über die Oberfläche. Der Entwicklungs-Stub beantwortet nur Suchanfragen und speist sich aus dem Katalog — er kann nichts liefern, was dort fehlt. Der Erfolgsfall ist über die Domänenschicht getestet (Katalogeintrag, Bibliothekseintrag mit `owned`, bei Serien mit Episoden). **An deiner Instanz mit echtem TMDB-Schlüssel ist das der eigentliche Test.** **So testest du es** 1. `git switch feat/16-titel-nachladen` 2. `npm run dev` (Migration braucht es nicht), Einstellungen → Medienserver 3. „Jetzt abgleichen" — danach steht unter dem Bericht „Noch nicht in Flimmer" 4. Erwartet: deine gut tausend Einträge, zusammengefasst, durchsuchbar; die ohne TMDB-Kennung grau und nicht anklickbar 5. Ein paar anhaken → „N Titel übernehmen" 6. Erwartet: die Titel landen im Katalog **und** in der Bibliothek (Watchlist, „hab ich · Jellyfin"), und verschwinden aus der Liste 7. Gegenprobe mit mehr als hundert: es werden hundert geholt, der Rest bleibt für den nächsten Klick **Aufgewendete Zeit:** 00:15 **Pull Request:** #18 Nach Freigabe: `/issue-freigabe 16`
florian.wilde removed the zu-testen label 2026-09-02 11:29:48 +00:00
Author
Owner

🚀 Freigegeben und nach main übernommen.

  • Merge-Commit: f8d5566
  • Pull Request: #18 (gemergt)
  • Gesamtaufwand: 00:15

Nach dem Merge auf main geprüft — zusammen mit #15: 93 Tests grün, Typecheck sauber, Bau erfolgreich.

Der eigentliche Test steht noch aus: Der Importschritt ließ sich lokal nur über die Domänenschicht belegen, weil der Entwicklungs-Stub keine Detailabrufe kennt. An deiner Instanz mit echtem TMDB-Schlüssel und den gut tausend Jellyfin-Einträgen zeigt sich, ob es trägt.

Das Issue wurde durch das Closes #16 im Merge automatisch geschlossen; die Statuslabels sind geräumt.

🚀 **Freigegeben und nach `main` übernommen.** <!-- claude-status merge: f8d5566 pr: 18 zeit_sekunden: 873 --> - Merge-Commit: `f8d5566` - Pull Request: #18 (gemergt) - Gesamtaufwand: 00:15 Nach dem Merge auf `main` geprüft — zusammen mit #15: **93 Tests grün**, Typecheck sauber, Bau erfolgreich. **Der eigentliche Test steht noch aus:** Der Importschritt ließ sich lokal nur über die Domänenschicht belegen, weil der Entwicklungs-Stub keine Detailabrufe kennt. An deiner Instanz mit echtem TMDB-Schlüssel und den gut tausend Jellyfin-Einträgen zeigt sich, ob es trägt. Das Issue wurde durch das `Closes #16` im Merge automatisch geschlossen; die Statuslabels sind geräumt.
Sign in to join this conversation.
1 Participants
Notifications
Total Time Spent: 14 minutes
florian.wilde
14 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/flimmer#16