fix:: Plugin Erste Tests
All checks were successful
Create Release PR / Create Release PR (push) Successful in 17s

This commit is contained in:
2026-03-01 16:01:26 +01:00
commit b3304e61bf
18 changed files with 2060 additions and 0 deletions

154
README.md Normal file
View File

@@ -0,0 +1,154 @@
# 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:
1. **Neues Item kommt rein**
2. SmartNotify generiert einen "Content Key" basierend auf:
- Bei Episoden: Serie (Provider-IDs) + Staffel + Episode
- Bei Filmen: Provider-IDs (AniDB, TMDB, etc.)
3. **Prüfung 1:** Existiert dieser Content Key schon in der DB? → Upgrade!
4. **Prüfung 2:** Gibt es gerade ein anderes Item mit gleichem Content Key? → Duplikat (neues File vor Löschung des alten)
5. Nur wenn beide Prüfungen negativ sind → Benachrichtigung
## Installation
## Manuelle Installation
1. Plugin von Releases herunterladen
2. ZIP entpacken in `plugins/SmartNotify/`
3. Jellyfin neustarten
## Konfiguration
Nach der Installation im Jellyfin Dashboard:
1. **Dashboard****Plugins****SmartNotify**
2. Discord Webhook URL eintragen
3. Server URL eintragen (für Bilder in Discord)
4. 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:
1. **Dashboard****Plugins****Repositories****+**
2. URL einfügen:
```
https://git.tdpi.dev/TDPI/jellyfin-plugin-smartnotify/raw/branch/main/manifest.json
```
3. **Katalog** → SmartNotify installieren
4. Jellyfin neustarten
## CI/CD
Das Repository nutzt drei Gitea Workflows:
1. **create-release-pr.yaml** - Bei Push auf `main`:
- Analysiert Commits (feat/fix/chore)
- Bumpt Version nach Semantic Versioning
- Erstellt/aktualisiert Release-PR
2. **create-release.yaml** - Bei PR-Merge:
- Erstellt Git-Tag
- Erstellt Gitea Release
3. **build-publish.yaml** - Bei Release:
- Baut das Plugin mit `dotnet publish`
- Erstellt ZIP mit Checksum
- Lädt ZIP zum Release hoch
- Aktualisiert `manifest.json` automatisch
### 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.