Jellyfin hat keinen Bericht für die Probleme, die sich in einer Mediathek ansammeln: derselbe Film doppelt als zwei separate Titel, Filme, die nie zugeordnet wurden, Dateien, die verschwunden, beschädigt oder nur zur Hälfte kopiert wurden. Library Doctor findet sie, zeigt, was jede einzelne an Speicherplatz kostet, und hilft dir, sie zu beheben — ohne je eine Datei zu löschen.
Was es macht
- Duplikate: derselbe Film oder dieselbe Episode (dieselbe Serie, Staffel und Episodennummer) als separate Einträge. Filme werden über ihre TMDb- oder IMDb-ID abgeglichen; Filme ohne eine dieser IDs werden über Titel (ohne Beachtung von Groß-/Kleinschreibung, Akzenten und Satzzeichen) und Jahr abgeglichen, und diese Gruppen werden als nach Titel und Jahr — prüfen markiert, denn zwei verschiedene Filme können Titel und Jahr teilen. Jede Gruppe zeigt die Versionen nebeneinander — Auflösung, HDR, Codec, Bitrate und Größe —, die beste zuerst, dazu den Speicherplatz, den du freigibst, wenn du nur diese eine behältst. Zwei Aktionen: Group as versions behält jede Datei und zeigt sie als Versionen eines Titels (Jellyfins eigene Versionsgruppierung), und Quarantine räumt eine schwächere Version beiseite.
- Nicht zugeordnete Filme: Filme ganz ohne Metadaten-ID, was meist einen falschen Titel, ein falsches Jahr oder ein falsches Poster bedeutet — und einen Film, der in Sammlungen und Empfehlungen fehlt. Jeder verlinkt auf den Film, wo Jellyfins Identify ihn korrigiert.
- Fehlende, defekte oder abgeschnittene Dateien: eine Hintergrundprüfung jeder Film- und Episodendatei mit ffprobe und ffmpeg von jellyfin-ffmpeg. Sie meldet Dateien, die von der Festplatte fehlen, nicht gelesen werden können (mit der Fehlermeldung), keine echte Videospur haben (nur ein Bild, zum Beispiel eine Datei aus Zufallsbytes, in der ffprobe ein Bild vermutet), keine Dauer haben (ein defekter Header), Dauer null haben oder abgeschnitten sind: die letzten 3 Sekunden des Videos werden decodiert, und eine Datei, deren Ende sich nicht decodieren lässt, wird als unvollständiger Download oder Kopiervorgang gemeldet.
- Speicherplatzbericht: die Gesamtsumme, dann der Platz nach Mediathek, nach Auflösung (4K, 1080p, 720p, SD) und nach Video-Codec, und die 20 größten Dateien, die kein Benutzer gesehen hat.
- Quarantäne statt Löschen: siehe unten. Das Plugin löscht nie etwas.
- Auf Englisch und Rumänisch.
Die Quarantäne: nichts wird gelöscht
Wenn du bei einer Version auf Quarantine klickst (und bestätigst), verschiebt das Plugin die Videodatei und die Dateien neben ihr, die ihren Namen teilen — Untertitel, .nfo, Bilder wie Movie.srt, Movie.en.srt, Movie.nfo, Movie-poster.jpg — in einen Ordner namens .medialab-de-sters (rumänisch für „zu löschen") im Stamm der Mediathek, in der sie liegen, wobei ihre Unterordner erhalten bleiben. Weil der Ordner innerhalb desselben Mediathek-Ordners liegt, ist er normalerweise auf derselben Festplatte, und die Verschiebung ist augenblicklich. Jellyfin scannt die Mediathek danach neu.
Die Verschiebung wird aufgezeichnet, bevor eine Datei angefasst wird. Wenn sich eine Datei nicht verschieben lässt (zum Beispiel wegen Berechtigungen), werden die bereits verschobenen Dateien zurückgelegt, und es bleibt keine Kopie in .medialab-de-sters zurück; wenn sich auch das Zurücklegen nicht machen lässt, bleibt der Eintrag in der Quarantäneliste, damit du ihn wiederherstellen kannst.
Die Quarantine-Liste zeigt jeden verschobenen Titel mit seinem ursprünglichen Ort und seiner Größe. Restore verschiebt die Dateien genau dorthin zurück, wo sie waren, und scannt neu; sie verweigert, ohne etwas anzufassen, wenn eine Datei sowohl in Quarantäne als auch wieder an ihrem ursprünglichen Pfad liegt. Das Plugin überschreibt oder löscht nie eine Datei: Wenn du sicher bist, löschst du den Ordner .medialab-de-sters selbst von der Festplatte.
Dateien außerhalb der Mediathek-Ordner und Dateien, die bereits in einem .medialab-de-sters-Ordner liegen, werden abgelehnt. Group as versions verschiebt keine Datei.
Voraussetzungen
- Jellyfin Server 12.2 oder neuer.
- Für die Dateiprüfung: ffprobe und ffmpeg, die mit jellyfin-ffmpeg kommen (das Plugin nutzt dieselben Pfade, die Jellyfin für das Transcoding nutzt).
- Für die Quarantäne: Der Jellyfin-Benutzer braucht Schreibzugriff auf die Mediathek-Ordner (um
.medialab-de-stersim Stamm des Mediathek-Ordners anzulegen und Dateien aus ihren Ordnern zu verschieben). Unter Docker dürfen die Media-Volumes nicht schreibgeschützt eingebunden sein. Ohne Schreibzugriff funktionieren alle Berichte; nur die Quarantäne kann keine Dateien verschieben.
Häufige Fragen
Kann er meine Filme löschen? Nein. Es gibt keine Löschfunktion im Plugin. Die Quarantäne verschiebt Dateien nur innerhalb desselben Mediathek-Ordners, und mit Restore kommen sie zurück.
Warum ist derselbe Film in Jellyfin zweimal gelistet? Meist liegen zwei Dateien desselben Films in verschiedenen Ordnern, also macht Jellyfin zwei Einträge daraus. Library Doctor findet sie über ihre TMDb- oder IMDb-ID (oder über Titel und Jahr, wenn sie keine ID haben) und lässt dich sie als Versionen gruppieren oder die schwächere in Quarantäne schieben. Siehe die Anleitung.
Kann er jede beschädigte Datei finden? Er findet Dateien, die fehlen, unlesbar sind, ohne echte Videospur oder ohne Dauer, und Dateien, deren Ende sich nicht decodieren lässt. Eine Datei, die sehr nah am Ende abgeschnitten ist (zum Beispiel bei etwa 98 %), kann in ihren letzten Sekunden noch decodierbare Bilder enthalten und die Prüfung bestehen; Schäden in der Mitte einer Datei werden nicht gesucht.
Was es wohin sendet
- Kein externer Kontakt außer dem Lizenz-Client. Keine Online-Metadaten-Abfragen: Duplikate und nicht zugeordnete Titel werden aus den IDs (TMDb/IMDb …) berechnet, die der Server bereits speichert.
- Indirekt: Nach einer Quarantäne-Verschiebung oder -Wiederherstellung startet das Plugin den regulären Mediathek-Scan, der die auf dem Server konfigurierten Metadaten-Anbieter kontaktieren kann (Serververhalten, nicht das des Plugins). „Group as versions" nutzt die native Funktion des Servers.
- Die Dateiprüfung (nur auf Anforderung) führt die ffprobe des Servers für jeden Film/jede Episode lokal aus. Keine geplanten Scans.
- Dazu der Lizenz-Client, in jedem Plugin derselbe: siehe Lizenzierung und Datenschutz in unseren Plugins.
Lokal gespeichert:
- Die Quarantäne löscht nichts: Die Datei und ihre Begleiter (Untertitel, nfo, Bilder) werden nach
<library root>/.medialab-de-sters/verschoben; das endgültige Löschen überlässt es dir. state/quarantine.json: Titel, Datum, ursprüngliche Pfade und Quarantäne-Pfade, Größe.- Die Ergebnisse der Dateiprüfung bleiben nur im Speicher. Das Plugin liest der Mediathek ab, ob ein Benutzer einen Titel gesehen hat (für „größte ungesehene"), ohne es zu speichern.
Kompatibilität mit Clients
- Nur Admin-Seite: Jellyfin Web / medialab Server ✅. Die Funktionen laufen auf dem Server, Clients (Apps, Fernseher) sehen nur die Wirkung (verschobene/gruppierte Titel).
- Tests: End-to-End auf API-Ebene (16/16), Prüfung des Dateiendes an 400/400 echten Dateien, ohne Fehlalarm.
- Grenzen: Der Server braucht Schreibzugriff auf die Mediathek-Ordner für die Quarantäne; eine abgeschnittene
.ts-Datei kann nicht erkannt werden (keine gespeicherte Dauer).
Legende: ✅ verifiziert (End-to-End- oder Test auf dem Gerät) · 🟢 serverseitig, funktioniert mit jedem Client (konstruktionsbedingt, kein clientspezifischer Test) · ➖ nicht zutreffend · ❔ nicht getestet.
Lizenzierung
Das Plugin ist Open Source (GPL-3.0). Die installationsfertigen Builds sind öffentlich, genau wie der Quellcode. Was du kaufst, ist das Abonnement: die Lizenz, das Plugin auf einem Jellyfin-Server zu nutzen, die Updates, die dein Tarif enthält, und Support: jedes Update, solange das Abonnement aktiv ist, über dein privates Plugin-Repository, und Hilfe, wenn etwas nicht funktioniert. Das Plugin prüft den Abonnementschlüssel einmal am Tag; ohne gültiges Abonnement stoppt es, bis du verlängerst (es wird nichts gelöscht). Monatlich, jährlich oder als Lifetime-Lizenz (die Lifetime-Lizenz enthält ein Jahr Updates) oder im Jellyfin-Paket enthalten. 30 Tage kostenloser Test.
Quellcode. Zu jeder Version ist der vollständige zugehörige Quellcode öffentlich, neben dem Build, im Changelog und auch in deinem Konto (Konto → Lizenzen, Quellcode); jedes Archiv enthält den vollständigen GPL-3.0-Text (LICENSE). Wenn du den Quellcode einer Version brauchst, die du nicht mehr herunterladen kannst, frag uns, und wir schicken ihn dir. Siehe Abschnitt 10 der EULA.
