6.5 KiB
Encode-Skripte (Pre & Post)
Ripster unterstützt Pre-Encode- und Post-Encode-Ausführungen: Beliebige Shell-Skripte oder Skript-Ketten können automatisch vor und/oder nach dem Encoding-Schritt laufen – z. B. zum Vorbereiten von Verzeichnissen, Verschieben von Dateien oder Benachrichtigen externer Dienste.
Funktionsweise
READY_TO_ENCODE
↓
[Pre-Encode-Ausführungen] ← Fehler? → Abbruch
Skript/Kette 1, 2, …
↓
ENCODING
↓
[Post-Encode-Ausführungen] ← Fehler? → Abbruch
Skript/Kette 1, 2, …
↓
FINISHED
!!! warning "Abbruch bei Fehler"
Schlägt eine Ausführung fehl (Exit-Code ≠ 0), werden alle nachfolgenden Ausführungen der gleichen Phase nicht mehr ausgeführt.
Der Job bleibt im Abschlusszustand FINISHED; der Fehler wird in Log/Status-Text und im Summary festgehalten.
Skript- und Ketten-Verwaltung
Skripte und Skript-Ketten werden über die Einstellungen-Seite angelegt und verwaltet. Die Reihenfolge in der Liste kann per Drag & Drop geändert werden und bleibt persistent gespeichert.
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 |
Skript-Ketten
Eine Skript-Kette fasst mehrere Skripte zu einer benannten Einheit zusammen, die als ganzes ausgewählt werden kann. Nützlich für wiederkehrende Kombinationen (z. B. „Move + Notify Plex + Webhook"). Ketten werden genauso wie einzelne Skripte im Review-Panel ausgewählt.
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
#!/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
#!/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\"}"
Im Encode-Review auswählen
Im READY_TO_ENCODE-Zustand zeigt das MediaInfoReviewPanel zwei Abschnitte:
┌──────────────────────────────────────────────────────────┐
│ Pre-Encode Ausführungen (optional) │
├──────────────────────────────────────────────────────────┤
│ ≡ 1. Verzeichnis vorbereiten (Skript) [Entfernen]│
├──────────────────────────────────────────────────────────┤
│ Hinzufügen: [Skript/Kette auswählen ▾] [+ Hinzuf.]│
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ Post-Encode Ausführungen (optional) │
├──────────────────────────────────────────────────────────┤
│ ≡ 1. Zu Plex verschieben (Skript) [Entfernen]│
│ ≡ 2. Notify-Kette (Kette) [Entfernen]│
├──────────────────────────────────────────────────────────┤
│ Hinzufügen: [Skript/Kette auswählen ▾] [+ Hinzuf.]│
└──────────────────────────────────────────────────────────┘
- Pre-Encode und Post-Encode werden separat konfiguriert
- Sowohl einzelne Skripte als auch Skript-Ketten können in beiden Phasen ausgewählt werden
- Reihenfolge per Drag & Drop innerhalb jeder Phase ändern
- Hinzufügen aus der Dropdown-Liste aller konfigurierten Skripte und Ketten
- Entfernen einzelner Einträge
- Auswahl kann pro Job frei variiert werden
Skript testen
Über die Einstellungen kann jedes Skript mit einem Test-Job ausgeführt werden:
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:
{
"postEncodeScripts": {
"configured": 2,
"attempted": 2,
"succeeded": 2,
"failed": 0,
"skipped": 0,
"aborted": false,
"results": [
{
"scriptId": 1,
"scriptName": "Zu Plex verschieben",
"status": "SUCCESS"
},
{
"scriptId": 2,
"scriptName": "Webhook auslösen",
"status": "SUCCESS"
}
]
}
}
| Feld | Beschreibung |
|---|---|
configured |
Anzahl ausgewählter Skripte |
attempted |
Anzahl tatsächlich gestarteter 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: