Files
ripster/docs/pipeline/post-encode-scripts.md
2026-03-09 13:40:48 +00:00

6.5 KiB
Raw Blame History

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:

:octicons-arrow-right-24: Settings API Skripte