1.0.0 docs
Deploy Docs to GitHub Pages / Build Documentation (push) Has been cancelled
Deploy Docs to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled

This commit is contained in:
2026-06-12 10:38:45 +02:00
parent b29ac935a9
commit 5e24c6b9cc
72 changed files with 1340 additions and 704 deletions
+3 -1
View File
@@ -42,13 +42,15 @@ Diese Funktion ist für eine Archivierung von gekauften Titeln. Das System ermit
- Ausgabe als M4B, MP3 oder FLAC - Ausgabe als M4B, MP3 oder FLAC
- Einzeldatei oder kapitelweises Splitten - Einzeldatei oder kapitelweises Splitten
### 🔄 Converter ### 🔄 Converter (Beta)
- Dateibaum und Datei-Explorer für das Converter-RAW-Verzeichnis - Dateibaum und Datei-Explorer für das Converter-RAW-Verzeichnis
- Upload, Ordner anlegen, Umbenennen, Verschieben und Löschen - Upload, Ordner anlegen, Umbenennen, Verschieben und Löschen
- Jobs aus Dateiauswahl erzeugen, Dateien bestehenden Jobs zuweisen oder daraus entfernen - Jobs aus Dateiauswahl erzeugen, Dateien bestehenden Jobs zuweisen oder daraus entfernen
- Audio-/Video-Erkennung und automatische RAW-Scans per Polling - Audio-/Video-Erkennung und automatische RAW-Scans per Polling
- TMDB-Metadatenzuordnung für passende Video-Jobs - TMDB-Metadatenzuordnung für passende Video-Jobs
Der Converter ist noch nicht vollständig entwickelt und auch noch nicht vollständig geprüft. Er kann verwendet werden, es funktionieren aber ggf. nicht alle Funktionen vollständig!
### 🛠️ Automation, Betrieb und Verwaltung ### 🛠️ Automation, Betrieb und Verwaltung
- Queue mit normalen Jobs sowie zusätzlichen `script`-, `chain`- und `wait`-Einträgen - Queue mit normalen Jobs sowie zusätzlichen `script`-, `chain`- und `wait`-Einträgen
- Pre-/Post-Encode-Skripte und Skript-Ketten - Pre-/Post-Encode-Skripte und Skript-Ketten
+2 -2
View File
@@ -114,9 +114,9 @@ Importiert einen RAW-Ordner als Job und triggert optional die Analyse des Import
--- ---
## POST /api/history/:id/omdb/assign ## POST /api/history/:id/metadata/assign
Weist OMDb-/Filmdaten nachträglich zu. Weist TMDb-Metadaten nachträglich zu oder aktualisiert bestehende Film-/Serien-Metadaten eines Jobs.
## POST /api/history/:id/cd/assign ## POST /api/history/:id/cd/assign
+2 -2
View File
@@ -107,9 +107,9 @@ Erzwingt Rescan für ein konkretes Laufwerk.
--- ---
## GET /api/pipeline/omdb/search?q=<query> ## GET /api/pipeline/tmdb/movie/search?q=<query>
OMDb-Titelsuche. TMDb-Filmsuche.
**Response:** **Response:**
+2 -2
View File
@@ -111,7 +111,7 @@ Features:
- Job-Liste/Detail inkl. Log-Tail - Job-Liste/Detail inkl. Log-Tail
- Orphan-RAW-Erkennung und Import - Orphan-RAW-Erkennung und Import
- OMDb-Nachzuweisung - TMDb-Neuzuordnung
- Dateilöschung (`raw|movie|both`) - Dateilöschung (`raw|movie|both`)
- Job-Löschung (`none|raw|movie|both`) - Job-Löschung (`none|raw|movie|both`)
@@ -222,7 +222,7 @@ Vollständige API-Dokumentation: [Runtime Activities API](../api/runtime-activit
- `audnexService.js` (Audnex-API für Audiobook-Metadaten) - `audnexService.js` (Audnex-API für Audiobook-Metadaten)
- `coverArtRecoveryService.js` (Cover-Art-Wiederherstellung) - `coverArtRecoveryService.js` (Cover-Art-Wiederherstellung)
- `thumbnailService.js` (Vorschaubild-Generierung) - `thumbnailService.js` (Vorschaubild-Generierung)
- `omdbService.js` (OMDb-Metadaten-Suche) - `tmdbService.js` (Film-/Serien-Metadaten-Suche)
- `logger.js` (rotierende Datei-Logs) - `logger.js` (rotierende Datei-Logs)
--- ---
+2 -2
View File
@@ -34,7 +34,7 @@ Historie:
- Job-Liste/Filter - Job-Liste/Filter
- Job-Details + Logs - Job-Details + Logs
- OMDb-Nachzuweisung - TMDb-Neuzuordnung
- Re-Encode/Restart-Workflows - Re-Encode/Restart-Workflows
### `ConverterPage.jsx` ### `ConverterPage.jsx`
@@ -78,7 +78,7 @@ Expert-Modus:
## Wichtige Komponenten ## Wichtige Komponenten
- `PipelineStatusCard.jsx` — Pipeline-Status-Anzeige mit Progress - `PipelineStatusCard.jsx` — Pipeline-Status-Anzeige mit Progress
- `MetadataSelectionDialog.jsx`OMDb-Metadaten-Auswahl - `MetadataSelectionDialog.jsx`TMDb-Metadaten-Auswahl
- `MediaInfoReviewPanel.jsx` — Track-Auswahl-Interface (Video/Audio/Untertitel) - `MediaInfoReviewPanel.jsx` — Track-Auswahl-Interface (Video/Audio/Untertitel)
- `JobDetailDialog.jsx` — Job-Detailansicht mit Logs - `JobDetailDialog.jsx` — Job-Detailansicht mit Logs
- `CronJobsTab.jsx` — Cron-Job-Verwaltung - `CronJobsTab.jsx` — Cron-Job-Verwaltung
+13 -1
View File
@@ -9,7 +9,18 @@ Diese Seite beschreibt **jede** aktuelle Einstellung aus der Settings-GUI: was t
- `Was passiert technisch?`: direkte Wirkung im Backend/Pipeline-Verhalten. - `Was passiert technisch?`: direkte Wirkung im Backend/Pipeline-Verhalten.
- `Warum/Wann setzen?`: Praxisgrund inkl. typischem Einsatzzweck. - `Warum/Wann setzen?`: Praxisgrund inkl. typischem Einsatzzweck.
## Vollstaendige Feldliste ## Wie diese Seite zu lesen ist
Wenn du nicht von oben bis unten lesen willst, helfen diese typischen Einstiegsfragen:
- Disc wird nicht sauber erkannt: zuerst `Laufwerk`
- falsche Playlist- oder Titelauswahl: zuerst `Tools`
- Ausgabe landet im falschen Ordner: zuerst `Pfade`
- zu viele oder zu wenige parallele Jobs: zuerst `Tools`
- Converter scannt nicht wie erwartet: zuerst `Converter`
- Hardware oder Speicher fehlen im Monitoring: zuerst `Monitoring` und `Pfade`
## Vollständige Feldliste
## Kategorie: Benachrichtigungen ## Kategorie: Benachrichtigungen
@@ -140,6 +151,7 @@ Diese Seite beschreibt **jede** aktuelle Einstellung aus der Settings-GUI: was t
| `MakeMKV Key` | `makemkv_registration_key` | `string` | `leer` | Standard | Optionaler Registrierungsschlüssel. Wird beim Speichern nach ~/.MakeMKV/settings.conf synchronisiert. Darunter kann der aktuelle Betakey per API übernommen werden. | Wenn MakeMKV-Features ohne Trial-Limit genutzt werden sollen (inkl. Betakey-Usecase). | | `MakeMKV Key` | `makemkv_registration_key` | `string` | `leer` | Standard | Optionaler Registrierungsschlüssel. Wird beim Speichern nach ~/.MakeMKV/settings.conf synchronisiert. Darunter kann der aktuelle Betakey per API übernommen werden. | Wenn MakeMKV-Features ohne Trial-Limit genutzt werden sollen (inkl. Betakey-Usecase). |
| `Mediainfo Kommando` | `mediainfo_command` | `string` | `mediainfo` | Expertenmodus | Pfad oder Befehl für mediainfo. | Wenn ein Tool nicht im PATH liegt oder eine feste Binary genutzt werden soll (voller Pfad). | | `Mediainfo Kommando` | `mediainfo_command` | `string` | `mediainfo` | Expertenmodus | Pfad oder Befehl für mediainfo. | Wenn ein Tool nicht im PATH liegt oder eine feste Binary genutzt werden soll (voller Pfad). |
| `Minimale Titellänge (Minuten)` | `makemkv_min_length_minutes` | `number` | `60` | Standard | Filtert kurze Titel beim Rip. | Wenn kurze Bonus-/Trailer-Titel automatisch ausgefiltert werden sollen. | | `Minimale Titellänge (Minuten)` | `makemkv_min_length_minutes` | `number` | `60` | Standard | Filtert kurze Titel beim Rip. | Wenn kurze Bonus-/Trailer-Titel automatisch ausgefiltert werden sollen. |
| `TMDb Runtime-Abzug für Playlistfilter (%)` | `playlist_tmdb_runtime_subtract_percent` | `number` | `0` | Standard | Zieht optional einen Prozentsatz von der TMDb-Laufzeit ab, damit Ripster bei problematischen Blu-rays leicht kürzere Hauptfassungen trotzdem als Playlist-Kandidaten zulässt. Eine Mindesttoleranz von 2 Minuten nach unten bleibt erhalten. | Wenn die Playlist-Analyse bei einzelnen Discs zu streng ist und der Hauptfilm knapp unter der TMDb-Laufzeit liegt. Beispiel: TMDb sagt 120 Minuten, die Disc liefert 116 bis 118 Minuten, aber die Fassung ist trotzdem korrekt. |
| `HandBrake Kommando` | `handbrake_command` | `string` | `HandBrakeCLI` | Expertenmodus | Pfad oder Befehl für HandBrakeCLI. | Wenn ein Tool nicht im PATH liegt oder eine feste Binary genutzt werden soll (voller Pfad). | | `HandBrake Kommando` | `handbrake_command` | `string` | `HandBrakeCLI` | Expertenmodus | Pfad oder Befehl für HandBrakeCLI. | Wenn ein Tool nicht im PATH liegt oder eine feste Binary genutzt werden soll (voller Pfad). |
| `Encode-Neustart: unvollständige Ausgabe löschen` | `handbrake_restart_delete_incomplete_output` | `boolean` | `true` | Standard | Wenn aktiv, wird bei "Encode neu starten" der bisherige (nicht erfolgreiche) Output vor Start entfernt. | Wenn bei Encode-Neustart alte, unvollstaendige Dateien sicher entfernt werden sollen. | | `Encode-Neustart: unvollständige Ausgabe löschen` | `handbrake_restart_delete_incomplete_output` | `boolean` | `true` | Standard | Wenn aktiv, wird bei "Encode neu starten" der bisherige (nicht erfolgreiche) Output vor Start entfernt. | Wenn bei Encode-Neustart alte, unvollstaendige Dateien sicher entfernt werden sollen. |
| `Parallele Jobs` | `pipeline_max_parallel_jobs` | `number` | `1` | Standard | Maximale Anzahl parallel laufender Jobs. Weitere Starts landen in der Queue. Aenderung beeinflusst Queue-Pump und Startentscheidungen fuer neue Jobs. | Wenn Durchsatz und CPU-Last fuer Videojobs ausbalanciert werden sollen. | | `Parallele Jobs` | `pipeline_max_parallel_jobs` | `number` | `1` | Standard | Maximale Anzahl parallel laufender Jobs. Weitere Starts landen in der Queue. Aenderung beeinflusst Queue-Pump und Startentscheidungen fuer neue Jobs. | Wenn Durchsatz und CPU-Last fuer Videojobs ausbalanciert werden sollen. |
+101 -52
View File
@@ -4,99 +4,148 @@ Diese Seite ist die Betriebs-Checkliste vor dem ersten produktiven Lauf.
## Ziel der Ersteinrichtung ## Ziel der Ersteinrichtung
Vor dem ersten Job müssen drei Dinge stabil sein: Vor dem ersten Job sollten fünf Bereiche sauber gesetzt sein:
1. Pfade stimmen (RAW, Output, Logs) 1. Pfade und Templates
2. Tools sind aufrufbar (MakeMKV, HandBrake, MediaInfo) 2. Laufwerk und Disc-Erkennung
3. Metadatenzugänge funktionieren (OMDb, optional TMDb/MusicBrainz) 3. Metadatenzugang über TMDb
4. Encode-Standards und Queue-Regeln
5. optionale Automatisierung und Benachrichtigungen
## Empfohlene Reihenfolge ## Empfohlene Reihenfolge
### 1) Basis in `Settings -> Konfiguration` ### 1. Basis in `Settings -> Konfiguration`
Setze zuerst: Prüfe zuerst diese Kernfelder:
- `Raw-Ordner` und `Film-/Serien-Ordner` - RAW- und Zielordner für Blu-ray, DVD, CD, Audiobooks und Converter
- `Log Ordner` - `Log Ordner`
- `TMDb Read Access Token`
- `MakeMKV Kommando`, `HandBrake Kommando`, `Mediainfo Kommando` - `MakeMKV Kommando`, `HandBrake Kommando`, `Mediainfo Kommando`
- `OMDb API Key` - `FFmpeg Kommando`, `FFprobe Kommando`, `cdparanoia Kommando`, `mkvmerge Kommando`, falls du die jeweiligen Workflows nutzt
Dann speichern. Danach speichern.
### 2) Profile pro Medium festziehen ### 2. Pfade und Templates bewusst festlegen
Ripster löst viele Werte profilspezifisch auf (`bluray`, `dvd`, `cd`, `audiobook`). Wichtig für den Alltag:
Pflichtprüfung: - Film-Workflows nutzen `raw_dir_*`, `movie_dir_*` und `output_template_*`
- Serien-Workflows nutzen zusätzlich `raw_dir_*_series`, `series_dir_*` und die Episode-/Multi-Episode-Templates
- Audiobooks nutzen `raw_dir_audiobook`, `movie_dir_audiobook`, `audiobook_raw_template`, `output_template_audiobook`, `output_chapter_template_audiobook`
- Converter nutzt `converter_raw_dir`, `converter_movie_dir`, `converter_audio_dir` und die beiden Converter-Templates
- Downloads nutzen `download_dir`
- RAW-Pfade je Profil Wenn du auf NAS, USB oder andere Benutzer/Gruppen schreiben willst, prüfe auch die jeweiligen `*_owner`-Felder.
- Output-Pfade je Profil
- HandBrake-Preset je Profil
- Output-Templates je Profil
Für Serien zusätzlich: ### 3. Laufwerk und automatische Erkennung prüfen
- `RAW-Ordner (Blu-ray/DVD Serie)` Relevant:
- `Serien-Ordner (Blu-ray/DVD)`
- Serien-Templates (Episode/Multi-Episode)
### 3) Queue-Verhalten definieren - `Laufwerksmodus`
- `Explizite Laufwerke`, falls du nicht mit Auto-Discovery arbeiten willst
- `Automatische Disk-Erkennung`
- `Polling Intervall (ms)` im Expertenmodus
- `Laufwerk nach Rip auswerfen`
Stelle ein: Empfehlung:
- `Max. parallele Film/Video Encodes` - Einzelnes Standardlaufwerk: `auto`
- mehrere stabile Laufwerke oder ungewöhnliche Device-Mappings: `Explizite Laufwerke`
### 4. TMDb und Metadatenverhalten festlegen
Relevant:
- `TMDb Read Access Token`
- `Film-Sprache`
- `Fallback Sprache`
- `Coverart-Nachladen aktiv`
- `Coverart-Prüfintervall (Stunden)`
- `NFO nach Encode erzeugen`
Diese Einstellungen wirken direkt in Metadatensuche, Serienzuordnung, Nachpflege von Covern und im finalen Output.
### 5. Encode- und Review-Standards festlegen
Für Video-Workflows besonders wichtig:
- `Minimale Titellänge (Minuten)`
- `TMDb Runtime-Abzug für Playlistfilter (%)`
- `HandBrake Preset` und `HandBrake Extra Args` je Medium
- `Review Audio-Sprachen (...)`
- `Review UT-Sprachen (...)`
- `Ausgabeformat`
Praxis:
- `Minimale Titellänge` filtert Bonusmaterial früh weg
- `TMDb Runtime-Abzug ...` lockert bei problematischen Blu-rays die Laufzeitprüfung der Playlist-Kandidaten
- Review-Sprachen bestimmen, welche Audio-/Untertitelspuren in der Review schon vorausgewählt sind
### 6. Queue-Verhalten definieren
Stelle diese vier Felder bewusst ein:
- `Parallele Jobs`
- `Max. parallele Audio CD Jobs` - `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt` - `Max. Encodes gesamt (medienunabhängig)`
- optional `Audio CDs: Queue-Reihenfolge überspringen` - `Audio CDs: Queue-Reihenfolge überspringen`
Damit steuerst du Durchsatz, Priorität und Lastverteilung. Damit steuerst du, wie aggressiv Ripster mehrere Jobs gleichzeitig startet.
### 4) Metadatenquellen absichern ### 7. Optional: User-Presets und Standard-Zuordnungen
Film: Unter `Settings -> Encode-Presets` kannst du:
- OMDb-Key prüfen - eigene HandBrake-User-Presets anlegen
- Standard-Zuordnungen für `Blu-ray Film`, `Blu-ray Serie`, `DVD Film`, `DVD Serie` setzen
Serien: Diese Defaults wirken später in der Review automatisch vorbefüllend.
- TMDb Read Access Token setzen ### 8. Optional: Benachrichtigungen
- Sprache/Fallback-Sprachen festlegen
CD/Audiodaten: Prüfe:
- `MusicBrainz aktiviert` nach Bedarf - `PushOver aktiviert`
- Token/User/optional Device
- Event-Toggles wie `Bei manueller Auswahl senden`, `Bei Rip-Start senden`, `Bei Erfolg senden`
### 5) Optional: Benachrichtigungen Danach in `Settings` den Button `PushOver Test` ausführen.
- PushOver-Zugangsdaten setzen ### 9. Optional: Automatisierung
- `PushOver Test` ausführen
- Event-Toggles pro Phase prüfen
### 6) Optional: Automatisierung Erst wenn die Grundkonfiguration stabil ist:
1. Skripte testen 1. Skripte anlegen und testen
2. Skriptketten bauen/testen 2. Skriptketten aufbauen
3. Cronjobs erst danach aktivieren 3. Cronjobs aktivieren
## Funktionsprüfung (Kurztest) ## Funktionsprüfung
1. Disc in `Ripper` erkennen lassen. Ein sinnvoller Kurztest:
2. `Analyse starten`.
3. Metadaten übernehmen. 1. Disc in `Ripper` erkennen lassen
4. Bis `Bereit zum Encodieren` laufen. 2. `Analyse starten`
5. Encode starten und Abschluss in `Historie` prüfen. 3. TMDb-Metadaten übernehmen
4. ggf. Playlist-/RAW-Entscheidung durchlaufen
5. bis `Bereit zum Encodieren` kommen
6. Encode starten
7. Ergebnis in `Historie` prüfen
## Typische Konfigurationsfehler ## Typische Konfigurationsfehler
| Symptom | Häufige Ursache | | Symptom | Häufige Ursache |
|---|---| |---|---|
| Job bleibt früh auf Fehler | Toolkommando falsch oder nicht im PATH | | Disc wird nicht erkannt | Laufwerksmodus oder Auto-Erkennung passt nicht |
| RAW/Output landet am falschen Ort | Profilpfade nicht gesetzt, Fallback greift | | Playlist-Auswahl wirkt unplausibel | `Minimale Titellänge` oder `TMDb Runtime-Abzug ...` ist zu streng/zu locker |
| Serienausgabe landet bei Filmen | Serienpfade/Serientemplates fehlen | | falsche Spuren sind in der Review vorausgewählt | Review-Sprachfilter oder HandBrake-Args greifen unerwartet |
| Queue verhält sich unerwartet | Gesamtlimit und Lane-Limits widersprechen sich | | Ausgabe landet am falschen Ort | Profilpfade oder Templates greifen über Fallback |
| Queue verhält sich unerwartet | `Parallele Jobs`, CD-Limit und Gesamtlimit widersprechen sich |
## Weiter ## Weiter
- [Erster Lauf](quickstart.md) - [Erster Lauf](quickstart.md)
- [GUI-Seiten](../gui/index.md) - [GUI-Seiten](../gui/index.md)
- [Workflows aus Nutzersicht](../workflows/index.md) - [Workflows aus Nutzersicht](../workflows/index.md)
- [Alle Einstellungen](../configuration/settings-reference.md)
+81 -71
View File
@@ -1,107 +1,117 @@
# Installation # Installation
Die empfohlene Installation läuft über `install.sh` und richtet Ripster vollständig ein. Die empfohlene Installation startet immer über `setup.sh`. `setup.sh` lädt das passende `install.sh` aus dem gewünschten Branch und übergibt alle weiteren Parameter unverändert an den eigentlichen Installer.
Du musst dafür **keine Tools manuell vorinstallieren**. Das Skript installiert die benötigten Abhängigkeiten automatisch, sofern sie nicht explizit mit `--no-*` übersprungen werden. Wichtig:
## Unterstützte Systeme und Anforderungen - Standard-Einstieg: `setup.sh`
- kein `curl | bash`
- du musst die Tools nicht manuell vorinstallieren, sofern du sie nicht bewusst mit `--no-*` auslässt
- unterstützt laut Script: `debian`, `ubuntu`, `linuxmint`, `pop` ## Voraussetzungen
- Ausführung als `root` (oder via `sudo`)
- unterstütztes Linux-System
- Root-Rechte oder `sudo`
- Internetzugang während der Installation - Internetzugang während der Installation
## Schritt-für-Schritt Der Installer erkennt aktuell:
### 1. Installationsskript herunterladen - Debian
- Ubuntu
- Linux Mint
- Pop!_OS
## Standardinstallation
```bash ```bash
wget -qO install.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.sh wget -qO setup.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/setup.sh
bash setup.sh
``` ```
### 2. Installation ausführen Ohne `--branch` fragt `setup.sh` interaktiv nach dem gewünschten Branch.
Die typischen Branches sind:
- `main`: stabiles Release
- `dev`: aktueller Entwicklungsstand
## Installation mit Branch oder Optionen
Beispiele:
```bash ```bash
sudo bash install.sh bash setup.sh --branch main
bash setup.sh --branch dev
bash setup.sh --branch dev --dir /opt/ripster --user ripster --port 3001 --host 192.168.1.10
``` ```
Während der Installation wählst du den HandBrake-Modus: `setup.sh` wertet selbst nur `--branch` aus. Alles andere übernimmt `install.sh`.
- `1` Standard (Paketinstallation) ## Wichtige Optionen von `install.sh`
- `2` GPU/NVDEC (gebündeltes Binary)
### 3. Dienststatus prüfen | Option | Default | Zweck |
|---|---|---|
| `--branch <branch>` | `dev` | installiert genau diesen Git-Branch |
| `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis |
| `--user <benutzer>` | `ripster` | Systembenutzer für den Dienst |
| `--port <port>` | `3001` | Backend-Port |
| `--host <hostname|ip>` | automatisch ermittelte Host-IP | Hostname/IP für Webzugriff und CORS |
| `--no-makemkv` | aus | MakeMKV nicht installieren |
| `--no-handbrake` | aus | HandBrake nicht installieren |
| `--no-nginx` | aus | nginx-Setup überspringen |
| `--no-system-deps` | aus | Systemabhängigkeiten nicht nachinstallieren |
| `--reinstall` | aus | bestehende Installation aktualisieren |
## Was der Installer einrichtet
Typischer Ablauf:
1. Betriebssystem, Root-Rechte und Host prüfen
2. Systemabhängigkeiten installieren
3. Node.js 20 sicherstellen
4. optional MakeMKV installieren
5. optional HandBrakeCLI installieren
6. optional nginx konfigurieren
7. Repository nach `--dir` klonen oder aktualisieren
8. Backend-/Frontend-Abhängigkeiten installieren
9. Frontend bauen
10. `backend/.env` und Laufzeitverzeichnisse vorbereiten
11. `ripster-backend.service` anlegen und starten
## Dienst prüfen
```bash ```bash
sudo systemctl status ripster-backend sudo systemctl status ripster-backend
``` ```
### 4. Weboberfläche öffnen Typische Aufrufe im Betrieb:
- mit nginx (Standard): `http://<Server-IP>`
- ohne nginx (`--no-nginx`): API auf `http://<Server-IP>:3001/api`
## Was `install.sh` konkret einrichtet
1. prüft Betriebssystem, Root-Rechte und ermittelt Host/IP
2. aktualisiert Paketquellen und installiert Basispakete (`curl`, `wget`, `git`, `mediainfo`, `udev` ...)
3. installiert Node.js 20 (falls nicht passend vorhanden)
4. installiert optional MakeMKV (Build aus den offiziellen Quellen)
5. installiert optional HandBrakeCLI (Standard oder GPU/NVDEC)
6. installiert optional nginx
7. legt den Systembenutzer `ripster` an (ohne Login-Shell, ohne Home) und ergänzt Gruppen (`cdrom`, `optical`, `disk`, `video`, `render`, falls vorhanden)
8. klont das Repository nach `/opt/ripster` (oder aktualisiert bei `--reinstall`)
9. legt Verzeichnisse an:
- `/opt/ripster/backend/data`
- `/opt/ripster/backend/logs`
- `/opt/ripster/backend/data/output/raw`
- `/opt/ripster/backend/data/output/movies`
- `/opt/ripster/backend/data/logs`
10. installiert npm-Abhängigkeiten (Root, Backend, Frontend) und baut das Frontend
11. erzeugt `backend/.env` (bei `--reinstall` bleibt bestehende `.env` erhalten)
12. setzt Rechte/Besitz und erstellt bei sudo-Installation zusätzlich `~/.MakeMKV` für den aufrufenden Benutzer
13. erzeugt und startet `ripster-backend.service`
14. konfiguriert und startet nginx (falls nicht übersprungen)
## Wichtige Optionen
| Option | Default laut Script | Zweck |
|---|---|---|
| `--branch <branch>` | `dev` | Branch für die Installation |
| `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis |
| `--user <benutzer>` | `ripster` | Service-Benutzer |
| `--port <port>` | `3001` | Backend-Port |
| `--host <hostname>` | automatisch ermittelte Host-IP | Hostname/IP für Webzugriff/CORS |
| `--no-makemkv` | aus | MakeMKV-Installation überspringen |
| `--no-handbrake` | aus | HandBrake-Installation überspringen |
| `--no-nginx` | aus | nginx-Setup überspringen |
| `--reinstall` | aus | bestehende Installation aktualisieren |
Beispiele:
```bash ```bash
sudo bash install.sh --branch dev sudo journalctl -u ripster-backend -f
sudo bash install.sh --port 8080 --host ripster.local sudo systemctl restart ripster-backend
sudo bash install.sh --reinstall
``` ```
## Betrieb im Alltag ## Update einer bestehenden Installation
Standard:
```bash ```bash
# Logs live ansehen
sudo journalctl -u ripster-backend -f
# Dienst neu starten
sudo systemctl restart ripster-backend
# Update aus bestehender Installation
sudo bash /opt/ripster/install.sh --reinstall sudo bash /opt/ripster/install.sh --reinstall
``` ```
## Häufige Stolperstellen Wenn die Installation mit abweichenden Kernparametern eingerichtet wurde, dieselben Parameter wieder mitgeben:
- Laufwerk nicht zugreifbar: Laufwerksrechte/Gruppen prüfen ```bash
- CLI-Tool fehlt wegen `--no-*`: Tool nachinstallieren oder Befehl in Settings korrigieren sudo bash /opt/ripster/install.sh --reinstall --dir /opt/ripster --user ripster --port 3001 --host 192.168.1.10
- UI nicht erreichbar: nginx-Status und Firewall prüfen ```
Alternativ kannst du auch erneut über `setup.sh` gehen:
```bash
sudo bash /opt/ripster/setup.sh --reinstall
```
`--reinstall` aktualisiert die Installation, behält aber die persistenten Daten der bestehenden Instanz.
## Danach weiter ## Danach weiter
+29 -19
View File
@@ -1,19 +1,31 @@
# Voraussetzungen # Voraussetzungen
Die Voraussetzungen hängen davon ab, **wie** du Ripster betreibst. Die Voraussetzungen hängen davon ab, ob du Ripster produktiv installieren oder lokal entwickeln willst.
## Produktionsbetrieb mit `install.sh` (Standard) ## Produktionsbetrieb mit `setup.sh`
Für den normalen Betrieb sind nur wenige Punkte vorab nötig. Für den normalen Betrieb brauchst du nur die Basisvoraussetzungen. Die eigentlichen Tools werden vom Installer eingerichtet, sofern du sie nicht bewusst mit `--no-*` überspringst.
### Pflicht ### Pflicht
- unterstütztes Linux-System (laut Script: Debian, Ubuntu, Linux Mint, Pop!_OS) - unterstütztes Linux-System
- `root`-Rechte - Root-Rechte oder `sudo`
- Internetzugang während der Installation - Internetzugang während der Installation
- optisches Laufwerk für Disc-Betrieb - optisches Laufwerk, wenn du Disc-Workflows nutzen willst
`install.sh` installiert die benötigten Tools selbst (u. a. Node.js, MakeMKV, HandBrakeCLI, MediaInfo), sofern sie nicht explizit per `--no-*` übersprungen werden. Der Installer unterstützt aktuell:
- Debian
- Ubuntu
- Linux Mint
- Pop!_OS
Standard-Einstieg:
```bash
wget -qO setup.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/setup.sh
bash setup.sh
```
### Laufwerk kurz prüfen ### Laufwerk kurz prüfen
@@ -22,27 +34,25 @@ ls /dev/sr*
lsblk | grep rom lsblk | grep rom
``` ```
Wenn nötig Rechte setzen (Beispiel):
```bash
sudo chmod a+rw /dev/sr0
```
### Optional vorab ### Optional vorab
- OMDb API-Key (kann auch nach Installation in den `Settings` gesetzt werden) - TMDb Read Access Token für Film-/Serien-Metadaten
- PushOver-Zugangsdaten (optional) - PushOver-Zugangsdaten für Benachrichtigungen
## Entwicklungsmodus (nur für Dev) Beides kann auch erst nach der Installation in `Settings` gesetzt werden.
## Entwicklungsmodus
Wenn du lokal entwickelst (`./start.sh`, `npm run dev`), gelten zusätzliche Voraussetzungen: Wenn du lokal entwickelst (`./start.sh`, `npm run dev`), gelten zusätzliche Voraussetzungen:
- Node.js >= 20.19.0 - Node.js `>= 20.19.0`
- `makemkvcon`, `HandBrakeCLI`, `mediainfo` im `PATH` - `makemkvcon`, `HandBrakeCLI`, `mediainfo` im `PATH`
Details: [Entwicklungsumgebung](../deployment/development.md) Details: [Entwicklungsumgebung](../deployment/development.md)
## Abschluss-Checkliste ## Abschluss-Checkliste
- [ ] Produktionsbetrieb: Linux + root + Internet + Laufwerk vorhanden - [ ] Linux + Root/Sudo + Internet vorhanden
- [ ] Dev-Modus (nur falls benötigt): Node.js und CLI-Tools verfügbar - [ ] optisches Laufwerk vorhanden, falls Disc-Ripping genutzt werden soll
- [ ] TMDb/PushOver-Zugangsdaten liegen bereit, falls diese Funktionen sofort genutzt werden sollen
- [ ] im Dev-Modus zusätzlich Node.js und CLI-Tools lokal verfügbar
+99 -38
View File
@@ -1,19 +1,25 @@
# Erster Lauf # Erster Lauf
Dieser Ablauf führt einen vollständigen Disc-Job von Erkennung bis fertiger Datei durch. Dieser Ablauf führt einen typischen Disc-Job von Erkennung bis fertiger Datei durch.
## 1) Disc erkennen ## 1. Disc erkennen
1. `Ripper` öffnen. 1. `Ripper` öffnen
2. Disc einlegen. 2. Disc einlegen
3. Auf `Medium erkannt` warten. 3. auf `Medium erkannt` warten
Prüfen: Prüfen:
- `Disk-Information` zeigt Device/Label. - `Disk-Information` zeigt Device, Label und Laufwerksstatus
- Falls nicht: `Laufwerk neu lesen`. - falls nicht: `Laufwerk neu lesen`
## 2) Analyse starten Relevante Settings:
- `Laufwerksmodus`
- `Automatische Disk-Erkennung`
- `Polling Intervall (ms)`
## 2. Analyse starten
Aktion: Aktion:
@@ -22,69 +28,124 @@ Aktion:
Erwartung: Erwartung:
- Status `Analyse` - Status `Analyse`
- danach Metadaten-Dialog - danach der Metadaten-Dialog
## 3) Metadaten bestätigen Relevantes Setting:
- `Minimale Titellänge (Minuten)` beeinflusst bereits, welche Titel/Playlists Ripster später als relevant betrachtet
## 3. Metadaten in TMDb bestätigen
Im Dialog: Im Dialog:
1. Treffer suchen/auswählen. 1. Treffer suchen oder filtern
2. Bei Serie zusätzlich Disc-Nummer setzen. 2. Film oder Serie auswählen
3. `Auswahl übernehmen`. 3. bei Serien zusätzlich `Disc-Nummer` setzen
4. `Auswahl übernehmen`
Mögliche Abzweigungen: Mögliche Abzweigungen:
- Duplikatfilm -> `Übernahme erzwingen` oder `Multipart movie` - Duplikatfilm: `Übernahme erzwingen` oder `Multipart movie`
- vorhandenes RAW -> Entscheidungsdialog (weiterverwenden oder neu rippen) - vorhandenes RAW: Entscheidungsdialog `weiterverwenden` oder `neu rippen`
## 4) Rip/Review-Phase Relevante Settings:
Normalfall: - `TMDb Read Access Token`
- `Film-Sprache`
- `Fallback Sprache`
- `Startbereit` -> `Rippen` -> `Mediainfo-Pruefung` ## 4. RAW- und Playlist-Entscheidungen
Mögliche Alternativen: Je nach Disc-Situation geht es jetzt unterschiedlich weiter.
- vorhandenes RAW: direkter Sprung in Prüfung ### Normalfall
- Blu-ray/DVD-Entscheidung nötig: `Warte auf Auswahl` für Playlist/Titel
## 5) Encode-Review abschließen `Startbereit` -> `Rippen` -> `Mediainfo-Prüfung`
Bei `Bereit zum Encodieren`: ### Vorhandenes RAW
- Titel festlegen Kein neuer Rip, sondern erst eine Entscheidung:
- Audio-/Subtitle-Spuren prüfen
- optional Preset auswählen - vorhandenes RAW weiterverwenden
- optional Pre-/Post-Skripte wählen - RAW löschen und Rip neu starten
- bei passenden Film-Konstellationen optional Multipart mit Orphan-RAW
### Playlist- oder Titelauswahl erforderlich
Bei bestimmten Blu-ray-/DVD-Fällen erscheint `Warte auf Auswahl`.
Dann bestätigst du:
- eine Playlist
- oder einen/mehrere HandBrake-Titel
Relevante Settings:
- `Minimale Titellänge (Minuten)`
- `TMDb Runtime-Abzug für Playlistfilter (%)`
## 5. Encode-Review abschließen
Bei `Bereit zum Encodieren` prüfst du:
- Titelwahl
- Audio-Spuren
- Untertitel
- User-Preset oder HandBrake-Preset
- Pre-/Post-Encode-Skripte und Ketten
Dann: Dann:
- `Encoding starten` - `Encoding starten`
## 6) Encoding überwachen Relevante Settings:
- `HandBrake Preset` und `HandBrake Extra Args` je Medium
- `Review Audio-Sprachen (...)`
- `Review UT-Sprachen (...)`
- `Ausgabeformat`
- Standard-Zuordnungen unter `Settings -> Encode-Presets`
## 6. Encoding überwachen
Während `Encodieren`: Während `Encodieren`:
- Fortschritt/ETA im Ripper - Fortschritt/ETA im Ripper
- Queue- und Runtime-Status beobachten - Queue-Status beobachten
- optional Logkontrolle in Historie - bei Bedarf `Hardware`-Ansicht öffnen
## 7) Ergebnis verifizieren Relevante Settings:
- `Parallele Jobs`
- `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt (medienunabhängig)`
- `Hardware Monitoring aktiviert`
- `Hardware Monitoring Intervall (ms)`
## 7. Ergebnis verifizieren
Nach `Fertig`: Nach `Fertig`:
1. `Historie` öffnen. 1. `Historie` öffnen
2. Jobdetail prüfen. 2. Jobdetail prüfen
3. Output-Pfad und Log plausibilisieren. 3. Output-Pfad und Log kontrollieren
Kontrollpunkte: Kontrollpunkte:
- finale Datei am erwarteten Template-Pfad - finale Datei liegt am erwarteten Template-Pfad
- RAW-Ordnerzustand finalisiert (kein `Incomplete_`) - RAW-Ordner ist finalisiert
- optional `.nfo` wurde erzeugt, falls aktiviert
## 8) Typische Folgeaktionen Relevante Settings:
- falsche Metadaten: `OMDb neu zuordnen` - `output_template_*`
- `series_dir_*` und Serien-Templates
- `generate_nfo_after_encode`
## 8. Typische Folgeaktionen
- falsche TMDb-Zuordnung: `TMDb neu zuweisen`
- andere Trackauswahl: `Review neu starten` - andere Trackauswahl: `Review neu starten`
- erneuter Encode aus RAW: `RAW neu encodieren` - erneuter Encode aus RAW: `RAW neu encodieren`
- gleicher Plan erneut: `Encode neu starten` - gleicher Plan erneut: `Encode neu starten`
- Rip erneut versuchen: `Retry Rippen`
+57 -31
View File
@@ -9,74 +9,100 @@ Die Oberfläche besteht aus zwei Hauptbereichen:
1. `Audiobooks Upload` 1. `Audiobooks Upload`
2. `Audiobook Jobs` 2. `Audiobook Jobs`
## 1) Audiobooks Upload ## 1. Audiobooks Upload
Der Upload akzeptiert ausschließlich `.aax`. Der Upload akzeptiert ausschließlich `.aax`.
### Bedienung ### Bedienung
- Datei auswählen (Button oder Drag-and-Drop) - Datei auswählen oder per Drag-and-Drop ablegen
- Upload starten - Upload starten
- Auswahl entfernen oder laufenden Upload abbrechen - Auswahl entfernen oder laufenden Upload abbrechen
Während des Uploads zeigt die UI: Während des Uploads zeigt die UI:
- Prozentfortschritt - Prozentfortschritt
- übertragene/gesamte Bytes - übertragene und gesamte Bytes
- Statusmeldung (z. B. „Job vorbereitet“, „in Queue eingereiht“) - Statusmeldung
### Ablauf nach erfolgreichem Upload ### Ablauf nach erfolgreichem Upload
- AAX wird serverseitig geprüft - die AAX-Datei wird geprüft
- Audiobook-Job wird angelegt - Ripster versucht Metadata, Kapitel und Activation-Bytes-Kontext aufzubauen
- Job landet je nach Pipelinezustand in `READY_TO_START`, startet direkt oder wird eingereiht - ein Audiobook-Job wird angelegt
- der Job startet direkt oder wird in die Queue eingereiht
## 2) Audiobook Jobs ## 2. Audiobook Jobs
Gezeigt werden aktive Jobs (nicht abgeschlossene). Fertige Jobs liegen in der `Historie`. Die Seite zeigt aktive Jobs. Abgeschlossene Jobs findest du in der `Historie`.
Jeder Job kann eingeklappt/ausgeklappt werden und zeigt: Ein Job kann eingeklappt oder ausgeklappt werden und zeigt:
- Titel-/Metadatenblock (Titel, Autor, Sprecher, Jahr, Kapitel) - Titel, Autor, Sprecher, Jahr
- Statusbadge - Kapitelanzahl
- Fortschritt/ETA - Fortschritt und ETA
- ggf. Kapitel-Fortschritt - bei Split-Ausgabe den Kapitelstatus
### Konfigurierbare Job-Parameter ## Konfigurierbare Job-Parameter
Im ausgeklappten Job: Im ausgeklappten Job kannst du setzen:
- Ausgabeformat (`m4b`, `mp3`, `flac`) - Ausgabeformat `m4b`, `mp3` oder `flac`
- formatspezifische Optionen (dynamisch je Format) - formatspezifische Optionen
- Kapitelnamen bearbeiten - Kapitelnamen
- Pre-Rip-Ausführungen (Skript/Kette) - Pre-Encode-Skripte und -Ketten
- Post-Rip-Ausführungen (Skript/Kette) - Post-Encode-Skripte und -Ketten
### Formatverhalten ### Formatverhalten
- `m4b`: eine Datei mit Kapiteln - `m4b`: eine Datei mit Kapitelmarken
- `mp3`/`flac`: kapitelweise Ausgabedateien - `mp3`: eine Datei pro Kapitel
- `flac`: eine Datei pro Kapitel
Für `mp3`/`flac` zeigt die UI während/nach dem Lauf eine Kapitel-Status-Tabelle (`Rip`/`Encode`). Wenn du `mp3` oder `flac` wählst, zeigt die UI zusätzlich eine Kapitel-Status-Tabelle.
### Aktionen je Job ## Activation Bytes
- `Encode starten` (bzw. Neustart mit aktuellen Optionen) Wenn Ripster für eine Datei keine Activation Bytes verwenden kann, wird im Workflow eine manuelle Eingabe nötig.
- `Abbrechen`
- `Job löschen` (mit Bestätigung) Wichtig:
- die Bytes werden lokal gecacht
- derselbe AAX-Hash muss dann später nicht erneut manuell eingegeben werden
- der Expertenblock in `Settings` zeigt bekannte Cache-Einträge an
## Relevante Settings ## Relevante Settings
- `raw_dir_audiobook` - `raw_dir_audiobook`
- `movie_dir_audiobook` - `movie_dir_audiobook`
- `raw_dir_audiobook_owner`
- `movie_dir_audiobook_owner`
- `audiobook_raw_template` - `audiobook_raw_template`
- `output_template_audiobook` - `output_template_audiobook`
- `output_chapter_template_audiobook` - `output_chapter_template_audiobook`
- `ffprobe_command` - `ffprobe_command`
- `ffmpeg_command` - `ffmpeg_command`
### So wirken die Settings im Alltag
- `audiobook_raw_template` bestimmt den Namen des AAX-RAW-Ordners
- `output_template_audiobook` bestimmt die Einzeldatei für `m4b`
- `output_chapter_template_audiobook` bestimmt Zielstruktur und Dateinamen für `mp3`/`flac`
- `ffprobe_command` liest Kapitel und Metadaten
- `ffmpeg_command` erzeugt die finalen Dateien
## Queue und Laufzeit
Audiobook-Jobs nutzen dieselbe globale Pipeline wie die anderen Bereiche.
Relevante Settings:
- `Parallele Jobs`
- `Max. Encodes gesamt (medienunabhängig)`
## Typische Fehlerbilder ## Typische Fehlerbilder
- Upload wird abgelehnt: Datei ist keine gültige `*.aax`. - Upload wird abgelehnt: Datei ist keine gültige `*.aax`
- Start/Encode schlägt fehl: `ffprobe` oder `ffmpeg` nicht erreichbar. - Analyse schlägt fehl: `ffprobe` ist nicht erreichbar
- Unerwartete Ausgabeorte: Templates/Pfade passen nicht zur gewünschten Struktur. - Encode schlägt fehl: `ffmpeg` ist nicht erreichbar
- Ausgabe landet unerwartet: Templates oder Zielpfade passen nicht zur gewünschten Struktur
+69 -49
View File
@@ -1,19 +1,22 @@
# Converter # Converter
Die Seite `Converter` verarbeitet bereits vorhandene Dateien (Video, Audio, ISO) ohne Laufwerks-Rip. Die Seite `Converter` verarbeitet vorhandene Dateien ohne Laufwerks-Rip. Sie ist für Video-, Audio- und ISO-Dateien gedacht, die bereits auf dem System liegen oder hochgeladen werden.
## Betriebsmodell ## Betriebsmodell
Der Converter arbeitet auf dem Eingangspfad `converter_raw_dir`: Der Converter arbeitet auf dem Eingangspfad `converter_raw_dir`.
- Uploads landen dort Dort landen:
- Explorer-Aktionen arbeiten dort
- daraus werden Converter-Jobs erstellt - Uploads
- neu angelegte Ordner
- umbenannte oder verschobene Dateien
- alle Dateien, aus denen später Converter-Jobs entstehen
Wichtig: Wichtig:
- Upload erzeugt nicht automatisch einen Job. - Upload erzeugt nicht automatisch einen Job
- Joberstellung erfolgt explizit über Auswahl im Explorer. - die Joberstellung erfolgt bewusst aus der Explorer-Auswahl
## Datei-Explorer ## Datei-Explorer
@@ -23,17 +26,24 @@ Aktionen:
| Aktion | Wirkung | | Aktion | Wirkung |
|---|---| |---|---|
| `Upload` | Dateien werden in den Raw-Baum geschrieben | | `Upload` | schreibt neue Dateien in den Converter-RAW-Baum |
| `Ordner erstellen` | legt Unterordner im Raw-Baum an | | `Ordner erstellen` | legt Unterordner an |
| `Umbenennen` | benennt Datei/Ordner im Raw-Baum um | | `Umbenennen` | benennt Datei oder Ordner um |
| `Verschieben` | verschiebt innerhalb des Raw-Baums | | `Verschieben` | verschiebt Einträge innerhalb des Raw-Baums |
| `Löschen` | entfernt Datei/Ordner dauerhaft | | `Löschen` | entfernt Datei oder Ordner dauerhaft |
| `Scannen` | synchronisiert Explorer und DB-Zuordnungen | | `Scannen` | synchronisiert Dateisystem und Converter-Datenbank |
Upload-Regeln: ### Upload- und Scan-Regeln
- Dateiendung muss in `Erlaubte Datei-Endungen*` enthalten sein - Dateiendungen müssen in `Erlaubte Datei-Endungen` enthalten sein
- bei Verstoß wird der Upload abgelehnt - neue Dateien erscheinen sofort nach manuellem Scan
- mit Polling auch automatisch
Relevante Settings:
- `Erlaubte Datei-Endungen`
- `Auto-Scan (Polling)`
- `Polling-Intervall (Sekunden)`
## Joberstellung aus Explorer-Auswahl ## Joberstellung aus Explorer-Auswahl
@@ -44,65 +54,75 @@ Es gibt zwei Audio-Strategien:
Verhalten: Verhalten:
- Video/ISO werden grundsätzlich als Einzeljobs angelegt. - Video und ISO werden immer als Einzeljobs angelegt
- Audio kann als Shared-Job mit mehreren Eingabedateien erzeugt werden. - Audio kann als gemeinsamer Album-/Ordner-Job erzeugt werden
Shared-Audio-Job: Shared-Audio-Job:
- hält mehrere `inputPaths` - hält mehrere `inputPaths`
- kann vor Start erweitert/reduziert werden (nur Audio-Dateien) - kann vor dem Start erweitert oder reduziert werden
## Job-Konfiguration ## Job-Konfiguration
Vor Start je Job einstellbar: Vor dem Start je Job einstellbar:
- `converterMediaType` (`video`, `audio`, `iso`) - `converterMediaType`
- `outputFormat` - `outputFormat`
- Metadaten - Metadaten
- Track-/Titelwahl (bei video/iso) - Track-/Titelwahl bei Video/ISO
- User-Preset und HandBrake-Preset bei Video
- Pre-/Post-Encode-Skripte und Ketten - Pre-/Post-Encode-Skripte und Ketten
Spezifika: Spezifika:
- Video/ISO laufen durch Mediainfo/Review ähnlich zum Disc-Flow. - Video/ISO durchlaufen eine Review ähnlich zum Disc-Flow
- Audio kann direkt mit Formatoptionen konfiguriert werden. - Audio wird direkt über Format und Audio-Optionen konfiguriert
## Ausgabe-Pfade ## Ausgabe-Pfade
### Video/ISO ### Video / ISO
- Root: `converter_movie_dir` - Zielordner: `converter_movie_dir`
- Dateiname: `Output-Template (Video)` - Dateiname: `Output-Template (Video)`
- Endung: aus gewähltem Output-Format - Endung: aus dem gewählten Ausgabeformat
### Audio ### Audio
- Root: `converter_audio_dir` - Zielordner: `converter_audio_dir`
- Dateiname/Ordner: `Output-Template (Audio)` - Dateiname/Ordner: `Output-Template (Audio)`
- bei Shared-/Folder-Job: Ausgabe als Ordnerstruktur mit Trackdateien - bei Shared- oder Folder-Jobs entsteht eine Ordnerstruktur mit mehreren Track-Dateien
## Queue und Start
Converter-Jobs laufen über dieselbe Pipeline-/Queue-Logik:
- sofortiger Start wenn Limits frei
- sonst Queue-Eintrag
Parallelität richtet sich nach den globalen Encode-Limits in `Settings`.
## Auto-Scan (Polling)
Mit aktiviertem Polling:
- `converter_raw_dir` wird zyklisch gescannt
- neue Dateien erscheinen automatisch im Explorer
Relevante Settings: Relevante Settings:
- `Auto-Scan (Polling)` - `converter_movie_dir`
- `Polling-Intervall (Sekunden)` - `converter_audio_dir`
- `converter_output_template_video`
- `converter_output_template_audio`
- `converter_movie_dir_owner`
- `converter_audio_dir_owner`
## Queue und Start
Converter-Jobs laufen über dieselbe globale Pipeline-Queue wie Ripper und Audiobooks.
Das bedeutet:
- sofortiger Start, wenn Limits frei sind
- sonst Einreihung in die Warteschlange
Relevante Settings:
- `Parallele Jobs`
- `Max. Encodes gesamt (medienunabhängig)`
## Typische Einsatzfälle
- vorhandene MKV/MP4-Dateien mit neuem Preset encodieren
- ISO-Dateien in einen Video-Workflow überführen
- Musikdateien gesammelt in einen Audio-Ordner-Job packen
- Medien auf anderem Storage per Upload oder Dateibaum vorbereiten
## Abgrenzung zu Audiobooks ## Abgrenzung zu Audiobooks
- `Converter`: beliebige Audio/Video/ISO-Dateien - `Converter`: beliebige Audio-, Video- und ISO-Dateien
- `Audiobooks`: dedizierter AAX-Workflow mit Kapitel-/Audiobook-Metadaten - `Audiobooks`: spezialisierter AAX-Workflow mit Activation Bytes, Kapitelmetadaten und Kapiteltemplates
+45
View File
@@ -0,0 +1,45 @@
# Hardware
Die Seite `Hardware` ist die ausführliche Detailansicht für das Live-Monitoring aus dem `Ripper`.
## Was die Seite zeigt
- aktuelle CPU-Auslastung
- RAM-Auslastung
- GPU-Auslastung und VRAM, falls vorhanden
- Temperaturen
- Verlaufshistorie für Auslastung und Temperatur
- Zeitfenster für `1h`, `6h`, `24h`, `4d`
## Live-Bereich
Oben zeigt die Seite:
- ob Monitoring aktiv ist
- aktuelles Polling-Intervall
- Zeitpunkt der letzten Messung
Wenn Monitoring deaktiviert ist, führt die Seite direkt zu `Settings`.
## Historie
Die Historie lädt Messpunkte aus dem Backend und zeigt:
- Auslastung als Linienchart
- Temperatur als Linienchart
- umschaltbare Serien für CPU, RAM und GPU
Das ist besonders nützlich bei:
- mehreren parallelen Encodes
- Fehlersuche bei Hitzespitzen
- Abschätzung, ob weitere Jobs sinnvoll gestartet werden können
## Relevante Settings
- `Hardware Monitoring aktiviert`
- `Hardware Monitoring Intervall (ms)`
Außerdem sinnvoll:
- `Externe Speicher`, damit Speicherstände im `Ripper` sinnvoll angezeigt werden
+37 -38
View File
@@ -6,7 +6,7 @@
Filter und Arbeitsmittel: Filter und Arbeitsmittel:
- Suche (Titel, IMDb, Kontextbegriffe) - Suche
- Statusfilter - Statusfilter
- Mediumfilter - Mediumfilter
- Sortierung - Sortierung
@@ -14,62 +14,61 @@ Filter und Arbeitsmittel:
Jeder Eintrag zeigt auf einen Blick: Jeder Eintrag zeigt auf einen Blick:
- Titel, Jahr, Poster - Titel, Jahr, Poster oder Cover
- Status und Zeitstempel - Status und Zeitstempel
- RAW-/Output-Verfügbarkeit - RAW- und Output-Verfügbarkeit
- Medien- und ggf. Containerhinweise - Medien- und Containerhinweise
## Detaildialog: Was dort zusammenläuft ## Detaildialog
Der Detaildialog bündelt: Der Detaildialog bündelt:
- Metadaten (Film oder Serie) - Metadaten
- Jobstatus und Fehlertexte - Jobstatus und Fehlertexte
- RAW-/Output-Pfade - RAW- und Output-Pfade
- Encode-Plan und Trackauswahl - Encode-Plan und Trackauswahl
- ausgeführte Kommandodetails - ausgeführte Kommandos
- Prozesslog (`Tail` oder vollständig) - Prozesslog
- verfügbare Folgeaktionen
Bei Seriencontainern wird disk-/child-orientiert dargestellt, nicht nur als Einzeljob. Bei Seriencontainern und Multipart-Jobs wird container- und child-orientiert dargestellt.
## Nachbearbeitungsaktionen und Wirkung ## Nachbearbeitungsaktionen
| Aktion | Typischer Einsatz | Technische Wirkung | | Aktion | Typischer Einsatz | Technische Wirkung |
|---|---|---| |---|---|---|
| `OMDb neu zuordnen` | falsches Match, Titel/Jahr korrigieren | Metadatenfelder werden neu geschrieben; Folder-Rename wird best effort angestoßen | | `TMDb neu zuweisen` | falsches Match, anderer Film, andere Staffel | Metadaten werden neu geschrieben; Poster, Jahr und ggf. Ordnername werden best effort aktualisiert |
| `Review neu starten` | neue Track-/Titelbewertung nötig | Mediainfo/Review wird aus RAW neu aufgebaut | | `Review neu starten` | neue Track-/Titelbewertung nötig | Review wird aus vorhandenem RAW neu aufgebaut |
| `RAW neu encodieren` | neuer Encode aus vorhandenem RAW | startet Encode ohne neuen Laufwerks-Rip | | `RAW neu encodieren` | neuer Encode mit vorhandenem RAW | startet Encode ohne neuen Disc-Rip |
| `Encode neu starten` | gleiche bestätigte Auswahl erneut fahren | letzter bestätigter Plan wird geladen, optional mit Bereinigung unvollständiger Ausgabe | | `Encode neu starten` | gleiche bestätigte Auswahl erneut fahren | letzter bestätigter Plan wird geladen |
| `Retry Rippen` | Rip/Analyse neu anstoßen | neuer Rip-Lauf, inkl. erneuter RAW-Phase | | `Retry Rippen` | Rip oder Analyse erneut anstoßen | neuer Rip-Lauf inklusive RAW-Phase |
Löschaktionen im Dialog: Relevante Settings:
- `RAW löschen` - `handbrake_restart_delete_incomplete_output`
- `Movie löschen` - `generate_nfo_after_encode`
- `Beides löschen`
- `Historieneintrag löschen`
## Löschvorschau und selektives Löschen ## Löschaktionen und Vorschau
Vor endgültigem Löschen zeigt Ripster eine Vorschau mit: Vor dem endgültigen Löschen zeigt Ripster eine Vorschau mit:
- `RAW`-Kandidaten - RAW-Kandidaten
- `Movie`-/Episoden-Kandidaten - Movie-/Episode-Kandidaten
- Related-Scope (Container/Kinder/verbundene Jobs) - Related-Scope für Container, Kinder und verbundene Jobs
Wichtige Punkte: Wichtige Punkte:
- Pfade sind selektierbar. - Pfade sind selektierbar
- Für RAW-Löschung muss bei Mehrfachkandidaten mindestens ein RAW-Pfad gewählt werden. - bei mehreren RAW-Kandidaten muss mindestens ein RAW-Pfad gewählt werden
- Schutzlogik verhindert Löschungen außerhalb erlaubter Root-Verzeichnisse. - Schutzlogik verhindert Löschungen außerhalb erlaubter Root-Verzeichnisse
## Serien- und Multipart-Sicht in der Historie ## Serien- und Multipart-Sicht
### Serien ### Serien
- Container zeigt aggregierten Zustand aus Child-Jobs. - Container zeigt den aggregierten Zustand der Child-Jobs
- Disk-/Episode-Aktionen können child-spezifisch ausgeführt werden. - Disk- und Episodenaktionen können child-spezifisch ausgeführt werden
- `Im Ripper öffnen` hilft bei `Bereit zum Encodieren`-Kindern. - `Im Ripper öffnen` hilft bei offenen Reviews
### Multipart ### Multipart
@@ -79,11 +78,11 @@ Wichtige Punkte:
## Logs sinnvoll nutzen ## Logs sinnvoll nutzen
- `Tail laden (800)` für schnellen Fehlerkontext - `Tail laden` für schnellen Fehlerkontext
- `Vollständiges Log laden` für forensische Analyse - `Vollständiges Log laden` für tiefe Analyse
Empfehlung: Empfehlung:
1. Erst Tail prüfen. 1. erst den Tail prüfen
2. Bei Pfad-/Toolproblemen vollständiges Log laden. 2. dann die Stelle im Log eingrenzen
3. Danach passende Wiederanlauf-Aktion wählen. 3. anschließend die passende Wiederanlauf-Aktion wählen
+23 -14
View File
@@ -6,28 +6,37 @@ Dieses Kapitel ist das Bedienhandbuch für die Oberflächen im Alltag.
| Seite | Rolle im Betrieb | Typischer Einsatz | | Seite | Rolle im Betrieb | Typischer Einsatz |
|---|---|---| |---|---|---|
| [Ripper](ripper.md) | Live-Steuerung der Pipeline | Disc-Flow starten, Queue steuern, Review freigeben | | [Ripper](ripper.md) | Live-Steuerung der Disc-Pipeline | Disc erkennen, Analyse starten, Entscheidungen treffen, Queue steuern |
| [Audiobooks](audiobooks.md) | AAX-Spezialflow | Upload, Jobkonfiguration und Encode von Audiobooks | | [Hardware](hardware.md) | Detailansicht für Live-Monitoring | CPU/RAM/GPU und Verlauf prüfen |
| [Settings](settings.md) | Konfiguration/Automatisierung | Pfade, Tools, Queue-Limits, Skripte, Cron | | [Audiobooks](audiobooks.md) | AAX-Spezialflow | Upload, Kapitelprüfung und Encode von Audiobooks |
| [Historie](history.md) | Nachbearbeitung und Kontrolle | Logs, Re-Encode, Löschvorschau, Recovery-Aktionen | | [Settings](settings.md) | Konfiguration und Automatisierung | Pfade, Tools, Queue, Presets, Skripte, Cron |
| [Historie](history.md) | Nachbearbeitung und Kontrolle | Logs, Re-Encode, TMDb-Neuzuordnung, Löschvorschau |
| [Converter](converter.md) | dateibasierte Konvertierung | Video/Audio/ISO ohne Disc-Rip verarbeiten | | [Converter](converter.md) | dateibasierte Konvertierung | Video/Audio/ISO ohne Disc-Rip verarbeiten |
| [Downloads](downloads.md) | ZIP-Exports | RAW/Output aus Historie bereitstellen | | [Downloads](downloads.md) | ZIP-Exports | RAW/Output aus der Historie bereitstellen |
| [Database (Expert)](database.md) | Recovery-Sicht | orphan RAW finden und importieren | | [Database (Expert)](database.md) | Recovery-Sicht | orphan RAW finden, prüfen und importieren |
| [TMDb Migration](tmdb-migration.md) | Sonderseite für Altbestände | alte Jobs gesammelt auf TMDb umstellen |
## Empfohlener Tagesablauf ## Empfohlener Tagesablauf
1. `Ripper` oder `Converter`/`Audiobooks`: neue Arbeit starten. 1. `Ripper`, `Converter` oder `Audiobooks`: neue Arbeit starten
2. `Historie`: Ergebnisse validieren und ggf. nachbearbeiten. 2. `Historie`: Ergebnisse kontrollieren und ggf. nachbearbeiten
3. `Downloads`: Exporte für externe Übergabe erzeugen. 3. `Downloads`: Artefakte für externe Übergabe vorbereiten
4. `Settings`: Regeln und Limits nur kontrolliert anpassen. 4. `Settings`: Regeln, Presets oder Limits nur kontrolliert anpassen
5. `Hardware`: bei Lastspitzen oder Batch-Läufen den Verlauf prüfen
## Navigation ## Navigation
Direkt in der Top-Navigation: Direkt in der Top-Navigation:
- `Ripper`, `Converter`, `Audiobooks`, `Settings`, `Historie`, `Downloads` - `Ripper`
- `Converter`
- `Audiobooks`
- `Settings`
- `Historie`
- `Downloads`
Nur per URL: Zusatzansichten:
- `Database` unter `/database` (nur Expertenmodus in der Navigation sichtbar) - `Hardware` unter `/hardware`
- `TMDb Migration` unter `/tmdb-migration` (Direktlink, nicht in der Navigation) - `Database` unter `/database` und im Expertenmodus zusätzlich in der Navigation
- `TMDb Migration` unter `/tmdb-migration` als Direktlink
+121 -71
View File
@@ -1,68 +1,76 @@
# Ripper # Ripper
Die Seite `Ripper` ist die Live-Steuerung der Pipeline. Hier laufen Disc-Erkennung, Queue-Steuerung, Review und Encode-Start zusammen. Die Seite `Ripper` ist die Live-Steuerung der Disc-Pipeline. Hier laufen Disc-Erkennung, Queue, manuelle Entscheidungen, Review und aktive Jobs zusammen.
## Seitenaufbau und Betriebslogik ## Seitenaufbau
Die Bereiche erscheinen in dieser Reihenfolge: Die wichtigsten Bereiche:
1. `Hardware Monitoring` 1. `Hardware`
2. `Job Queue` 2. `Job Queue`
3. `Skript- / Cron-Status` 3. `Skript- / Cron-Status`
4. `Job Übersicht` 4. `Job Übersicht`
5. `Disk-Information` 5. `Disk-Information`
## 1) Hardware Monitoring ## 1. Hardware
Zeigt kontinuierlich: Die Hardware-Karte zeigt live:
- CPU / RAM - CPU
- GPU (wenn verfügbar) - RAM
- freie Speicherstände konfigurierter Pfade - GPU, falls vorhanden
- freie Speicherstände der konfigurierten Pfade
Nutzen im Betrieb: Aktionen:
- Engpässe vor Jobfehlern erkennen - Klick auf das Hardware-Symbol öffnet die Seite [Hardware](hardware.md)
- Pfadfüllstände vor Start großer Batchs prüfen
Gesteuert über `Settings`: Relevante Settings:
- `Hardware Monitoring aktiviert` - `Hardware Monitoring aktiviert`
- `Hardware Monitoring Intervall (ms)` - `Hardware Monitoring Intervall (ms)`
- `Externe Speicher`
## 2) Job Queue ## 2. Job Queue
Es gibt zwei operative Zonen: Es gibt zwei operative Zonen:
- `Laufende Jobs` - laufende Jobs
- `Warteschlange` - Warteschlange
Mögliche Queue-Einträge: Mögliche Queue-Einträge:
- Job-Startaktionen (`Start`, `Retry Rippen`, `RAW neu encodieren`, `Encode neu starten`, `Review neu berechnen`, `Audio CD starten`) - normale Job-Starts
- Nicht-Job-Einträge (`Skript`, `Skriptkette`, `Warten`) - `Retry Rippen`
- `RAW neu encodieren`
- `Encode neu starten`
- `Review neu starten`
- `Audio CD starten`
- `Skript`
- `Skriptkette`
- `Warten`
Wichtige Regeln: Wichtige Regeln:
- Queue-Reihenfolge ist per Drag-and-Drop änderbar. - Reihenfolge ist per Drag-and-Drop änderbar
- `Warten` blockiert nachfolgende Queue-Starts bis kein aktiver Prozess mehr läuft. - `Warten` blockiert nachfolgende Starts, bis keine aktive Verarbeitung mehr läuft
- `Skript` und `Skriptkette` werden als Queue-Einträge mitgeführt. - Queue-Einträge können auch ohne Medienjob existieren
Parallelität kommt aus `Settings`: Relevante Settings:
- `Max. parallele Film/Video Encodes` - `Parallele Jobs`
- `Max. parallele Audio CD Jobs` - `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt` - `Max. Encodes gesamt (medienunabhängig)`
- optional `Audio CDs: Queue-Reihenfolge überspringen` - `Audio CDs: Queue-Reihenfolge überspringen`
## 3) Skript- / Cron-Status ## 3. Skript- / Cron-Status
Zeigt Runtime-Aktivitäten: Zeigt Runtime-Aktivitäten:
- laufende Skripte - laufende Skripte
- laufende Ketten - laufende Ketten
- Cron-Ausführungen - Cron-Ausführungen
- letzte abgeschlossene Aktivitäten - kürzlich abgeschlossene Aktivitäten
Aktionen: Aktionen:
@@ -70,66 +78,103 @@ Aktionen:
- `Abbrechen` - `Abbrechen`
- `Liste leeren` - `Liste leeren`
## 4) Job Übersicht ## 4. Job Übersicht
Die Jobliste ist der zentrale Arbeitsbereich. Ein Klick öffnet den jeweiligen `Pipeline-Status`. Die Jobliste ist der zentrale Arbeitsbereich. Ein Klick öffnet den jeweiligen `Pipeline-Status`.
### Badges und Kontext ### Zustandsabhängige Hauptaktionen
Neben Status/Fortschritt zeigt die Liste je nach Job: | Zustand | Typische Aktion | Ergebnis |
- Serienkontext (`Serien-Container`, Staffel/Disk)
- Multipart-Kontext (`Multipart Movie`, Disc-Nr.)
- Queue-/Subjob-Kontext bei Serien-Episoden
### Zustandsabhängige Aktionen
| Zustand | Hauptaktion im Ripper | Ergebnis |
|---|---|---| |---|---|---|
| `Medium erkannt`, `Bereit` | `Analyse starten` | startet MakeMKV-Analyse | | `Medium erkannt` | `Analyse starten` | MakeMKV-Analyse beginnt |
| `Metadatenauswahl` | `Metadaten öffnen` | Film/Serie auswählen, Provider festlegen | | `Metadatenauswahl` | `Metadaten öffnen` | TMDb-Dialog für Film/Serie |
| `Warte auf Auswahl` | Playlist/Titel/RAW-Entscheidung bestätigen | setzt Flow fort zur Prüfung | | `Warte auf Auswahl` | Entscheidung bestätigen | Flow geht an die passende Stelle weiter |
| `Startbereit` | `Job starten` | startet Rip oder RAW-basierte Prüfung | | `Startbereit` | `Job starten` | Rip oder RAW-basierte Prüfung startet |
| `Bereit zum Encodieren` | `Encoding starten` | startet HandBrake mit bestätigter Auswahl | | `Bereit zum Encodieren` | `Encoding starten` | HandBrake startet mit bestätigter Auswahl |
| Laufend (`Analyse`, `Rippen`, `Encodieren`) | `Abbrechen` | setzt Job auf `Abgebrochen` | | laufend | `Abbrechen` | Job wird gestoppt |
| `Fehler`, `Abgebrochen` | `Retry Rippen` | neuer Rip-Anlauf | | `Fehler` / `Abgebrochen` | `Retry Rippen` | neuer Rip-Anlauf |
Zusatzaktionen je nach Zustand und Jobtyp: ### Was `Warte auf Auswahl` heute bedeuten kann
- `Review neu starten` Der Status ist nicht nur für eine einzige Entscheidung da. Im aktuellen Stand gibt es drei typische Fälle:
- `Encode neu starten`
- `RAW neu encodieren`
- `Aus Queue löschen`
### Review-Bereich (`Bereit zum Encodieren`) #### Vorhandenes RAW
Hier wird die effektive Encode-Entscheidung festgelegt: Ripster hat zu den Metadaten bereits ein passendes RAW gefunden. Dann entscheidest du:
- Titelwahl - mit RAW weiterarbeiten
- Audio-/Subtitle-Trackselektion - RAW löschen und neu rippen
- User-Preset - in passenden Film-Fällen optional Multipart mit Orphan-RAW bilden
- Pre-/Post-Encode-Skripte und Ketten
- HandBrake-Kommandovorschau
Ohne Bestätigung dieses Blocks startet kein produktiver Encode. #### Playlist-Auswahl
### RAW-Ordnerphasen (sichtbar über Logs/Details) Bei mehrdeutigen Blu-rays oder bestimmten DVD-Fällen musst du eine Playlist bestätigen. Die Liste zeigt unter anderem:
- Playlist-Datei
- Titel-ID
- Laufzeit
- Score
- Empfehlung
- Segment- und Audio-Vorschau
Relevante Settings:
- `Minimale Titellänge (Minuten)`
- `TMDb Runtime-Abzug für Playlistfilter (%)`
- `Bei manueller Auswahl senden` für PushOver
#### Titelauswahl / PlayAll-Grenzfall
Wenn Ripster mehrere HandBrake-Titel als plausibel erkannt hat, musst du einen oder mehrere Titel bestätigen. Bei Serien kann das der Grenzfall `PlayAll oder Doppelfolge?` sein.
## 5. Review-Bereich (`Bereit zum Encodieren`)
Hier triffst du die eigentliche Encode-Entscheidung.
Du legst fest:
- welchen Titel Ripster encodieren soll
- welche Audio-Spuren übernommen werden
- welche Untertitel übernommen, erzwungen oder eingebrannt werden
- welches User-Preset oder HandBrake-Preset verwendet wird
- welche Pre-/Post-Encode-Skripte oder Ketten mitlaufen
Wichtig:
- ohne diese Bestätigung startet kein produktiver Encode
- bei Multipart-Locks können Einstellungen von einer Referenz-Disc übernommen und gesperrt sein
### Welche Settings hier direkt sichtbar werden
- `HandBrake Preset`
- `HandBrake Extra Args`
- `Review Audio-Sprachen (...)`
- `Review UT-Sprachen (...)`
- `Ausgabeformat`
- Standard-Zuordnungen aus `Settings -> Encode-Presets`
## RAW-Ordnerphasen
Der Ripper arbeitet mit drei RAW-Zuständen: Der Ripper arbeitet mit drei RAW-Zuständen:
- `Incomplete_...` während unvollständigem Rip - `Incomplete_...` während eines unvollständigen Rips
- `Rip_Complete_...` nach erfolgreich abgeschlossenem Rip, vor Encode - `Rip_Complete_...` nach erfolgreichem Rip, vor dem finalen Encode
- ohne Prefix nach erfolgreichem Encode - ohne Prefix nach erfolgreichem Encode
Das ist wichtig für Recovery und Delete-Vorschau. Das ist wichtig für:
## 5) Disk-Information - Recovery
- RAW-Wiederverwendung
- Delete-Preview in `Historie`
## Disk-Information
Zeigt aktuelle Laufwerksdaten: Zeigt aktuelle Laufwerksdaten:
- Device-Pfad - Device-Pfad
- Modell - Modell
- Disc-Label / Mount - Disc-Label
- Mount-Informationen
Aktionen: Aktionen:
@@ -139,13 +184,13 @@ Aktionen:
Hinweis: Hinweis:
- `Laufwerk neu lesen` ist nicht mehr an einen festen Pipeline-State gebunden. - `Laufwerk neu lesen` ist nicht mehr an einen festen Pipeline-State gebunden
## Wichtige Dialoge ## Wichtige Dialoge
### Metadaten auswählen ### Metadaten auswählen
Im Dialog werden Film-/Serienmetadaten bestätigt. Im Dialog bestätigst du Film- oder Serienmetadaten aus TMDb.
Sonderfälle: Sonderfälle:
@@ -154,7 +199,7 @@ Sonderfälle:
### Vorhandenes RAW erkannt ### Vorhandenes RAW erkannt
Wenn passendes RAW existiert, fordert der Dialog eine explizite Entscheidung: Wenn zu den Metadaten bereits RAW existiert, fordert Ripster eine explizite Entscheidung:
- vorhandenes RAW verwenden - vorhandenes RAW verwenden
- RAW verwerfen/löschen und neu rippen - RAW verwerfen/löschen und neu rippen
@@ -169,9 +214,14 @@ Du kannst gezielt ab Position einfügen:
### Audible Activation Bytes eintragen ### Audible Activation Bytes eintragen
Wenn für eine AAX-Datei keine Activation Bytes automatisch ermittelt werden können, Wenn für eine AAX-Datei keine Activation Bytes verfügbar sind, öffnet Ripster einen Dialog zur manuellen Eingabe.
öffnet Ripster einen Dialog zur manuellen Eingabe.
- Eingabeformat: genau 8 Hex-Zeichen (z.B. `1a2b3c4d`) - Format: genau 8 Hex-Zeichen, z. B. `1a2b3c4d`
- Speicherung: lokal im Activation-Bytes-Cache - Speicherung: lokal im Activation-Bytes-Cache
- Wirkung: nach dem Speichern kann der Audiobook-Flow fortgesetzt werden - Wirkung: der Audiobook-Flow kann anschließend fortgesetzt werden
## Siehe auch
- [Hardware](hardware.md)
- [Settings](settings.md)
- [Workflows aus Nutzersicht](../workflows/index.md)
+189 -75
View File
@@ -1,82 +1,198 @@
# Settings # Settings
Die Seite `Settings` ist das zentrale Kontrollpanel für Laufzeitverhalten, Automatisierung und Expertenfunktionen. Die Seite `Settings` ist das Kontrollzentrum für Laufzeitverhalten, Standardwerte und Automatisierung. Alles, was spätere Jobs automatisch tun oder vorschlagen, wird hier vorbereitet.
## Tab-Überblick ## Tab-Überblick
| Tab | Zweck | | Tab | Zweck |
|---|---| |---|---|
| `Konfiguration` | Alle fachlichen Settings (Pfade, Tools, Laufwerk, Metadaten, Monitoring, Benachrichtigungen, Converter) | | `Konfiguration` | alle fachlichen Einstellungen aus der GUI |
| `Scripte` | Einzelne Bash-Skripte pflegen, testen und sortieren | | `Scripte` | einzelne Bash-Skripte anlegen, testen und sortieren |
| `Skriptketten` | Mehrstufige Sequenzen aus `Skript` und `Warten` bauen und testen | | `Skriptketten` | mehrstufige Abläufe aus Skript- und Warte-Schritten bauen |
| `Encode-Presets` | Benutzer-Presets und Standard-Zuordnungen für Blu-ray/DVD-Workflows | | `Encode-Presets` | eigene Video-Presets und Standard-Zuordnungen pflegen |
| `Cronjobs` | Zeitgesteuerte Jobs auf Basis Skript/Skriptkette | | `Cronjobs` | zeitgesteuerte Ausführung von Skripten oder Ketten |
## Tab `Konfiguration` ## Tab `Konfiguration`
### Bedienlogik ### Bedienlogik
1. Felder ändern. 1. Felder ändern
2. `Änderungen speichern` klicken. 2. `Änderungen speichern` klicken
3. Erst dann werden Änderungen persistiert und für neue Pipeline-Schritte wirksam. 3. erst dann gelten die neuen Werte für künftige Starts, Reviews oder Scheduler
Aktionen in der Toolbar: Ausnahmen:
- `Änderungen speichern`: schreibt nur geänderte Felder als Bulk-Update. - `Expertenmodus` wird sofort gespeichert
- `Änderungen verwerfen`: setzt den Formularzustand auf zuletzt geladen/zum Server gespeicherten Stand zurück. - Buttons wie `PushOver Test`, `Coverarts prüfen` oder der MakeMKV-Betakey-Import lösen direkte Aktionen aus
- `Neu laden`: lädt Kategorien + Werte erneut vom Backend.
- `PushOver Test`: sendet eine Testnachricht mit aktuellen PushOver-Werten.
- `Coverarts prüfen`: startet die manuelle Coverart-Recovery.
- `Expertenmodus`: wird sofort gespeichert (nicht Teil des normalen Bulk-Speicherns).
### Wichtige UI-Verhalten ### Toolbar-Aktionen
- Jede Einstellung zeigt `Gespeichert` oder `Ungespeichert` direkt am Feld. - `Änderungen speichern`: schreibt nur geänderte Felder
- Pflichtfelder sind mit `*` markiert. - `Änderungen verwerfen`: setzt den Formularzustand zurück
- Bei Validierungsfehlern wird pro Feld ein Fehlertext angezeigt und Speichern blockiert. - `Neu laden`: lädt Schema und Werte neu
- Tool-Kommandos (`makemkv_command`, `mediainfo_command`, `handbrake_command`, `ffmpeg_command`, `ffprobe_command`, `cdparanoia_command`, `mkvmerge_command`) sind im Formular schreibgeschützt markiert. - `PushOver Test`: sendet eine Testnachricht mit den aktuellen PushOver-Werten
- Einige Felder sind abhängig vom Expertenmodus sichtbar. - `Coverarts prüfen`: startet den Coverart-Recovery-Lauf sofort
### Was die Kategorien im Alltag steuern
#### Benachrichtigungen
Hier steuerst du zwei Dinge:
- ob und wohin Ripster PushOver-Nachrichten sendet
- bei welchen Ereignissen Ripster überhaupt benachrichtigt
Wichtig:
- `PushOver aktiviert` ist der Master-Schalter
- `Bei manueller Auswahl senden` ist besonders relevant für Playlist-, RAW- oder Titelentscheidungen
- der `Expertenmodus` blendet zusätzliche technische Felder in der gesamten Settings-Seite ein
#### Laufwerk
Diese Kategorie beeinflusst, wie Ripster optische Laufwerke findet und überwacht.
Typische Fragen:
- Soll Ripster Laufwerke automatisch erkennen?
- Soll ein bestimmtes Laufwerk fest an einen MakeMKV-Index gebunden werden?
- Soll das Laufwerk nach erfolgreichem Rip automatisch auswerfen?
Das ist vor allem wichtig bei:
- mehreren Laufwerken
- USB-SATA-Adaptern
- Hosts mit instabilen Device-Namen
#### Logging
Diese Felder ändern nicht die Job-Logs auf Platte, sondern die Ausgabe im Server-Terminal.
Damit steuerst du zum Beispiel:
- ob `start.sh` oder ein Terminal-Run sehr gesprächig sein darf
- ob HTTP-Requests im Terminal sichtbar sein sollen
- ob DEBUG/INFO/WARN/ERROR dort mitlaufen
#### Metadaten
Hier legst du fest, wie Ripster mit TMDb, Covern und NFO-Dateien umgeht.
Besonders wichtig:
- ohne `TMDb Read Access Token` funktionieren Film-/Seriensuche und Neu-Zuordnung nur eingeschränkt oder gar nicht
- `Film-Sprache` und `Fallback Sprache` bestimmen, welche Titel, Beschreibungen und Staffelinformationen bevorzugt werden
- `Coverart-Nachladen aktiv` hilft bei nachträglich fehlenden Postern/Covern
#### Monitoring
Steuert das Hardware-Monitoring für:
- CPU
- RAM
- GPU
- Speicherstände
Diese Werte erscheinen:
- kompakt im `Ripper`
- ausführlich in der Seite `Hardware`
#### Pfade
Hier legst du fest, wohin Ripster schreibt und wie Dateien benannt werden.
Die Felder steuern:
- RAW-Verzeichnisse pro Medium
- Zielordner für Filme, Serien, CDs, Audiobooks, Converter und Downloads
- Eigentümer per `user:gruppe`
- Templates für Datei- und Ordnernamen
Praxisbeispiele:
- Serien getrennt von Filmen ablegen
- RAW auf große HDD, Final-Output auf NAS
- Audiobooks kapitelweise in Unterordnern strukturieren
#### Converter
Diese Kategorie wirkt nur auf die Seite `Converter`.
Sie steuert:
- welche Dateiendungen der Upload und der Verzeichnisscan akzeptieren
- ob der Converter-RAW-Baum automatisch neu gescannt wird
- wie häufig dieses Polling läuft
#### Tools
Diese Kategorie entscheidet über das technische Verhalten der eigentlichen Pipeline.
Dazu gehören:
- Pfade/Befehle für externe Tools
- MakeMKV-Filter und Rip-Modi
- HandBrake-Presets und Extra-Args
- Vorauswahl von Audio-/Untertitelsprachen in der Review
- Ausgabeformate
- Queue- und Parallelitätsregeln
- Timeout für Script-Tests
Für die Nutzer-Workflows besonders relevant:
- `Minimale Titellänge (Minuten)`
- `TMDb Runtime-Abzug für Playlistfilter (%)`
- `HandBrake Preset` und `HandBrake Extra Args`
- `Review Audio-Sprachen (...)`
- `Review UT-Sprachen (...)`
- `Parallele Jobs`
- `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt (medienunabhängig)`
### Kategorie `Pfade`: Besondere Interaktion ### Kategorie `Pfade`: Besondere Interaktion
Die Pfad-Kategorie hat eine eigene Darstellung: Die Pfad-Kategorie hat eine eigene Darstellung:
- Tabelle `Effektive Pfade`: zeigt die aktuell tatsächlich aufgelösten Laufzeitpfade inkl. Fallbacks. - Tabelle `Effektive Pfade`: zeigt die aktuell wirklich verwendeten Laufzeitpfade inklusive Fallbacks
- Accordion je Bereich (`Blu-ray`, `DVD`, `CD / Audio`, `Audiobook`, `Converter`, `Downloads`, optional `Externe Speicher`, `Logs`). - Accordion pro Bereich wie `Blu-ray`, `DVD`, `CD / Audio`, `Audiobook`, `Converter`, `Downloads`, `Logs`
- Für Pfadfelder mit Owner-Pendant (`*_owner`) erscheint direkt darunter das Feld `Eigentümer (user:gruppe)`. - Owner-Felder (`*_owner`) erscheinen direkt beim zugehörigen Pfad
- Owner-Felder sind deaktiviert, solange der zugehörige Pfad leer ist. - Owner-Felder sind deaktiviert, solange der zugehörige Pfad leer ist
### Spezial-Editoren in der Konfiguration ### Spezial-Editoren
- `drive_devices`: JSON-Array wird über UI-Editor gepflegt (Pfad + MakeMKV-Index je Laufwerk). - `drive_devices`: Editor für mehrere Laufwerke mit Pfad und MakeMKV-Index
- `external_storage_paths`: Liste aus `Name` + `Pfad` (für Anzeige freier externer Speicher). - `external_storage_paths`: Liste aus Anzeigename und Pfad für die Speicheranzeige
- `converter_scan_extensions`: Checkbox-Raster der erlaubten Endungen; mindestens eine Endung muss aktiv bleiben. - `converter_scan_extensions`: Auswahl der erlaubten Upload-/Scan-Endungen
- `makemkv_registration_key`: zusätzlicher Betakey-Hinweis mit bernehmen`-Button. - `makemkv_registration_key`: inkl. Betakey-Hinweis und Übernahme-Button
### Laufwerks-Infobox innerhalb `Laufwerk` ### Wichtig für Reviews und Workflows
In der Kategorie `Laufwerk` wird eine Live-Tabelle erkannter optischer Laufwerke angezeigt: Die Seite `Settings` bestimmt direkt, was Nutzer später im Workflow sehen:
- `Neu einlesen` lädt Laufwerksinfos neu. - Playlist-Kandidaten werden durch `Minimale Titellänge` und `TMDb Runtime-Abzug ...` beeinflusst
- Im Expertenmodus: `Freigeben` pro Laufwerk und `Alle Laufwerke freigeben`. - Audio-/Untertitel-Vorauswahlen in `Bereit zum Encodieren` hängen an den Review-Sprachfeldern
- automatisch vorgeschlagene Presets hängen an den Standard-Zuordnungen unter `Encode-Presets`
- Queue-Verhalten im `Ripper` hängt an den drei Parallelitätsfeldern plus `Audio CDs: Queue-Reihenfolge überspringen`
## Tab `Scripte` ## Tab `Scripte`
Funktionen: Funktionen:
- Skript anlegen (Inline-Editor) - Skript anlegen
- Skript bearbeiten (Dialog) - Skript bearbeiten
- Skript löschen (mit Bestätigung) - Skript löschen
- Skript testen - Skript testen
- Reihenfolge per Drag-and-Drop ändern - Reihenfolge per Drag-and-Drop ändern
- Favorit markieren
Testergebnis enthält: Das Testergebnis zeigt:
- Erfolg/Fehler - Erfolg oder Fehler
- Exit-Code - Exit-Code
- Timeout-Info
- Dauer - Dauer
- stdout/stderr - stdout/stderr
- Timeout, falls `Script-Test Timeout (ms)` greift
## Tab `Skriptketten` ## Tab `Skriptketten`
@@ -87,81 +203,79 @@ Skriptketten bestehen aus Schritten:
Funktionen: Funktionen:
- Ketten anlegen/bearbeiten/löschen - Ketten anlegen, bearbeiten, löschen
- Reihenfolge der Ketten per Drag-and-Drop - Reihenfolge der Ketten ändern
- Kette testen - einzelne Ketten testen
- Schritte in der Kette per Drag-and-Drop neu anordnen - Schritte innerhalb der Kette per Drag-and-Drop sortieren
Im Ketteneditor: Wichtig:
- linke Palette (`Systemblöcke`, `Scripte`) - dieselben Skripte können sowohl in Jobs als auch in Ketten und Cronjobs wiederverwendet werden
- rechte Canvas mit Drop-Zonen
- pro Warte-Schritt konfigurierbare Sekunden
## Tab `Encode-Presets` ## Tab `Encode-Presets`
Bereiche: Hier werden Video-Standards für Disc- und Converter-Workflows verwaltet.
1. `Standard-Zuordnungen` (Slots)
2. `Preset-Liste` (CRUD)
### Standard-Zuordnungen ### Standard-Zuordnungen
Es gibt vier persistente Slots: Es gibt vier feste Slots:
- `bluray_movie` - `Blu-ray Film`
- `bluray_series` - `Blu-ray Serie`
- `dvd_movie` - `DVD Film`
- `dvd_series` - `DVD Serie`
Die Auswahl ist medientyp-kompatibel gefiltert. Nicht kompatible oder fehlende bereits gespeicherte IDs werden weiterhin sichtbar gemacht, damit bestehende Zuordnungen nachvollziehbar bleiben. Wenn für einen Workflow hier ein Default gesetzt ist, erscheint dieses User-Preset später in der Review bereits vorausgewählt.
### Preset-Inhalt ### Preset-Inhalt
Ein Preset umfasst: Ein User-Preset besteht aus:
- Name - Name
- Medientyp (`all`, `bluray`, `dvd`) - Medientyp (`all`, `bluray`, `dvd`)
- HandBrake-Preset (`-Z`) - HandBrake-Preset
- Extra Args - Extra Args
- optionale Beschreibung - optionaler Beschreibung
## Tab `Cronjobs` ## Tab `Cronjobs`
Funktionen: Funktionen:
- Cronjob erstellen/bearbeiten/löschen - Cronjob anlegen, bearbeiten, löschen
- Debounced Validierung des Cron-Ausdrucks - Cron-Ausdruck live validieren
- Quelle wählen: `Skript` oder `Skriptkette` - Quelle wählen: `Skript` oder `Skriptkette`
- Aktiv- und PushOver-Toggle je Job - Aktiv- und PushOver-Status pro Job setzen
- `Jetzt ausführen` - `Jetzt ausführen`
- Lauf-Logs öffnen - Lauf-Logs öffnen
Die Seite zeigt zusätzlich Live-Status laufender Cron-Aktivitäten (Runtime Activities). Die Runtime-Aktivitäten der laufenden Cronjobs werden zusätzlich live angezeigt.
## Expertenbereich: Activation Bytes Cache ## Expertenbereich: Activation Bytes Cache
Der Activation-Bytes-Block wird nur im Expertenmodus angezeigt und nur wenn Einträge vorhanden sind. Dieser Block wird nur im Expertenmodus angezeigt.
Er zeigt: Er zeigt lokal bekannte AAX-Activation-Bytes mit:
- AAX-Checksum - Prüfsumme
- Activation Bytes - Activation Bytes
- Speicherzeitpunkt - Speicherzeitpunkt
## Validierungshinweise für Template-Felder Das hilft bei Audiobook-Workflows, wenn dieselbe Datei oder derselbe Hash später erneut auftaucht.
## Validierung von Template-Feldern
Template-Felder akzeptieren nur: Template-Felder akzeptieren nur:
- Buchstaben/Ziffern - Buchstaben und Ziffern
- Leerzeichen - Leerzeichen
- `_` und `-` - `_` und `-`
- Platzhalter in `{...}` bzw. `${...}` - Platzhalter in `{...}` oder `${...}`
- `/` für Ordnertrennung - `/` für Unterordner
Nicht erlaubt sind z. B. unvollständige geschweifte Klammern oder sonstige Sonderzeichen. Damit verhindert Ripster fehlerhafte Dateinamen schon beim Speichern.
## Siehe auch ## Siehe auch
- [Einstellungsreferenz](../configuration/settings-reference.md) - [Alle Einstellungen](../configuration/settings-reference.md)
- [Ripper](ripper.md) - [Ripper](ripper.md)
- [Workflows aus Nutzersicht](../workflows/index.md)
+52
View File
@@ -0,0 +1,52 @@
# TMDb Migration
Die Seite `TMDb Migration` ist eine Sonderansicht für ältere Bestandsjobs, die noch nicht als auf TMDb migriert markiert sind.
## Zugriff
- Direktlink: `/tmdb-migration`
- nicht in der normalen Top-Navigation verlinkt
## Wofür die Seite gedacht ist
Typische Einsatzfälle:
- Altbestand aus früheren Ständen bereinigen
- mehrere Jobs nacheinander auf aktuelle TMDb-Metadaten umstellen
- Historie konsistent auf den heutigen Metadaten-Workflow bringen
## Funktionsweise
Die Seite lädt offene Migrationskandidaten und zeigt:
- Job-ID
- Titel
- Jahr
- Medium
- aktuellen Status
Aktionen:
- `Liste neu laden`
- `Start`
- `Stop`
## Ablauf einer Sequenz
1. Jobliste laden
2. `Start`
3. der bekannte TMDb-Metadaten-Dialog öffnet sich für den ersten Job
4. nach erfolgreicher Übernahme plant Ripster den nächsten Job mit Cooldown
Wichtig:
- zwischen zwei Jobs liegt bewusst eine Wartezeit von mindestens 10 Sekunden
- damit wird die TMDb-API bei Serienmigrationen nicht unnötig belastet
## Relevante Settings
- `TMDb Read Access Token`
- `Film-Sprache`
- `Fallback Sprache`
Ohne diese Einstellungen ist die Migration nicht sinnvoll nutzbar.
+10 -2
View File
@@ -44,7 +44,8 @@ Dann muss eine Playlist bestätigt werden, bevor der Workflow weiterläuft.
| Feld in `Settings` | Wirkung | | Feld in `Settings` | Wirkung |
|---|---| |---|---|
| `Minimale Titellaenge (Minuten)` | Mindestlaufzeit für Kandidaten | | `Minimale Titellänge (Minuten)` | Mindestlaufzeit für Kandidaten aus MakeMKV/Playlist-Analyse |
| `TMDb Runtime-Abzug für Playlistfilter (%)` | lockert bei Bedarf die untere Laufzeitgrenze relativ zur TMDb-Laufzeit, damit leicht kürzere Hauptfassungen Kandidaten bleiben |
Default ist aktuell `60` Minuten. Default ist aktuell `60` Minuten.
@@ -52,7 +53,14 @@ Default ist aktuell `60` Minuten.
## UI-Verhalten ## UI-Verhalten
Bei manueller Entscheidung zeigt das Ripper Kandidaten inkl. Score/Bewertung und markiert eine Empfehlung. Bei manueller Entscheidung zeigt der `Ripper` Kandidaten mit:
- Playlist-Datei
- Titel-ID
- Laufzeit
- Score
- Empfehlung
- Segment- und Audio-Vorschau
Nach Bestätigung: Nach Bestätigung:
+282 -123
View File
@@ -1,207 +1,366 @@
# Workflows aus Nutzersicht # Workflows aus Nutzersicht
Diese Seite beschreibt die produktiven Abläufe als Handbuch: welche Entscheidung an welcher Stelle fällt, welche Objekte dabei entstehen (Job, Container, Child-Job) und welche Dateien in welchen Ordnern landen. Diese Seite beschreibt die produktiven Abläufe aus Sicht der Benutzer: welche Entscheidung wann anfällt, welche Jobs oder Container entstehen und welche Settings den Ablauf sichtbar beeinflussen.
## Gemeinsame Grundlagen ## Gemeinsame Grundlagen
### Statuskette im Normalfall ### Typische Statuskette
`Medium erkannt` -> `Analyse` -> `Metadatenauswahl` -> `Startbereit` -> `Rippen` -> `Mediainfo-Pruefung` -> `Bereit zum Encodieren` -> `Encodieren` -> `Fertig` `Medium erkannt` -> `Analyse` -> `Metadatenauswahl` -> `Startbereit` -> `Rippen` -> `Mediainfo-Prüfung` -> `Bereit zum Encodieren` -> `Encodieren` -> `Fertig`
Abweichungen: Wichtige Abweichungen:
- bei Blu-ray/DVD mit nötiger Playlistwahl: `Mediainfo-Pruefung` -> `Warte auf Auswahl` -> zurück in `Mediainfo-Pruefung` - bei vorhandenem RAW: Sprung direkt in RAW-Entscheidung oder Review
- bei vorhandenem RAW: `Startbereit` springt direkt in Review/Prüfung ohne neuen Laufwerks-Rip - bei mehrdeutigen Blu-rays/DVDs: `Warte auf Auswahl` für Playlist- oder Titelauswahl
- bei Fehler/Abbruch: `Fehler` oder `Abgebrochen` mit Wiederanlauf-Aktionen - bei Fehler oder Abbruch: `Fehler` oder `Abgebrochen` mit Folgeaktionen
- bei Audio-CDs und Audiobooks: eigener Spezialflow innerhalb derselben Gesamtpipeline
### Job- und Container-Typen ### Welche Settings fast überall hineinspielen
| Typ | Zweck | Was enthält der Typ? | Die wichtigsten globalen Einflussfaktoren:
|---|---|---|
| Normaler Disc-Job | Einzel-Film oder einzelne Disc | RAW-Pfad, Output-Pfad, Logs, Review |
| `dvd_series_container` | logischer Serien-Container (pro Serie/Staffel) | Metadatenanker, aggregierter Status über Kinder |
| `dvd_series_child` | einzelne Serien-Disc oder Serien-Episode-Job | eigentliche RAW-/Encode-Arbeit |
| `multipart_movie_container` | logischer Multipart-Film-Container | Zusammenfassung für mehrere Film-Discs |
| `multipart_movie_child` | einzelne Disc innerhalb Multipart-Film | Disc-spezifische RAW-/Encode-Daten |
Wichtig: - `Parallele Jobs`
- `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt (medienunabhängig)`
- `Audio CDs: Queue-Reihenfolge überspringen`
- `PushOver`-Ereignisse
- Pfade, Templates und Owner-Felder
- Container sind primär Ordnungs- und Statusobjekte. Für Disc-Video zusätzlich:
- Dateien (RAW/Output) hängen an den Child-Jobs.
## Workflow A: Film (Blu-ray/DVD) - `Minimale Titellänge (Minuten)`
- `TMDb Runtime-Abzug für Playlistfilter (%)`
- `HandBrake Preset`
- `HandBrake Extra Args`
- `Review Audio-Sprachen (...)`
- `Review UT-Sprachen (...)`
- Standard-Zuordnungen aus `Settings -> Encode-Presets`
### 1) Disc analysieren und Film-Metadaten wählen ## Workflow A: Film von Disc (Blu-ray / DVD)
1. Im `Ripper` `Analyse starten`. ### 1. Disc analysieren und TMDb-Metadaten wählen
2. Im Metadaten-Dialog Film auswählen (OMDb bzw. manuelle Film-Metadaten).
3. `Auswahl übernehmen`. 1. Im `Ripper` `Analyse starten`
2. im Metadaten-Dialog Film auswählen
3. `Auswahl übernehmen`
Wirkung: Wirkung:
- der Job wird als Film-Workflow geführt - der Job wird als Film-Workflow geführt
- Film-Fingerprint für Duplikaterkennung wird gebildet (IMDb oder Titel/Jahr) - Film-Metadaten, Poster und Fingerprint werden gesetzt
### 2) Duplikatfall entscheiden Relevante Settings:
Wenn Film mit gleichem Fingerprint bereits existiert, gibt es zwei Wege: - `TMDb Read Access Token`
- `Film-Sprache`
- `Fallback Sprache`
1. `Übernahme erzwingen` (`allow_new`): neuer unabhängiger Film-Job ### 2. Duplikatfall entscheiden
2. `Multipart movie`: neuer Job wird mit bestehendem Job in einem Multipart-Container verknüpft
Wenn ein Film mit gleichem Fingerprint bereits existiert:
1. `Übernahme erzwingen`: neuer unabhängiger Film-Job
2. `Multipart movie`: neuer Job wird mit bestehendem Film zu einem Multipart-Container verknüpft
Bei Multipart gilt: Bei Multipart gilt:
- beide Discs brauchen unterschiedliche `Disc-Nummer` - beide Discs brauchen unterschiedliche Disc-Nummern
- gleiche Disc-Nummer blockiert den Vorgang (`MULTIPART_DISC_ALREADY_EXISTS`) - gleiche Disc-Nummern blockieren den Vorgang
### 3) RAW-Verzeichnis entsteht ### 3. RAW-Verzeichnis und RAW-Entscheidung
Ordnername basiert auf Metadaten plus Job-ID: Wenn noch kein passendes RAW vorhanden ist:
- `Incomplete_<Titel> (<Jahr>) - RAW - job-<id>` - Ripster legt ein neues RAW-Verzeichnis an
Zustandswechsel des RAW-Ordners: Wenn bereits ein passendes RAW gefunden wird:
- beim Start: `Incomplete_...` - der Job geht in `Warte auf Auswahl`
- nach erfolgreichem Rip: `Rip_Complete_...` - du entscheidest, ob das vorhandene RAW weiterverwendet oder neu gerippt wird
- nach erfolgreichem Encode: Prefix wird entfernt (final)
### 4) Review und Encode Relevante Settings:
In `Bereit zum Encodieren`: - `raw_dir_bluray`, `raw_dir_dvd`
- `raw_dir_bluray_owner`, `raw_dir_dvd_owner`
- Titel wählen ### 4. Playlist- oder Titelauswahl
- Audio-/Subtitle-Spuren festlegen
- optional User-Preset
- optional Pre-/Post-Encode-Skripte oder Ketten
Beim Start: Bei bestimmten Discs ist nach der Metadatenphase eine manuelle Auswahl nötig:
- temporäre Ausgabe in `Incomplete_job-<id>/<Datei>.<ext>` - Playlist-Auswahl
- nach Erfolg Verschiebung in finalen Zielpfad aus Film-Template - HandBrake-Titelauswahl
- bei Serien-Grenzfällen PlayAll- oder Doppelfolgen-Entscheidung
## Workflow B: Serie (Blu-ray/DVD) Das ist der aktuelle `playlistflow`.
### 1) Serienmodus aktivieren Relevante Settings:
1. Disc analysieren. - `Minimale Titellänge (Minuten)`
2. Im Metadaten-Dialog Serienmetadaten wählen (TMDb-basiert). - `TMDb Runtime-Abzug für Playlistfilter (%)`
3. `Disc-Nummer` setzen (Pflicht, ab 1). - `Bei manueller Auswahl senden`
Praxis:
- zu hoher Mindestwert blendet legitime Alternativfassungen aus
- ein kleiner Runtime-Abzug hilft bei Discs, deren Hauptfilm minimal unter der TMDb-Laufzeit liegt
### 5. Review und Encode
Im Zustand `Bereit zum Encodieren` entscheidest du:
- welcher Titel encodiert wird
- welche Audio-Spuren übernommen werden
- welche Untertitel übernommen, erzwungen oder eingebrannt werden
- welches Preset gilt
- welche Pre-/Post-Encode-Skripte oder Ketten mitlaufen
Relevante Settings:
- `HandBrake Preset`
- `HandBrake Extra Args`
- `Review Audio-Sprachen (Blu-ray Film)` oder `Review Audio-Sprachen (DVD Film)`
- `Review UT-Sprachen (Blu-ray Film)` oder `Review UT-Sprachen (DVD Film)`
- `Ausgabeformat`
- Standard-Userpreset für Film unter `Settings -> Encode-Presets`
### 6. Finale Ausgabe
Finale Ausgabe:
- Zielordner: `movie_dir_bluray` oder `movie_dir_dvd`
- Dateiname und Ordner: `output_template_bluray` oder `output_template_dvd`
Optional:
- `.nfo` direkt nach Encode
Relevante Settings:
- `movie_dir_bluray`, `movie_dir_dvd`
- `movie_dir_bluray_owner`, `movie_dir_dvd_owner`
- `output_template_bluray`, `output_template_dvd`
- `generate_nfo_after_encode`
## Workflow B: Serie von Disc (Blu-ray / DVD)
### 1. Serienmodus festlegen
1. Disc analysieren
2. im Metadaten-Dialog Serienmetadaten wählen
3. `Disc-Nummer` setzen
Wirkung: Wirkung:
- Workflow-Kind wird `series` - Ripster arbeitet als Serien-Workflow
- Seriencontainer wird gesucht/angelegt - Seriencontainer wird gesucht oder angelegt
- aktueller Job wird als `dvd_series_child` darunter geführt - der Job wird als Child unter diesem Container geführt
### 2) Seriencontainer und Disc-Konflikte ### 2. Serien-RAW und Staffelkontext
Beim Speichern wird geprüft: Für Serien bevorzugt Ripster eigene Serien-RAW-Verzeichnisse:
- existiert für Serie/Staffel bereits ein Container? - `raw_dir_bluray_series`
- existiert in diesem Container bereits dieselbe `Disc-Nummer`? - `raw_dir_dvd_series`
Wenn ja, wird blockiert (`SERIES_DISC_ALREADY_EXISTS`). Falls leer:
### 3) Serien-RAW-Pfad - Fallback auf `raw_dir_bluray` bzw. `raw_dir_dvd`
Für Serien wird ein eigener RAW-Pfad bevorzugt: ### 3. Episodenprüfung und Multi-Episode-Fälle
- Blu-ray: `raw_dir_bluray_series` (Fallback: `raw_dir_bluray`) In der Review werden Episoden oder Mehrfachfolgen aufgelöst.
- DVD: `raw_dir_dvd_series` (Fallback: `raw_dir_dvd`)
RAW-Namensbasis enthält Staffel/Disc (`SxDy`) und wird ebenfalls mit den Prefix-Phasen geführt: Ausgabevarianten:
- `Incomplete_...` -> `Rip_Complete_...` -> final - Einzel-Episode
- Multi-Episode-Datei
### 4) Serien-Review und Episoden-Ausgabe Relevante Settings:
Beim Review werden Episoden-/Titelzuordnungen genutzt. Je nach Auswahl: - `output_template_bluray_series_episode`
- `output_template_bluray_series_multi_episode`
- `output_template_dvd_series_episode`
- `output_template_dvd_series_multi_episode`
- `series_dir_bluray`
- `series_dir_dvd`
- Einzel-Episode: Episode-Template ### 4. Playlistflow auch bei Serien
- Multi-Episode-Titel: Multi-Episode-Template
Ausgabepfad: Auch Serien können vor der Review in eine Playlist- oder Titelauswahl laufen.
- Root: `series_dir_*` (Fallback auf `movie_dir_*`) Zusätzlich wirken:
- Dateiname/Unterordner aus Serien-Template
### 5) Multi-Episode-Disc als Batch - `Review Audio-Sprachen (Blu-ray Serie)` / `Review Audio-Sprachen (DVD Serie)`
- `Review UT-Sprachen (Blu-ray Serie)` / `Review UT-Sprachen (DVD Serie)`
Wenn mehrere Episoden-Titel aus einer Disc encodiert werden: - Serien-Default-Presets unter `Settings -> Encode-Presets`
- Ripster erzeugt Episode-Child-Jobs
- der ursprüngliche Disc-Job dient als Batch-Anker
- RAW-Finalisierung erfolgt erst, wenn alle Episode-Encodes abgeschlossen sind
## Workflow C: Multipart-Film ## Workflow C: Multipart-Film
### Wann dieser Flow gedacht ist ### Wann der Flow gedacht ist
- gleicher Film auf mehreren Discs (z. B. Disc 1/Disc 2) - gleicher Film auf mehreren Discs
- Zusammengehörigkeit soll in Historie und Detailansichten sichtbar sein - die Discs sollen in Historie und Detailansichten zusammengehören
### Ablauf ### Ablauf
1. Film-Metadaten wählen. 1. Film-Metadaten wählen
2. Duplikatdialog -> `Multipart movie`. 2. Duplikatdialog `Multipart movie`
3. Disc-Nummern für bestehenden und neuen Job festlegen. 3. Disc-Nummern für bestehenden und neuen Job festlegen
Wirkung: Wirkung:
- `multipart_movie_container` wird angelegt oder wiederverwendet - `multipart_movie_container` wird angelegt oder wiederverwendet
- beteiligte Jobs werden `multipart_movie_child` - die Discs werden als Child-Jobs darunter geführt
- Container führt gemeinsame Metadaten, Kinder führen je Disc die eigentlichen Artefakte - zusätzlich wird ein Merge-Job vorbereitet
## Workflow D: Vorhandenes RAW / RAW-Import Relevante Settings:
### Fall 1: RAW bereits vorhanden bei Metadatenübernahme - `mkvmerge_command`
- Film-Output-Templates
- Queue-Limits, falls mehrere Discs parallel weiterverarbeitet werden
Nach Metadaten-Übernahme erkennt Ripster passende RAW-Ordner und setzt den Job auf Entscheidungsstatus. ## Workflow D: Audio-CD
Möglichkeiten: ### 1. TOC lesen und Metadaten wählen
- vorhandenes RAW weiterverwenden (kein neuer Rip) 1. Audio-CD analysieren
- RAW löschen/ignorieren und neu rippen 2. Tracks prüfen
3. Metadaten aus MusicBrainz übernehmen oder manuell anpassen
### Fall 2: Orphan-RAW aus `/database` ### 2. Trackauswahl und Format
1. In `Database` `RAW prüfen`. Vor dem Start legst du fest:
2. Bei orphan RAW `Job anlegen`.
3. Job wird in Historie erzeugt und wie "Disk analysieren aus RAW" weiterverarbeitet.
## Workflow E: Nachbearbeitung bestehender Jobs - welche Tracks übernommen werden
- welches Ausgabeformat gilt
- welche Formatoptionen genutzt werden
- welche Pre-/Post-Encode-Skripte oder Ketten mitlaufen
In `Historie` (Detaildialog): ### 3. Rip und Encode
| Aktion | Wirkung | Die CD läuft anschließend als Track-für-Track-Flow:
|---|---|
| `OMDb neu zuordnen` | Metadaten neu schreiben, Folder-Rename wird best effort angestoßen |
| `Review neu starten` | Titel-/Spurprüfung aus aktuellem RAW neu aufbauen |
| `RAW neu encodieren` | Encode erneut aus vorhandenem RAW starten |
| `Encode neu starten` | letzte bestätigte Review-Einstellungen wiederverwenden |
| `Retry Rippen` | Rip/Analyse neu starten; alter Job-RAW kann bereinigt werden |
## Wo landet was? (Artefakt-Matrix) `CD-Metadatenauswahl` -> `CD-Startbereit` -> `CD-Rippen` -> `CD-Encodieren` -> `Fertig`
| Artefakt | Film | Serie | Multipart | Relevante Settings:
|---|---|---|---|
| RAW | `raw_dir_*` | bevorzugt `raw_dir_*_series` | pro Child-Job im normalen Film-RAW-Schema |
| Finale Ausgabe | `movie_dir_*` + Film-Template | `series_dir_*` (Fallback `movie_dir_*`) + Serien-Templates | pro Child-Job normaler Film-Output |
| Container-Datensatz | nein | ja (`dvd_series_container`) | ja (`multipart_movie_container`) |
| Löschvorschau in Historie | einzelner Job oder Related Scope | Container-/Child-bezogen mit Pfadauswahl | Container-/Child-bezogen mit Pfadauswahl |
## Queue-Verhalten im Alltag - `raw_dir_cd`
- `movie_dir_cd`
Die Startfreigabe hängt an vier Settings: - `raw_dir_cd_owner`
- `movie_dir_cd_owner`
- `Max. parallele Film/Video Encodes` - `cd_output_template`
- `cdparanoia_command`
- `Max. parallele Audio CD Jobs` - `Max. parallele Audio CD Jobs`
- `Max. Encodes gesamt`
- `Audio CDs: Queue-Reihenfolge überspringen` - `Audio CDs: Queue-Reihenfolge überspringen`
Praxis: ## Workflow E: Converter
- Film/Video- und Audio/CD laufen in getrennten Lanes ### 1. Dateien bereitstellen
- Gesamtlimit begrenzt beide gemeinsam
- Queue kann neben Jobs auch `Skript`, `Kette`, `Warten` enthalten Dateien gelangen in den Converter über:
- Upload
- bestehende Ordner im `converter_raw_dir`
- manuelle Dateiverwaltung im Explorer
### 2. Jobs aus Auswahl erzeugen
- Video und ISO: immer ein Job pro Datei
- Audio: ein Job pro Datei oder gemeinsamer Audio-Job
### 3. Job konfigurieren und starten
Je nach Medium:
- Video/ISO: Review mit Track- und Preset-Auswahl
- Audio: direkte Format- und Zielkonfiguration
Relevante Settings:
- `converter_scan_extensions`
- `converter_polling_enabled`
- `converter_polling_interval`
- `converter_raw_dir`
- `converter_movie_dir`
- `converter_audio_dir`
- `converter_output_template_video`
- `converter_output_template_audio`
- globale Queue-Limits
## Workflow F: Audiobooks
### 1. AAX hochladen
1. Datei hochladen
2. Metadaten und Kapitel aufbauen lassen
3. bei Bedarf Activation Bytes klären
### 2. Ausgabeformat wählen
- `m4b`: eine Datei
- `mp3`: eine Datei pro Kapitel
- `flac`: eine Datei pro Kapitel
### 3. Kapitel und Skripte prüfen
Vor dem Start anpassbar:
- Kapitelnamen
- Pre-Encode-Skripte und -Ketten
- Post-Encode-Skripte und -Ketten
Relevante Settings:
- `raw_dir_audiobook`
- `movie_dir_audiobook`
- `audiobook_raw_template`
- `output_template_audiobook`
- `output_chapter_template_audiobook`
- `ffprobe_command`
- `ffmpeg_command`
- globale Queue-Limits
## Workflow G: Nachbearbeitung in der Historie
Typische Folgeaktionen:
- `TMDb neu zuweisen`
- `Review neu starten`
- `RAW neu encodieren`
- `Encode neu starten`
- `Retry Rippen`
- `Download` als ZIP einreihen
Besonders wichtig:
- `Encode neu starten` verwendet den letzten bestätigten Plan
- `handbrake_restart_delete_incomplete_output` entscheidet, ob unvollständige Ausgaben vorher gelöscht werden
## Workflow H: Downloads und Recovery
### Downloads
Aus `Historie` können ZIPs für:
- `RAW`
- `Output`
erstellt werden.
Relevante Settings:
- `download_dir`
- `download_dir_owner`
### Database (Expert)
Die Recovery-Seite hilft bei orphan RAW:
- `RAW prüfen`
- `Job anlegen`
So lassen sich vorhandene RAW-Verzeichnisse wieder in einen normalen Workflow zurückführen.
### TMDb Migration
Für ältere Bestandsjobs gibt es die Sonderseite `/tmdb-migration`, um mehrere Jobs nacheinander auf den heutigen TMDb-Stand zu bringen.
+2
View File
@@ -54,12 +54,14 @@ nav:
- GUI-Seiten: - GUI-Seiten:
- gui/index.md - gui/index.md
- Ripper: gui/ripper.md - Ripper: gui/ripper.md
- Hardware: gui/hardware.md
- Audiobooks: gui/audiobooks.md - Audiobooks: gui/audiobooks.md
- Settings: gui/settings.md - Settings: gui/settings.md
- Historie: gui/history.md - Historie: gui/history.md
- Converter: gui/converter.md - Converter: gui/converter.md
- Downloads: gui/downloads.md - Downloads: gui/downloads.md
- Database (Expert): gui/database.md - Database (Expert): gui/database.md
- TMDb Migration: gui/tmdb-migration.md
- Workflows aus Nutzersicht: workflows/index.md - Workflows aus Nutzersicht: workflows/index.md
- Technischer Anhang: - Technischer Anhang:
- appendix/index.md - appendix/index.md
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+53 -45
View File
@@ -2,182 +2,190 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/</loc> <loc>https://mboehmlaender.github.io/ripster/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/</loc> <loc>https://mboehmlaender.github.io/ripster/api/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/converter/</loc> <loc>https://mboehmlaender.github.io/ripster/api/converter/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/crons/</loc> <loc>https://mboehmlaender.github.io/ripster/api/crons/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/downloads/</loc> <loc>https://mboehmlaender.github.io/ripster/api/downloads/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/history/</loc> <loc>https://mboehmlaender.github.io/ripster/api/history/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/pipeline/</loc> <loc>https://mboehmlaender.github.io/ripster/api/pipeline/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/runtime-activities/</loc> <loc>https://mboehmlaender.github.io/ripster/api/runtime-activities/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/settings/</loc> <loc>https://mboehmlaender.github.io/ripster/api/settings/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/api/websocket/</loc> <loc>https://mboehmlaender.github.io/ripster/api/websocket/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/appendix/</loc> <loc>https://mboehmlaender.github.io/ripster/appendix/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/architecture/</loc> <loc>https://mboehmlaender.github.io/ripster/architecture/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/architecture/backend/</loc> <loc>https://mboehmlaender.github.io/ripster/architecture/backend/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/architecture/database/</loc> <loc>https://mboehmlaender.github.io/ripster/architecture/database/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/architecture/frontend/</loc> <loc>https://mboehmlaender.github.io/ripster/architecture/frontend/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/architecture/overview/</loc> <loc>https://mboehmlaender.github.io/ripster/architecture/overview/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/configuration/</loc> <loc>https://mboehmlaender.github.io/ripster/configuration/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/configuration/environment/</loc> <loc>https://mboehmlaender.github.io/ripster/configuration/environment/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/configuration/settings-reference/</loc> <loc>https://mboehmlaender.github.io/ripster/configuration/settings-reference/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/deployment/</loc> <loc>https://mboehmlaender.github.io/ripster/deployment/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/deployment/development/</loc> <loc>https://mboehmlaender.github.io/ripster/deployment/development/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/deployment/production/</loc> <loc>https://mboehmlaender.github.io/ripster/deployment/production/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/getting-started/</loc> <loc>https://mboehmlaender.github.io/ripster/getting-started/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/getting-started/configuration/</loc> <loc>https://mboehmlaender.github.io/ripster/getting-started/configuration/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/getting-started/installation/</loc> <loc>https://mboehmlaender.github.io/ripster/getting-started/installation/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/getting-started/prerequisites/</loc> <loc>https://mboehmlaender.github.io/ripster/getting-started/prerequisites/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/getting-started/quickstart/</loc> <loc>https://mboehmlaender.github.io/ripster/getting-started/quickstart/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/audiobooks/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/audiobooks/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/converter/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/converter/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/database/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/database/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/downloads/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/downloads/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url>
<url>
<loc>https://mboehmlaender.github.io/ripster/gui/hardware/</loc>
<lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/history/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/history/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/ripper/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/ripper/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/gui/settings/</loc> <loc>https://mboehmlaender.github.io/ripster/gui/settings/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url>
<url>
<loc>https://mboehmlaender.github.io/ripster/gui/tmdb-migration/</loc>
<lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/pipeline/</loc> <loc>https://mboehmlaender.github.io/ripster/pipeline/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/pipeline/encoding/</loc> <loc>https://mboehmlaender.github.io/ripster/pipeline/encoding/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/pipeline/playlist-analysis/</loc> <loc>https://mboehmlaender.github.io/ripster/pipeline/playlist-analysis/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/pipeline/post-encode-scripts/</loc> <loc>https://mboehmlaender.github.io/ripster/pipeline/post-encode-scripts/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/pipeline/workflow/</loc> <loc>https://mboehmlaender.github.io/ripster/pipeline/workflow/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/tools/</loc> <loc>https://mboehmlaender.github.io/ripster/tools/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/tools/handbrake/</loc> <loc>https://mboehmlaender.github.io/ripster/tools/handbrake/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/tools/makemkv/</loc> <loc>https://mboehmlaender.github.io/ripster/tools/makemkv/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/tools/mediainfo/</loc> <loc>https://mboehmlaender.github.io/ripster/tools/mediainfo/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
<url> <url>
<loc>https://mboehmlaender.github.io/ripster/workflows/</loc> <loc>https://mboehmlaender.github.io/ripster/workflows/</loc>
<lastmod>2026-05-08</lastmod> <lastmod>2026-06-12</lastmod>
</url> </url>
</urlset> </urlset>
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long