Zum Inhalt

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

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

#!/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\"}"

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:

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,
    "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:

Settings API – Skripte