Jellyfin anbinden: Bestand und Sichtungen uebernehmen
CI / pruefen (pull_request) Canceled after 0s

Zugeordnet wird ueber die TMDB-Kennung, die Jellyfin zu jedem Item
mitliefert — dieselbe Kennung, auf der Flimmers Katalog ohnehin aufbaut. Eine
unscharfe Suche ueber Titel und Jahr ist damit nicht noetig: die Zuordnung ist
eindeutig oder sie findet nicht statt. Was Jellyfin ohne Kennung fuehrt,
landet im Bericht statt falsch zugeordnet zu werden.

Angemeldet wird mit Benutzername und Passwort, nicht mit einem API-Schluessel.
Mit einem Schluessel liefert Jellyfin den Bestand ohne UserData, also ohne
Gesehen-Status — und zwar ohne Fehlermeldung. Der Verbindungstest prueft
deshalb ausdruecklich nach und sagt es, statt den Abgleich stumm ins Leere
laufen zu lassen. Das Zugangstoken liegt mit AES-256-GCM verschluesselt in der
Datenbank; abgeleitet aus AUTH_SECRET.

Der Abgleich ist eine Einbahnstrasse: er ergaenzt, was auf dem Server liegt
oder dort gelaufen ist, und loescht nie etwas, das in Flimmer steht. Fehlende
Titel werden nur aufgenommen, wenn das Haekchen gesetzt ist — im taeglichen
Lauf also nie.

Entdoppelt wird zweifach: Episoden ueber (userId, episodeId, run), Filme
ausdruecklich per Nachschlagen. Bei Filmen ist episodeId null, und Postgres
behandelt NULL im eindeutigen Index als jeweils verschieden — der Index greift
dort nicht.

Watch.source haelt fest, was von wo kam. Ohne diese Angabe liesse sich spaeter
nicht mehr sagen, welche Sichtung aus Jellyfin stammt.

Umgesetzt sind Stufe 1 und 2. Stufe 3 (Zurueckschreiben) kommt in der
Abnahmeliste nicht vor und braeuchte eine Versionsweiche, die sich ohne echten
Server nicht verlaesslich pruefen laesst; das Feld writeBack ist angelegt, die
Logik dahinter bleibt leer.

Elf Tests gegen nachgebildete Antworten. Zusaetzlich der ganze Klickweg gegen
einen echten HTTP-Server im Produktionsbau: verbinden, pruefen, abgleichen,
zweiter Lauf ohne Dubletten, und der Warnfall ohne UserData.

Refs #1
This commit is contained in:
Florian Wilde
2026-09-02 09:24:38 +02:00
parent 824cc7764c
commit dd2b7dd48b
12 changed files with 1917 additions and 1 deletions
+49
View File
@@ -299,6 +299,55 @@ Tabellenkalkulationen.
---
## Jellyfin anbinden
Wer seine Mediathek selbst hostet, pflegt Bestand und Gesehen-Status meist
schon in Jellyfin. Flimmer kann beides übernehmen, damit du es nicht doppelt
führst.
Unter **Einstellungen → Medienserver** trägst du die Adresse deines Servers
ein, dazu Benutzername und Passwort. Nach dem Verbinden sagt Flimmer, wie
viele Einträge es gefunden hat — und ob der **Gesehen-Status mitkommt**.
> **Warum Benutzername und Passwort, nicht ein API-Schlüssel?**
> Mit einem API-Schlüssel liefert Jellyfin zwar den Bestand, aber keinen
> Gesehen-Status — und zwar ohne Fehlermeldung. Der Abgleich liefe dann stumm
> ins Leere. Flimmer meldet sich deshalb wie ein normaler Nutzer an und prüft
> beim Verbinden ausdrücklich nach. Das Zugangstoken wird verschlüsselt
> abgelegt, dein Passwort gar nicht gespeichert.
Zugeordnet wird über die **TMDB-Kennung**, die Jellyfin zu jedem Film und jeder
Serie mitliefert. Das ist dieselbe Kennung, auf der Flimmers Katalog aufbaut —
es gibt also kein Raten über Titel und Jahreszahlen. Was Jellyfin ohne Kennung
führt (eigene Aufnahmen etwa), landet im Bericht statt falsch zugeordnet zu
werden.
Beim Abgleich passiert dreierlei:
- Titel, die auf dem Server liegen, bekommen **„hab ich"** mit der Quelle
Jellyfin.
- Was du dort gesehen hast, wird zur **Sichtung** mit dem Termin aus Jellyfin.
- Fehlende Titel werden **nur aufgenommen, wenn du das Häkchen setzt**. Eine
Mediathek mit achthundert Filmen soll nicht ungefragt deine Bibliothek
werden.
Danach läuft der Abgleich im täglichen Hintergrundlauf mit — dort allerdings
ohne automatisches Aufnehmen.
**Der Abgleich ist eine Einbahnstraße.** Er ergänzt, was auf dem Server steht,
und löscht nie etwas, das in Flimmer steht. Markierst du einen Film in Flimmer
als gesehen und löschst ihn in Jellyfin, bleibt deine Sichtung erhalten.
> **Eine Grenze, die von Jellyfin kommt**
> Jellyfin merkt sich, *wie oft* du etwas gesehen hast und *wann zuletzt* —
> aber keine Liste der einzelnen Male. Ein Film, den du dreimal gesehen hast,
> kommt deshalb mit **einem** Termin in Flimmers Statistik an, nicht mit drei.
> Rewatch-Durchläufe, die du in Flimmer selbst anlegst, sind davon nicht
> betroffen. Das lässt sich nicht beheben — die Information gibt es an der
> Quelle nicht.
---
## API-Schlüssel
![API-Schlüssel](screenshots/13-api.webp)