fix:: Plugin Erste Tests
All checks were successful
Create Release PR / Create Release PR (push) Successful in 17s
All checks were successful
Create Release PR / Create Release PR (push) Successful in 17s
This commit is contained in:
154
README.md
Normal file
154
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user