164 lines
5.2 KiB
Markdown
164 lines
5.2 KiB
Markdown
# Post-Encode-Skripte
|
||
|
||
Post-Encode-Skripte ermöglichen es, nach erfolgreichem Encoding automatisch beliebige Shell-Befehle oder Programme auszuführen – z. B. zum Verschieben von Dateien, Benachrichtigen externer Dienste oder Auslösen weiterer Verarbeitungsschritte.
|
||
|
||
---
|
||
|
||
## Funktionsweise
|
||
|
||
Nach einem erfolgreich abgeschlossenen Encoding-Schritt führt Ripster die konfigurierten Skripte **sequenziell** in der festgelegten Reihenfolge aus:
|
||
|
||
```
|
||
ENCODING abgeschlossen
|
||
↓
|
||
Skript 1 ausführen ← Fehler? → Abbruch
|
||
↓
|
||
Skript 2 ausführen ← Fehler? → Abbruch
|
||
↓
|
||
...
|
||
↓
|
||
FINISHED
|
||
```
|
||
|
||
!!! warning "Abbruch bei Fehler"
|
||
Schlägt ein Skript fehl (Exit-Code ≠ 0), werden alle nachfolgenden Skripte **nicht mehr ausgeführt**. Der Job wechselt in den Status `ERROR`.
|
||
|
||
---
|
||
|
||
## Skript-Verwaltung
|
||
|
||
Skripte werden über die **Einstellungen-Seite** angelegt und verwaltet. Sie stehen danach in jedem Encode-Review zur Auswahl.
|
||
|
||
### Skript anlegen
|
||
|
||
Navigiere zu **Einstellungen → Skripte** und klicke **"Neues Skript"**:
|
||
|
||
| Feld | Beschreibung |
|
||
|------|-------------|
|
||
| **Name** | Anzeigename des Skripts (z. B. `Zu Plex verschieben`) |
|
||
| **Befehl** | Shell-Befehl oder Skriptpfad (z. B. `/home/michael/scripts/move-to-plex.sh`) |
|
||
| **Beschreibung** | Optionale Erklärung |
|
||
|
||
### Verfügbare Umgebungsvariablen
|
||
|
||
Jedes Skript wird mit folgenden Umgebungsvariablen aufgerufen:
|
||
|
||
| Variable | Inhalt | Beispiel |
|
||
|---------|--------|---------|
|
||
| `RIPSTER_OUTPUT_PATH` | Absoluter Pfad der encodierten Datei | `/mnt/movies/Inception (2010).mkv` |
|
||
| `RIPSTER_JOB_ID` | Job-ID in der Datenbank | `42` |
|
||
| `RIPSTER_TITLE` | Filmtitel | `Inception` |
|
||
| `RIPSTER_YEAR` | Erscheinungsjahr | `2010` |
|
||
| `RIPSTER_IMDB_ID` | IMDb-ID | `tt1375666` |
|
||
| `RIPSTER_RAW_PATH` | Pfad zur Raw-MKV-Datei | `/mnt/raw/Inception-2010/t00.mkv` |
|
||
|
||
### Beispiel-Skript: Datei nach Jellyfin verschieben
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# /home/michael/scripts/move-to-jellyfin.sh
|
||
|
||
TARGET_DIR="/mnt/media/movies"
|
||
mkdir -p "$TARGET_DIR"
|
||
mv "$RIPSTER_OUTPUT_PATH" "$TARGET_DIR/"
|
||
echo "Verschoben: $RIPSTER_TITLE nach $TARGET_DIR"
|
||
```
|
||
|
||
### Beispiel-Skript: Webhook auslösen
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# /home/michael/scripts/notify-webhook.sh
|
||
|
||
curl -s -X POST https://mein-webhook.example.com/ripster \
|
||
-H "Content-Type: application/json" \
|
||
-d "{\"title\": \"$RIPSTER_TITLE\", \"year\": \"$RIPSTER_YEAR\", \"path\": \"$RIPSTER_OUTPUT_PATH\"}"
|
||
```
|
||
|
||
---
|
||
|
||
## Skript im Encode-Review auswählen
|
||
|
||
Im `READY_TO_ENCODE`-Zustand zeigt das **MediaInfoReviewPanel** einen Skript-Abschnitt:
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────┐
|
||
│ Post-Encode-Skripte │
|
||
├──────────────────────────────────────────────────────────┤
|
||
│ Ausgewählte Skripte (Reihenfolge per Drag & Drop): │
|
||
│ ≡ 1. Zu Plex verschieben [Entfernen]│
|
||
│ ≡ 2. Webhook auslösen [Entfernen]│
|
||
├──────────────────────────────────────────────────────────┤
|
||
│ Skript hinzufügen: [Zu Jellyfin verschieben ▾] [+ Hinzuf.]│
|
||
└──────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
- **Reihenfolge** per Drag & Drop ändern
|
||
- **Hinzufügen** aus der Dropdown-Liste aller konfigurierten Skripte
|
||
- **Entfernen** einzelner Skripte aus der aktuellen Auswahl
|
||
- Skripte können pro Job unterschiedlich gewählt werden
|
||
|
||
---
|
||
|
||
## Skript testen
|
||
|
||
Über die Einstellungen kann jedes Skript mit einem Test-Job ausgeführt werden:
|
||
|
||
```http
|
||
POST /api/settings/scripts/:scriptId/test
|
||
```
|
||
|
||
Der Test-Aufruf befüllt die Umgebungsvariablen mit Platzhalter-Werten.
|
||
|
||
---
|
||
|
||
## Ausführungs-Ergebnis
|
||
|
||
Das Ergebnis der Skript-Ausführung wird im Job-Datensatz gespeichert und in der History angezeigt:
|
||
|
||
```json
|
||
{
|
||
"postEncodeScripts": {
|
||
"configured": 2,
|
||
"succeeded": 2,
|
||
"failed": 0,
|
||
"skipped": 0,
|
||
"aborted": false,
|
||
"results": [
|
||
{
|
||
"scriptId": "script-1",
|
||
"name": "Zu Plex verschieben",
|
||
"exitCode": 0,
|
||
"stdout": "Verschoben: Inception nach /mnt/media/movies",
|
||
"stderr": "",
|
||
"durationMs": 342
|
||
},
|
||
{
|
||
"scriptId": "script-2",
|
||
"name": "Webhook auslösen",
|
||
"exitCode": 0,
|
||
"stdout": "",
|
||
"stderr": "",
|
||
"durationMs": 128
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
| Feld | Beschreibung |
|
||
|------|-------------|
|
||
| `configured` | Anzahl ausgewählter Skripte |
|
||
| `succeeded` | Erfolgreich ausgeführt (Exit-Code 0) |
|
||
| `failed` | Fehlgeschlagen |
|
||
| `skipped` | Nicht ausgeführt (wegen vorherigem Fehler) |
|
||
| `aborted` | `true`, wenn die Kette abgebrochen wurde |
|
||
|
||
---
|
||
|
||
## API-Referenz
|
||
|
||
Eine vollständige API-Dokumentation der Skript-Endpunkte findest du unter:
|
||
|
||
[:octicons-arrow-right-24: Settings API – Skripte](../api/settings.md#skript-verwaltung)
|