Displays Release Dates in Jellyfin

Ahoi - Don't fork
This is my personal server. I try to maintain it and keep it running, but I cannot guarantee it.
So if you want to fork - especially if the idea is to have a backup - do not use the "Fork" button here.
Instead use

git clone --mirror
and push it to your preferred service like Codeberg

  • C# 87%
  • HTML 13%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-11 19:04:36 +00:00
.forgejo/workflows ci: keep publish dir out of release assets, use tag message as changelog 2026-09-11 20:12:43 +02:00
Jellyfin.Plugin.ReleaseWindows cleanup: strip legacy overview markers, remove configurable legacy tag prefixes 2026-09-11 20:59:08 +02:00
Jellyfin.Plugin.ReleaseWindows.Tests cleanup: strip legacy overview markers, remove configurable legacy tag prefixes 2026-09-11 20:59:08 +02:00
.editorconfig Initial ReleaseWindows plugin for Jellyfin 10.11 2026-09-11 19:55:02 +02:00
.gitignore Initial ReleaseWindows plugin for Jellyfin 10.11 2026-09-11 19:55:02 +02:00
build.yaml Initial ReleaseWindows plugin for Jellyfin 10.11 2026-09-11 19:55:02 +02:00
Directory.Build.props build: derive AssemblyVersion/FileVersion from Version so releases carry the tag version 2026-09-11 21:03:33 +02:00
Jellyfin.Plugin.ReleaseWindows.sln Initial ReleaseWindows plugin for Jellyfin 10.11 2026-09-11 19:55:02 +02:00
manifest.json manifest: add version 1.0.0.6 [skip ci] 2026-09-11 19:04:36 +00:00
README.md cleanup: strip legacy overview markers, remove configurable legacy tag prefixes 2026-09-11 20:59:08 +02:00

Wichtiger Hinweis: Mir war das ehrlicherweise nicht wichtig genug für so einen Kleinkram selsbt zu coden. Also viel LLM-Gedönse drinne. Habe zwar reviewed dass da nix schlimmes passiert, erwartet aber keinen sauberen code

Jellyfin Plugin: ReleaseWindows

Holt für jeden Film in der Bibliothek die Veröffentlichungstermine (Kino, Digital, Disc) von TMDB und macht sie in Jellyfin als Tags sichtbar, optional zusätzlich als Block am Ende der Beschreibung (Overview).

Funktionsweise

Der Scheduled Task „Release Windows aktualisieren“ (Kategorie ReleaseWindows)

  1. iteriert über alle Filme mit TMDB-ID,
  2. ruft GET /3/movie/{id}/release_dates auf (max. 40 Requests / 10 s, Retry bei HTTP 429 mit Retry-After),
  3. wählt pro Datum erst das konfigurierte Land, dann das Fallback-Land:
    • Kino: TMDB-Typ 3 (Theatrical), sonst Typ 2 (Theatrical limited)
    • Digital: Typ 4
    • Disc: Typ 5
  4. entfernt alle Tags mit den konfigurierten Präfixen und schreibt pro vorhandenem Datum einen Tag, z. B. Kino: 2024-03-14, Digital: 2024-06-01, Disc: 2024-07-15,
  5. hängt optional einen Block Release Windows: mit den Zeilen - Kino: …, - Digital: …, - Disc: … an die Overview an. Der Block wird beim nächsten Lauf erkannt und ersetzt.

Filme ohne Ergebnis landen in einem kleinen Cache (no-result-cache.json im Plugin-Datenordner) und werden 30 Tage lang nicht erneut abgefragt. Der Task ist idempotent und läuft standardmäßig wöchentlich (Sonntag 03:00), kann aber jederzeit manuell gestartet werden.

Installation

Variante A: Plugin-Repository (empfohlen)

Die Release-Pipeline (.forgejo/workflows/release.yaml) pflegt manifest.json auf main automatisch.

  1. In Jellyfin: Dashboard → Plugins → Repositories → +
    • Name: ReleaseWindows
    • URL: https://igitt.oles.cloud/GuacamOle/JellyFinDate/raw/branch/main/manifest.json
  2. Dashboard → Plugins → Katalog → Kategorie Metadata → ReleaseWindows installieren.
  3. Jellyfin neu starten.

Variante B: Manuell

ZIP entpacken nach <Jellyfin-Datenordner>/plugins/ReleaseWindows_1.0.0.0/ und Jellyfin neu starten.

Konfiguration

Dashboard → Plugins → ReleaseWindows

Option Default Beschreibung
TMDB API Key – v3-API-Key aus den TMDB-Kontoeinstellungen
Ländercode DE ISO-3166-1
Fallback-Ländercode US wird genutzt, wenn das Hauptland kein Datum hat
Tags schreiben an Tags Kino: yyyy-MM-dd usw.
Overview-Anhang schreiben aus Block ans Ende der Beschreibung
Präfixe Kino:, Digital:, Disc: Tag-Präfixe, frei editierbar
Alte Präfixe entfernen leer Kommagetrennt, z. B. Kino: nach einer Umbenennung. Tags damit werden nur entfernt.

Task starten

Dashboard → Geplante Aufgaben → ReleaseWindows → Release Windows aktualisieren → ▶

Fortschritt und Ergebnis erscheinen dort, Details im Jellyfin-Log (Präfix ReleaseWindows:). Die Tags sind danach in der Filmansicht sichtbar und über den Tag-Filter der Bibliothek nutzbar.

Build

dotnet build -c Release
dotnet test

Release

Ein Tag der Form vX.Y.Z.W startet die Release-Pipeline:

git tag -a v1.0.0.0 -m "Erste Version"
git push origin v1.0.0.0

Die Pipeline baut, testet, erzeugt releasewindows_X.Y.Z.W.zip samt MD5, legt ein Forgejo-Release mit den Assets an und trägt die Version mit sourceUrl und checksum in manifest.json auf main ein. Die Tag-Message wird als Changelog übernommen. Die CI-Pipeline (ci.yaml) baut und testet bei jedem Push.

Projektstruktur

Jellyfin.Plugin.ReleaseWindows/
  Plugin.cs                          BasePlugin<PluginConfiguration>, IHasWebPages
  PluginServiceRegistrator.cs        HttpClient (IHttpClientFactory), TmdbClient, RateLimiter
  Configuration/PluginConfiguration.cs
  Configuration/configPage.html      Konfigurationsseite
  ScheduledTasks/UpdateReleaseWindowsTask.cs
  Tmdb/                              TmdbClient, Modelle, Rate-Limiter
  ReleaseWindowMapper.cs             TMDB-Typen -> Kino/Digital/Disc inkl. Fallback
  TagUpdater.cs                      Tags entfernen/schreiben
  OverviewFormatter.cs               Overview-Block mit Marker
  NoResultCache.cs                   Datei-Cache mit 30 Tagen TTL
Jellyfin.Plugin.ReleaseWindows.Tests/  xUnit-Tests
build.yaml, manifest.json

Lizenz

MIT