v0.0.2
Reviewed-on: #2
SmartNotify - Jellyfin Plugin
Intelligente Discord-Benachrichtigungen für Jellyfin 10.11+
Das Problem
Wenn du eine Serie gegen eine bessere Qualität austauschst, schreit Jellyfin "NEUE EPISODE!" - obwohl es nur ein Upgrade ist. Das nervt.
Die Lösung
SmartNotify erkennt automatisch:
- Wirklich neue Inhalte → Benachrichtigung wird gesendet
- Qualitäts-Upgrades → Keine Benachrichtigung (oder optional eigener Typ)
Zusätzlich gruppiert SmartNotify Episoden intelligent:
- Statt 12 einzelner Nachrichten: "Staffel 1: Episode 1-12 hinzugefügt"
- Bei Lücken: "Episode 1-4, 6, 8-12"
Features
- ✅ Erkennt Qualitäts-Upgrades automatisch
- ✅ Intelligente Episoden-Gruppierung
- ✅ Unterstützt AniDB, AniList, TMDB, TVDB, IMDB
- ✅ Konfigurierbare Verzögerung (für Metadaten-Updates)
- ✅ Konfigurierbare Gruppierungsfenster
- ✅ Discord Webhook Support
- ✅ Deutsche Oberfläche
Wie funktioniert die Erkennung?
SmartNotify führt eine lokale Datenbank mit allen bekannten Inhalten:
- Neues Item kommt rein
- SmartNotify generiert einen "Content Key" basierend auf:
- Bei Episoden: Serie (Provider-IDs) + Staffel + Episode
- Bei Filmen: Provider-IDs (AniDB, TMDB, etc.)
- Prüfung 1: Existiert dieser Content Key schon in der DB? → Upgrade!
- Prüfung 2: Gibt es gerade ein anderes Item mit gleichem Content Key? → Duplikat (neues File vor Löschung des alten)
- Nur wenn beide Prüfungen negativ sind → Benachrichtigung
Installation
Manuelle Installation
- Plugin von Releases herunterladen
- ZIP entpacken in
plugins/SmartNotify/ - Jellyfin neustarten
Konfiguration
Nach der Installation im Jellyfin Dashboard:
- Dashboard → Plugins → SmartNotify
- Discord Webhook URL eintragen
- Server URL eintragen (für Bilder in Discord)
- Optional: Verzögerung und Gruppierungsfenster anpassen
Einstellungen
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Discord Webhook URL | - | Die Webhook-URL deines Discord-Kanals |
| Server URL | - | Öffentliche Jellyfin-URL (für Bilder) |
| Verzögerung | 5 min | Wartezeit für Metadaten-Updates |
| Gruppierungsfenster | 30 min | Zeitfenster für Episoden-Gruppierung |
| Upgrades unterdrücken | ✓ | Keine Benachrichtigung bei Ersetzungen |
Beispiel-Benachrichtigungen
Einzelne Episode
📺 Demon Slayer
Neue Episoden hinzugefügt:
Staffel 1: Episode 5
Mehrere Episoden (gruppiert)
📺 Attack on Titan
Neue Episoden hinzugefügt:
Staffel 4: Episode 1-12
Episoden mit Lücken
📺 One Piece
Neue Episoden hinzugefügt:
Staffel 1: Episode 1-4, 6, 8-12
Film
🎬 Your Name (2016)
Kimi no Na wa - Ein Junge und ein Mädchen...
Technische Details
- Framework: .NET 8.0
- Jellyfin-Version: 10.11+
- Datenbank: LiteDB (lokal, im Plugin-Ordner)
- Events:
ILibraryManager.ItemAdded,ILibraryManager.ItemRemoved
Bekannte Einschränkungen
- Provider-IDs müssen vorhanden sein (AniDB, TMDB, etc.)
- Bei Items ohne Provider-IDs wird auf Name+Jahr zurückgefallen
- Die Datenbank wächst mit der Zeit (kann bei Bedarf gelöscht werden)
Installation via Repository
In Jellyfin:
- Dashboard → Plugins → Repositories → +
- URL einfügen:
https://git.tdpi.dev/TDPI/jellyfin-plugin-smartnotify/raw/branch/main/manifest.json
- Katalog → SmartNotify installieren
- Jellyfin neustarten
CI/CD
Das Repository nutzt drei Gitea Workflows:
-
create-release-pr.yaml - Bei Push auf
main:- Analysiert Commits (feat/fix/chore)
- Bumpt Version nach Semantic Versioning
- Erstellt/aktualisiert Release-PR
-
create-release.yaml - Bei PR-Merge:
- Erstellt Git-Tag
- Erstellt Gitea Release
-
build-publish.yaml - Bei Release:
- Baut das Plugin mit
dotnet publish - Erstellt ZIP mit Checksum
- Lädt ZIP zum Release hoch
- Aktualisiert
manifest.jsonautomatisch
- Baut das Plugin mit
Commit Convention
| Prefix | Beschreibung | Version Bump |
|---|---|---|
feat: |
Neues Feature | Minor (1.x.0) |
fix: |
Bugfix | Patch (1.0.x) |
chore: |
Maintenance | Patch (1.0.x) |
feat!: |
Breaking Change | Major (x.0.0) |
Lizenz
MIT
Contributing
Pull Requests willkommen! Bitte teste auf Windows Dev-Umgebung.
Description
v0.1.4
Latest
Languages
C#
87.2%
HTML
12.8%