This commit is contained in:
2026-03-11 15:20:20 +00:00
parent 5576a92c5c
commit e14599fa4d
37 changed files with 331 additions and 333 deletions

1
.gitignore vendored
View File

@@ -51,6 +51,7 @@ yarn-debug.log*
yarn-error.log* yarn-error.log*
pnpm-debug.log* pnpm-debug.log*
debug/ debug/
DATABASE_BLA
# ---------------------------- # ----------------------------
# Env / secrets (keep examples) # Env / secrets (keep examples)
# ---------------------------- # ----------------------------

View File

@@ -7,7 +7,7 @@ Ripster ist eine lokale Web-Anwendung für halbautomatisches Disc-Ripping mit Ma
## Was Ripster kann ## Was Ripster kann
- Disc-Erkennung mit Pipeline-Status in Echtzeit (WebSocket) - Disc-Erkennung mit Pipeline-Status in Echtzeit (WebSocket)
- Medienprofil-Erkennung (`bluray`/`dvd`/`other`) aus Device-/Filesystem-Heuristik - Medienprofil-Erkennung (Blu-ray/DVD/Sonstiges) aus Device-/Filesystem-Heuristik
- Metadaten-Suche und Zuordnung über OMDb - Metadaten-Suche und Zuordnung über OMDb
- MakeMKV-Analyse und Rip (`mkv` oder `backup`) mit profilspezifischen Settings - MakeMKV-Analyse und Rip (`mkv` oder `backup`) mit profilspezifischen Settings
- HandBrake-Review und Encoding mit Track-Auswahl, User-Presets, Extra-Args - HandBrake-Review und Encoding mit Track-Auswahl, User-Presets, Extra-Args
@@ -114,10 +114,10 @@ npm run start
Die meisten Einstellungen werden in der App unter `Settings` gepflegt und in SQLite gespeichert: Die meisten Einstellungen werden in der App unter `Settings` gepflegt und in SQLite gespeichert:
- Pfade: `raw_dir[_bluray/_dvd/_other]`, `movie_dir[_bluray/_dvd/_other]`, `log_dir` - Pfade: `Raw Ausgabeordner`, `Film Ausgabeordner`, `Log Ordner` (jeweils mit Blu-ray/DVD/Sonstiges-Varianten)
- Tools: `makemkv_command`, `handbrake_command`, `mediainfo_command` - Tools: `MakeMKV Kommando`, `HandBrake Kommando`, `Mediainfo Kommando`
- Profile: `*_bluray` / `*_dvd` Varianten für Rip-/Encode-Verhalten - Profile: medientyp-spezifische Felder für Blu-ray/DVD/Sonstiges (z. B. Preset, Zusatzargumente, Ausgabeformat)
- Queue/Monitoring: `pipeline_max_parallel_jobs`, `hardware_monitoring_*` - Queue/Monitoring: `Parallele Jobs`, `Hardware Monitoring aktiviert`, `Hardware Monitoring Intervall (ms)`
- Benachrichtigungen: PushOver - Benachrichtigungen: PushOver
### Umgebungsvariablen ### Umgebungsvariablen
@@ -231,7 +231,7 @@ ripster/
- prüfen, ob Frontend über Vite-Proxy läuft (`/ws` -> Backend) - prüfen, ob Frontend über Vite-Proxy läuft (`/ws` -> Backend)
- bei Reverse-Proxy Upgrade-Header für `/ws` setzen - bei Reverse-Proxy Upgrade-Header für `/ws` setzen
- Keine Disc erkannt: - Keine Disc erkannt:
- `drive_mode=explicit` testen und `drive_device` setzen (z. B. `/dev/sr0`) - in den Settings `Laufwerksmodus` auf `Explizites Device` stellen und `Device Pfad` setzen (z. B. `/dev/sr0`)
- HandBrake/MakeMKV Fehler: - HandBrake/MakeMKV Fehler:
- CLI-Binaries im `PATH` prüfen - CLI-Binaries im `PATH` prüfen
- Preset-Name mit `HandBrakeCLI -z` prüfen - Preset-Name mit `HandBrakeCLI -z` prüfen

View File

@@ -66,7 +66,7 @@ In `App.jsx` werden u. a. verarbeitet:
- `PIPELINE_STATE_CHANGED` - `PIPELINE_STATE_CHANGED`
- `PIPELINE_PROGRESS` - `PIPELINE_PROGRESS`
- `PIPELINE_QUEUE_CHANGED` - `PIPELINE_QUEUE_CHANGED`
- `DISC_DETECTED` / `DISC_REMOVED` - Disk erkannt / Disk entfernt
- `HARDWARE_MONITOR_UPDATE` - `HARDWARE_MONITOR_UPDATE`
--- ---

View File

@@ -33,7 +33,7 @@ WebSocket läuft auf `/ws`.
Wichtige Events: Wichtige Events:
- `PIPELINE_STATE_CHANGED`, `PIPELINE_PROGRESS`, `PIPELINE_QUEUE_CHANGED` - `PIPELINE_STATE_CHANGED`, `PIPELINE_PROGRESS`, `PIPELINE_QUEUE_CHANGED`
- `DISC_DETECTED`, `DISC_REMOVED` - Disk erkannt, Disk entfernt
- `HARDWARE_MONITOR_UPDATE` - `HARDWARE_MONITOR_UPDATE`
- `SETTINGS_UPDATED`, `SETTINGS_BULK_UPDATED` - `SETTINGS_UPDATED`, `SETTINGS_BULK_UPDATED`
- `SETTINGS_SCRIPTS_UPDATED`, `SETTINGS_SCRIPT_CHAINS_UPDATED`, `USER_PRESETS_UPDATED` - `SETTINGS_SCRIPTS_UPDATED`, `SETTINGS_SCRIPT_CHAINS_UPDATED`, `USER_PRESETS_UPDATED`
@@ -83,7 +83,7 @@ Zentrales Error-Handling liefert:
} }
``` ```
Fehlgeschlagene Jobs bleiben in der Historie (`ERROR` oder `CANCELLED`) und können erneut gestartet werden. Fehlgeschlagene Jobs bleiben in der Historie (`Fehler` oder `Abgebrochen`) und können erneut gestartet werden.
--- ---

View File

@@ -1,23 +1,18 @@
# Einstellungsreferenz # Einstellungsreferenz
Alle Settings liegen in `settings_schema`/`settings_values` und werden über die UI verwaltet. Diese Seite listet die Felder so, wie sie in der GUI unter `Settings` angezeigt werden.
Hinweis: Interne Schlüsselnamen werden hier bewusst nicht verwendet. Falls du sie für Integrationen brauchst, nutze die API-Dokumentation.
--- ---
## Profil-System ## Profil-System
Ripster arbeitet mit Media-Profilen: Viele Felder sind pro Medientyp getrennt vorhanden:
- `bluray` - Blu-ray
- `dvd` - DVD
- `other` - Sonstiges
Viele Tool-/Pfad-Settings existieren als Profil-Varianten (`*_bluray`, `*_dvd`, `*_other`).
Wichtig:
- Für `raw_dir`, `movie_dir` und die zugehörigen `*_owner`-Keys gibt es **kein Cross-Profil-Fallback**.
- Für viele Tool-Keys werden profilspezifische Varianten bevorzugt.
--- ---
@@ -35,131 +30,113 @@ Nicht gesetzte Werte werden zu `unknown`.
## Kategorie: Pfade ## Kategorie: Pfade
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `raw_dir` | path | `data/output/raw` | | `Raw Ausgabeordner` | path | `data/output/raw` |
| `raw_dir_bluray` | path | `null` | | `Raw Ausgabeordner (Blu-ray)` | path | `null` |
| `raw_dir_dvd` | path | `null` | | `Raw Ausgabeordner (DVD)` | path | `null` |
| `raw_dir_other` | path | `null` | | `Raw Ausgabeordner (Sonstiges)` | path | `null` |
| `raw_dir_bluray_owner` | string | `null` | | `Eigentümer Raw-Ordner (Blu-ray)` | string | `null` |
| `raw_dir_dvd_owner` | string | `null` | | `Eigentümer Raw-Ordner (DVD)` | string | `null` |
| `raw_dir_other_owner` | string | `null` | | `Eigentümer Raw-Ordner (Sonstiges)` | string | `null` |
| `movie_dir` | path | `data/output/movies` | | `Film Ausgabeordner` | path | `data/output/movies` |
| `movie_dir_bluray` | path | `null` | | `Film Ausgabeordner (Blu-ray)` | path | `null` |
| `movie_dir_dvd` | path | `null` | | `Film Ausgabeordner (DVD)` | path | `null` |
| `movie_dir_other` | path | `null` | | `Film Ausgabeordner (Sonstiges)` | path | `null` |
| `movie_dir_bluray_owner` | string | `null` | | `Eigentümer Film-Ordner (Blu-ray)` | string | `null` |
| `movie_dir_dvd_owner` | string | `null` | | `Eigentümer Film-Ordner (DVD)` | string | `null` |
| `movie_dir_other_owner` | string | `null` | | `Eigentümer Film-Ordner (Sonstiges)` | string | `null` |
| `log_dir` | path | `data/logs` | | `Log Ordner` | path | `data/logs` |
--- ---
## Kategorie: Laufwerk ## Kategorie: Laufwerk
| Key | Typ | Default | Hinweis | | Feldname in der GUI | Typ | Default | Hinweis |
|-----|-----|---------|--------| |---|---|---|---|
| `drive_mode` | select | `auto` | `auto` oder `explicit` | | `Laufwerksmodus` | select | `auto` | `Auto Discovery` oder `Explizites Device` |
| `drive_device` | path | `/dev/sr0` | bei `explicit` relevant | | `Device Pfad` | path | `/dev/sr0` | relevant bei `Explizites Device` |
| `makemkv_source_index` | number | `0` | MakeMKV Source-Index | | `MakeMKV Source Index` | number | `0` | Disc-Index im Auto-Modus |
| `disc_poll_interval_ms` | number | `4000` | 1000..60000 | | `Polling Intervall (ms)` | number | `4000` | 1000..60000 |
--- ---
## Kategorie: Monitoring ## Kategorie: Monitoring
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `hardware_monitoring_enabled` | boolean | `true` | | `Hardware Monitoring aktiviert` | boolean | `true` |
| `hardware_monitoring_interval_ms` | number | `5000` | | `Hardware Monitoring Intervall (ms)` | number | `5000` |
--- ---
## Kategorie: Tools (global) ## Kategorie: Tools (global)
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `makemkv_command` | string | `makemkvcon` | | `MakeMKV Kommando` | string | `makemkvcon` |
| `makemkv_registration_key` | string | `null` | | `MakeMKV Key` | string | `null` |
| `mediainfo_command` | string | `mediainfo` | | `Mediainfo Kommando` | string | `mediainfo` |
| `makemkv_min_length_minutes` | number | `60` | | `Minimale Titellaenge (Minuten)` | number | `60` |
| `handbrake_command` | string | `HandBrakeCLI` | | `HandBrake Kommando` | string | `HandBrakeCLI` |
| `handbrake_restart_delete_incomplete_output` | boolean | `true` | | `Encode-Neustart: unvollständige Ausgabe löschen` | boolean | `true` |
| `pipeline_max_parallel_jobs` | number | `1` | | `Parallele Jobs` | number | `1` |
### Blu-ray-spezifisch ### Blu-ray-spezifisch
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `mediainfo_extra_args_bluray` | string | `null` | | `Mediainfo Extra Args` (Blu-ray) | string | `null` |
| `makemkv_rip_mode_bluray` | select | `backup` | | `MakeMKV Rip Modus` (Blu-ray) | select | `backup` |
| `makemkv_analyze_extra_args_bluray` | string | `null` | | `MakeMKV Analyze Extra Args` (Blu-ray) | string | `null` |
| `makemkv_rip_extra_args_bluray` | string | `null` | | `MakeMKV Rip Extra Args` (Blu-ray) | string | `null` |
| `handbrake_preset_bluray` | string | `H.264 MKV 1080p30` | | `HandBrake Preset` (Blu-ray) | string | `H.264 MKV 1080p30` |
| `handbrake_extra_args_bluray` | string | `null` | | `HandBrake Extra Args` (Blu-ray) | string | `null` |
| `output_extension_bluray` | select | `mkv` | | `Ausgabeformat` (Blu-ray) | select | `mkv` |
| `filename_template_bluray` | string | `${title} (${year})` | | `Dateiname Template` (Blu-ray) | string | `${title} (${year})` |
| `output_folder_template_bluray` | string | `null` | | `Ordnername Template` (Blu-ray) | string | `null` |
### DVD-spezifisch ### DVD-spezifisch
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `mediainfo_extra_args_dvd` | string | `null` | | `Mediainfo Extra Args` (DVD) | string | `null` |
| `makemkv_rip_mode_dvd` | select | `mkv` | | `MakeMKV Rip Modus` (DVD) | select | `mkv` |
| `makemkv_analyze_extra_args_dvd` | string | `null` | | `MakeMKV Analyze Extra Args` (DVD) | string | `null` |
| `makemkv_rip_extra_args_dvd` | string | `null` | | `MakeMKV Rip Extra Args` (DVD) | string | `null` |
| `handbrake_preset_dvd` | string | `H.264 MKV 480p30` | | `HandBrake Preset` (DVD) | string | `H.264 MKV 480p30` |
| `handbrake_extra_args_dvd` | string | `null` | | `HandBrake Extra Args` (DVD) | string | `null` |
| `output_extension_dvd` | select | `mkv` | | `Ausgabeformat` (DVD) | select | `mkv` |
| `filename_template_dvd` | string | `${title} (${year})` | | `Dateiname Template` (DVD) | string | `${title} (${year})` |
| `output_folder_template_dvd` | string | `null` | | `Ordnername Template` (DVD) | string | `null` |
--- ---
## Kategorie: Metadaten ## Kategorie: Metadaten
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `omdb_api_key` | string | `null` | | `OMDb API Key` | string | `null` |
| `omdb_default_type` | select | `movie` | | `OMDb Typ` | select | `movie` |
--- ---
## Kategorie: Benachrichtigungen (PushOver) ## Kategorie: Benachrichtigungen (PushOver)
| Key | Typ | Default | | Feldname in der GUI | Typ | Default |
|-----|-----|---------| |---|---|---|
| `pushover_enabled` | boolean | `false` | | `PushOver aktiviert` | boolean | `false` |
| `pushover_token` | string | `null` | | `PushOver Token` | string | `null` |
| `pushover_user` | string | `null` | | `PushOver User` | string | `null` |
| `pushover_device` | string | `null` | | `PushOver Device (optional)` | string | `null` |
| `pushover_title_prefix` | string | `Ripster` | | `PushOver Titel-Präfix` | string | `Ripster` |
| `pushover_priority` | number | `0` | | `PushOver Priority` | number | `0` |
| `pushover_timeout_ms` | number | `7000` | | `PushOver Timeout (ms)` | number | `7000` |
| `pushover_notify_metadata_ready` | boolean | `true` | | `Bei Metadaten-Auswahl senden` | boolean | `true` |
| `pushover_notify_rip_started` | boolean | `true` | | `Bei Rip-Start senden` | boolean | `true` |
| `pushover_notify_encoding_started` | boolean | `true` | | `Bei Encode-Start senden` | boolean | `true` |
| `pushover_notify_job_finished` | boolean | `true` | | `Bei Erfolg senden` | boolean | `true` |
| `pushover_notify_job_error` | boolean | `true` | | `Bei Fehler senden` | boolean | `true` |
| `pushover_notify_job_cancelled` | boolean | `true` | | `Bei Abbruch senden` | boolean | `true` |
| `pushover_notify_reencode_started` | boolean | `true` | | `Bei Re-Encode Start senden` | boolean | `true` |
| `pushover_notify_reencode_finished` | boolean | `true` | | `Bei Re-Encode Erfolg senden` | boolean | `true` |
---
## Entfernte Legacy-Keys
Diese Legacy-Keys werden bei Migration entfernt und sollten nicht mehr genutzt werden:
- `makemkv_backup_mode`
- `mediainfo_extra_args`
- `makemkv_rip_mode`
- `makemkv_analyze_extra_args`
- `makemkv_rip_extra_args`
- `handbrake_preset`
- `handbrake_extra_args`
- `output_extension`
- `filename_template`
- `output_folder_template`
- `pushover_notify_disc_detected`

View File

@@ -4,9 +4,9 @@
## Automatische Installation (empfohlen) ## Automatische Installation (empfohlen)
Das mitgelieferte `install.sh` richtet Ripster vollautomatisch auf Debian/Ubuntu ein inklusive Node.js, MakeMKV, HandBrake, nginx und systemd-Dienst. Das mitgelieferte `install.sh` richtet Ripster vollautomatisch ein inklusive Node.js, MakeMKV, HandBrake, nginx und systemd-Dienst.
**Unterstützte Systeme:** Debian 11/12, Ubuntu 22.04/24.04 **Unterstützte Systeme laut Script:** Debian, Ubuntu, Linux Mint, Pop!_OS
**Voraussetzung:** root-Rechte, Internetzugang **Voraussetzung:** root-Rechte, Internetzugang
### Schnellstart via curl ### Schnellstart via curl
@@ -28,7 +28,7 @@ wget -qO- https://raw.githubusercontent.com/Mboehmlaender/ripster/main/install.s
| Option | Standard | Beschreibung | | Option | Standard | Beschreibung |
|--------|----------|--------------| |--------|----------|--------------|
| `--branch <branch>` | `main` | Git-Branch für die Installation | | `--branch <branch>` | `dev` | Git-Branch für die Installation |
| `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis | | `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis |
| `--user <benutzer>` | `ripster` | Systembenutzer für den Dienst | | `--user <benutzer>` | `ripster` | Systembenutzer für den Dienst |
| `--port <port>` | `3001` | Backend-Port | | `--port <port>` | `3001` | Backend-Port |
@@ -67,14 +67,16 @@ sudo bash install.sh --no-nginx --host mein-server.local
5. **HandBrake** interaktive Auswahl: 5. **HandBrake** interaktive Auswahl:
- **Option 1**: Standard (`apt install handbrake-cli`) - **Option 1**: Standard (`apt install handbrake-cli`)
- **Option 2**: Gebündelte GPU-Version mit NVDEC aus `bin/HandBrakeCLI` - **Option 2**: Gebündelte GPU-Version mit NVDEC aus `bin/HandBrakeCLI`
6. **Systembenutzer** `ripster` ohne Login-Shell, Gruppen: `cdrom`, `optical`, `disk`, `video`, `render` 6. **Systembenutzer** `ripster` ohne Login-Shell und ohne Home-Verzeichnis; Gruppen werden (falls vorhanden) ergänzt: `cdrom`, `optical`, `disk`, `video`, `render`
7. **Repository** klont Branch nach `--dir` (bei `--reinstall`: sichert DB, pullt, stellt DB wieder her) 7. **Repository** klont Branch nach `--dir` (bei `--reinstall`: sichert `backend/data`, aktualisiert Repo, stellt Daten wieder her)
8. **npm-Abhängigkeiten** Root, Backend (nur production), Frontend 8. **Verzeichnisse** stellt u. a. sicher: `backend/data`, `backend/logs`, `backend/data/output/raw`, `backend/data/output/movies`, `backend/data/logs`
9. **Frontend-Build** `npm run build` mit relativen API-URLs (nginx-kompatibel) 9. **npm-Abhängigkeiten** Root, Backend (nur production), Frontend
10. **Backend `.env`** wird automatisch generiert (bei `--reinstall` bleibt bestehende erhalten) 10. **Frontend-Build** `npm run build` mit relativen API-URLs (nginx-kompatibel)
11. **Berechtigungen** `ripster:ripster` auf Installationsverzeichnis, `600` auf `.env` 11. **Backend `.env`** wird automatisch generiert (bei `--reinstall` bleibt bestehende `.env` erhalten)
12. **systemd-Dienst** `ripster-backend.service` erstellt, aktiviert und gestartet 12. **Berechtigungen** zunächst `ripster:ripster` auf Installationsverzeichnis; bei sudo-Aufruf werden Output-/Log-Ordner auf `<aufrufender user>:ripster` mit `775` gesetzt; `.env` wird auf `600` gesetzt
13. **nginx** konfiguriert als Reverse-Proxy für Frontend, `/api/` und `/ws` (kann mit `--no-nginx` übersprungen werden) 13. **MakeMKV User-Ordner** erstellt bei sudo-Aufruf `~/.MakeMKV` für den aufrufenden Benutzer
14. **systemd-Dienst** `ripster-backend.service` erstellt, aktiviert und gestartet
15. **nginx** konfiguriert als Reverse-Proxy für Frontend, `/api/` und `/ws` (kann mit `--no-nginx` übersprungen werden)
### Nach der Installation ### Nach der Installation

View File

@@ -14,9 +14,9 @@ Setze zuerst diese Pflichtwerte:
| Bereich | Wichtige Felder | | Bereich | Wichtige Felder |
|---|---| |---|---|
| Pfade | `raw_dir`, `movie_dir`, `log_dir` | | Pfade | `Raw Ausgabeordner`, `Film Ausgabeordner`, `Log Ordner` |
| Tools | `makemkv_command`, `handbrake_command`, `mediainfo_command` | | Tools | `MakeMKV Kommando`, `HandBrake Kommando`, `Mediainfo Kommando` |
| Metadaten | `omdb_api_key`, optional `omdb_default_type` | | Metadaten | `OMDb API Key`, optional `OMDb Typ` |
Danach `Änderungen speichern`. Danach `Änderungen speichern`.
@@ -30,22 +30,22 @@ Wenn du Blu-ray und DVD unterschiedlich behandeln willst, pflege die profilbezog
Typische Beispiele: Typische Beispiele:
- `handbrake_preset_bluray` und `handbrake_preset_dvd` - `HandBrake Preset` (Blu-ray und DVD)
- `raw_dir_bluray` und `raw_dir_dvd` - `Raw Ausgabeordner` (Blu-ray und DVD)
- `filename_template_bluray` und `filename_template_dvd` - `Dateiname Template` (Blu-ray und DVD)
### 3. Queue und Monitoring festlegen ### 3. Queue und Monitoring festlegen
- `pipeline_max_parallel_jobs` für parallele Jobs - `Parallele Jobs` für den gleichzeitigen Durchsatz
- `hardware_monitoring_enabled` und Intervall für Live-Metriken im Dashboard - `Hardware Monitoring aktiviert` + `Hardware Monitoring Intervall (ms)` für Live-Metriken im Dashboard
### 4. Optional: Push-Benachrichtigungen ### 4. Optional: Push-Benachrichtigungen
In den Benachrichtigungsfeldern setzen: In den Benachrichtigungsfeldern setzen:
- `pushover_enabled` - `PushOver aktiviert`
- `pushover_token` - `PushOver Token`
- `pushover_user` - `PushOver User`
Dann über `PushOver Test` direkt prüfen. Dann über `PushOver Test` direkt prüfen.
@@ -55,7 +55,7 @@ Dann über `PushOver Test` direkt prüfen.
2. Disc einlegen 2. Disc einlegen
3. `Analyse starten` 3. `Analyse starten`
4. Metadaten übernehmen 4. Metadaten übernehmen
5. Bis `READY_TO_ENCODE` laufen lassen 5. Bis `Bereit zum Encodieren` laufen lassen
Wenn diese Schritte funktionieren, ist die Grundkonfiguration korrekt. Wenn diese Schritte funktionieren, ist die Grundkonfiguration korrekt.

View File

@@ -2,13 +2,13 @@
Die empfohlene Installation läuft über `install.sh` und richtet Ripster vollständig ein. Die empfohlene Installation läuft über `install.sh` und richtet Ripster vollständig ein.
Du musst dafür **keine Tools manuell vorinstallieren**. `install.sh` installiert die benötigten Abhängigkeiten automatisch (außer du überspringst sie mit `--no-*`). 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.
## Zielbild nach der Installation ## Unterstützte Systeme und Anforderungen
- Ripster-Backend als `systemd`-Dienst - unterstützt laut Script: `debian`, `ubuntu`, `linuxmint`, `pop`
- Frontend über nginx erreichbar - Ausführung als `root` (oder via `sudo`)
- UI auf `http://<Server-IP>` - Internetzugang während der Installation
## Schritt-für-Schritt ## Schritt-für-Schritt
@@ -24,9 +24,9 @@ wget -qO install.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main
sudo bash install.sh sudo bash install.sh
``` ```
Während der Installation wirst du nach dem HandBrake-Modus gefragt: Während der Installation wählst du den HandBrake-Modus:
- `1` Standard (`apt`) - `1` Standard (Paketinstallation)
- `2` GPU/NVDEC (gebündeltes Binary) - `2` GPU/NVDEC (gebündeltes Binary)
### 3. Dienststatus prüfen ### 3. Dienststatus prüfen
@@ -37,21 +37,44 @@ sudo systemctl status ripster-backend
### 4. Weboberfläche öffnen ### 4. Weboberfläche öffnen
- Mit nginx: `http://<Server-IP>` - mit nginx (Standard): `http://<Server-IP>`
- Ohne nginx (`--no-nginx`): API auf `http://<Server-IP>:3001/api` - 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 ## Wichtige Optionen
| Option | Zweck | | Option | Default laut Script | Zweck |
|---|---| |---|---|---|
| `--branch <branch>` | anderen Branch installieren | | `--branch <branch>` | `dev` | Branch für die Installation |
| `--dir <pfad>` | Installationsverzeichnis ändern | | `--dir <pfad>` | `/opt/ripster` | Installationsverzeichnis |
| `--port <port>` | Backend-Port setzen | | `--user <benutzer>` | `ripster` | Service-Benutzer |
| `--host <hostname>` | Hostname/IP für nginx/CORS | | `--port <port>` | `3001` | Backend-Port |
| `--no-makemkv` | MakeMKV nicht installieren | | `--host <hostname>` | automatisch ermittelte Host-IP | Hostname/IP für Webzugriff/CORS |
| `--no-handbrake` | HandBrake nicht installieren | | `--no-makemkv` | aus | MakeMKV-Installation überspringen |
| `--no-nginx` | nginx-Konfiguration überspringen | | `--no-handbrake` | aus | HandBrake-Installation überspringen |
| `--reinstall` | Update einer bestehenden Installation | | `--no-nginx` | aus | nginx-Setup überspringen |
| `--reinstall` | aus | bestehende Installation aktualisieren |
Beispiele: Beispiele:
@@ -76,9 +99,9 @@ sudo bash /opt/ripster/install.sh --reinstall
## Häufige Stolperstellen ## Häufige Stolperstellen
- `Permission denied` am Laufwerk: Laufwerksrechte/Gruppen prüfen - Laufwerk nicht zugreifbar: Laufwerksrechte/Gruppen prüfen
- Tools nicht gefunden: `makemkvcon`, `HandBrakeCLI`, `mediainfo` im `PATH` prüfen - CLI-Tool fehlt wegen `--no-*`: Tool nachinstallieren oder Befehl in Settings korrigieren
- UI nicht erreichbar: nginx-Status und Port/Firewall prüfen - UI nicht erreichbar: nginx-Status und Firewall prüfen
## Danach weiter ## Danach weiter

View File

@@ -8,7 +8,7 @@ Für den normalen Betrieb sind nur wenige Punkte vorab nötig.
### Pflicht ### Pflicht
- unterstütztes Linux-System (Debian/Ubuntu) - unterstütztes Linux-System (laut Script: Debian, Ubuntu, Linux Mint, Pop!_OS)
- `root`-Rechte - `root`-Rechte
- Internetzugang während der Installation - Internetzugang während der Installation
- optisches Laufwerk für Disc-Betrieb - optisches Laufwerk für Disc-Betrieb

View File

@@ -6,7 +6,7 @@ Dieser Ablauf zeigt einen vollständigen Job aus Anwendersicht: von Disc-Erkennu
Erwartung: Erwartung:
- Status wechselt auf `DISC_DETECTED` bzw. `Medium erkannt` - Status wechselt auf `Medium erkannt`
- im Bereich `Disk-Information` sind Laufwerksdaten sichtbar - im Bereich `Disk-Information` sind Laufwerksdaten sichtbar
Wenn nichts passiert: `Laufwerk neu lesen`. Wenn nichts passiert: `Laufwerk neu lesen`.
@@ -19,7 +19,7 @@ Aktion im Dashboard:
Erwartung: Erwartung:
- Status `ANALYZING` - Status `Analyse`
- danach Metadaten-Dialog - danach Metadaten-Dialog
## 3. Metadaten auswählen ## 3. Metadaten auswählen
@@ -32,11 +32,11 @@ Im Dialog `Metadaten auswählen`:
## 4. Auf den nächsten Zustand reagieren ## 4. Auf den nächsten Zustand reagieren
- Normalfall ohne vorhandenes RAW: `RIPPING` -> `MEDIAINFO_CHECK` -> `READY_TO_ENCODE` - Normalfall ohne vorhandenes RAW: `Rippen` -> `Mediainfo-Pruefung` -> `Bereit zum Encodieren`
- bei vorhandenem RAW: direkt `MEDIAINFO_CHECK` -> `READY_TO_ENCODE` - bei vorhandenem RAW: direkt `Mediainfo-Pruefung` -> `Bereit zum Encodieren`
- bei unklarer Blu-ray-Playlist: `WAITING_FOR_USER_DECISION` (Playlist auswählen und übernehmen) - bei unklarer Blu-ray-Playlist: `Warte auf Auswahl` (Playlist auswählen und übernehmen)
## 5. Review in `READY_TO_ENCODE` ## 5. Review in `Bereit zum Encodieren`
Im aufgeklappten Job (`Pipeline-Status`): Im aufgeklappten Job (`Pipeline-Status`):
@@ -49,7 +49,7 @@ Dann `Encoding starten`.
## 6. Encoding überwachen ## 6. Encoding überwachen
Während `ENCODING`: Während `Encodieren`:
- Fortschritt + ETA im Dashboard - Fortschritt + ETA im Dashboard
- Live-Log im `Pipeline-Status` - Live-Log im `Pipeline-Status`
@@ -57,7 +57,7 @@ Während `ENCODING`:
## 7. Ergebnis prüfen ## 7. Ergebnis prüfen
Bei `FINISHED`: Bei `Fertig`:
1. Seite `Historie` öffnen 1. Seite `Historie` öffnen
2. Job in Details öffnen 2. Job in Details öffnen

View File

@@ -26,7 +26,7 @@ Zeigt live:
Wichtig für den Betrieb: Wichtig für den Betrieb:
- Hohe Speicherauslastung oder fast volle Zielpfade früh erkennen - Hohe Speicherauslastung oder fast volle Zielpfade früh erkennen
- über `Settings` aktivierbar/deaktivierbar (`hardware_monitoring_*`) - über `Settings` aktivierbar/deaktivierbar (`Hardware Monitoring aktiviert`)
## 2) Job Queue ## 2) Job Queue
@@ -46,7 +46,7 @@ Mögliche Aktionen:
Hinweis: Hinweis:
- `Parallel` zeigt das aktuell konfigurierte Parallel-Limit (`pipeline_max_parallel_jobs`). - `Parallel` zeigt den Wert aus `Settings` -> `Parallele Jobs`.
## 3) Skript- / Cron-Status ## 3) Skript- / Cron-Status
@@ -71,13 +71,13 @@ Im aufgeklappten Zustand erscheint die Karte `Pipeline-Status` mit allen zustand
| Zustand | Typische Aktion | | Zustand | Typische Aktion |
|---|---| |---|---|
| `DISC_DETECTED` / `IDLE` | `Analyse starten` | | `Medium erkannt` / `Bereit` | `Analyse starten` |
| `METADATA_SELECTION` | `Metadaten öffnen` | | `Metadatenauswahl` | `Metadaten öffnen` |
| `WAITING_FOR_USER_DECISION` | Playlist wählen und `Playlist übernehmen` | | `Warte auf Auswahl` | Playlist wählen und `Playlist übernehmen` |
| `READY_TO_START` | `Job starten` | | `Startbereit` | `Job starten` |
| `READY_TO_ENCODE` | Tracks/Skripte prüfen, dann `Encoding starten` | | `Bereit zum Encodieren` | Tracks/Skripte prüfen, dann `Encoding starten` |
| laufend (`ANALYZING`/`RIPPING`/`ENCODING`) | `Abbrechen` | | laufend (`Analyse`/`Rippen`/`Encodieren`) | `Abbrechen` |
| `ERROR` / `CANCELLED` | `Retry Rippen`, `Disk-Analyse neu starten` | | `Fehler` / `Abgebrochen` | `Retry Rippen`, `Disk-Analyse neu starten` |
Zusätzlich je nach Job: Zusätzlich je nach Job:
@@ -85,7 +85,7 @@ Zusätzlich je nach Job:
- `Encode neu starten` - `Encode neu starten`
- `Aus Queue löschen` - `Aus Queue löschen`
### Titel-/Spurprüfung (`READY_TO_ENCODE`) ### Titel-/Spurprüfung (`Bereit zum Encodieren`)
Im selben Block siehst du: Im selben Block siehst du:

View File

@@ -65,7 +65,7 @@ Ein Preset bündelt:
Verwendung: Verwendung:
- Diese Presets erscheinen später im Dashboard im Review (`READY_TO_ENCODE`). - Diese Presets erscheinen später im Dashboard im Review (`Bereit zum Encodieren`).
## Tab `Cronjobs` ## Tab `Cronjobs`

View File

@@ -1,6 +1,6 @@
# Encode-Planung & Track-Auswahl # Encode-Planung & Track-Auswahl
Ripster erzeugt vor dem Encode einen `encodePlan` und lässt ihn im Review-Panel bestätigen. Vor dem eigentlichen Encoding erstellt Ripster einen Encode-Plan und zeigt ihn im Review an.
--- ---
@@ -10,27 +10,27 @@ Ripster erzeugt vor dem Encode einen `encodePlan` und lässt ihn im Review-Panel
Quelle bestimmen (Disc/RAW) Quelle bestimmen (Disc/RAW)
-> HandBrake-Scan (--scan --json) -> HandBrake-Scan (--scan --json)
-> Plan erstellen (Titel, Audio, Untertitel) -> Plan erstellen (Titel, Audio, Untertitel)
-> READY_TO_ENCODE -> Status: Bereit zum Encodieren
-> Benutzer bestätigt Auswahl -> Benutzer bestaetigt Auswahl
-> finaler HandBrake-Aufruf -> finaler HandBrake-Aufruf
``` ```
--- ---
## Review-Inhalt (`READY_TO_ENCODE`) ## Review-Inhalt (Status: `Bereit zum Encodieren`)
- auswählbarer Encode-Titel - auswählbarer Encode-Titel
- Audio-Track-Selektion - Audio-Track-Auswahl
- Untertitel-Track-Selektion inkl. Flags - Untertitel-Track-Auswahl inkl. Flags
- `burnIn` - `burnIn`
- `forced` - `forced`
- `defaultTrack` - `defaultTrack`
- optionale User-Presets (HandBrake-Preset + Extra-Args) - optionale User-Presets (HandBrake Preset + Extra Args)
- optionale Pre-/Post-Skripte und Ketten - optionale Pre-/Post-Skripte und Ketten
--- ---
## Bestätigung (`confirm-encode`) ## Bestaetigung (`confirm-encode`)
Typischer Payload: Typischer Payload:
@@ -51,7 +51,7 @@ Typischer Payload:
} }
``` ```
Ripster speichert die bestätigte Auswahl in `jobs.encode_plan_json` und markiert `encode_review_confirmed = 1`. Die bestätigte Auswahl wird im Job gespeichert und für Neustarts wiederverwendet.
--- ---
@@ -83,16 +83,16 @@ Untertitel-Flags werden bei Bedarf ergänzt:
- Pre-Encode läuft vor HandBrake - Pre-Encode läuft vor HandBrake
- Post-Encode läuft nach HandBrake - Post-Encode läuft nach HandBrake
Verhalten bei Fehlern: Fehlerverhalten:
- Pre-Encode-Fehler: Job wird als `ERROR` beendet (Encode startet nicht) - Pre-Encode-Fehler: Job endet mit Status `Fehler` (Encode startet nicht)
- Post-Encode-Fehler: Job kann `FINISHED` bleiben, enthält aber Fehlerhinweis/Script-Summary - Post-Encode-Fehler: Job kann `Fertig` bleiben, enthält aber Fehlerhinweis/Script-Summary
--- ---
## Dateinamen/Ordner ## Dateinamen/Ordner
Der finale Outputpfad wird aus Settings-Templates aufgebaut. Der finale Outputpfad wird aus den Templates in den Settings aufgebaut.
Platzhalter: Platzhalter:
@@ -100,4 +100,4 @@ Platzhalter:
- `${year}` - `${year}`
- `${imdbId}` - `${imdbId}`
Ungültige Dateizeichen werden sanitisiert. Ungültige Dateizeichen werden bereinigt.

View File

@@ -6,7 +6,7 @@ Ripster analysiert bei Blu-ray-ähnlichen Quellen Playlists und fordert bei Mehr
## Ziel ## Ziel
Erkennen, welche Playlist wahrscheinlich der Hauptfilm ist, statt versehentlich eine Fake-/Dummy-Playlist zu verwenden. Erkennen, welche Playlist sehr wahrscheinlich der Hauptfilm ist, statt versehentlich eine Fake-/Dummy-Playlist zu verwenden.
--- ---
@@ -26,20 +26,15 @@ Für Kandidaten werden u. a. berücksichtigt:
- Kohärenz linearer Segmentfolgen - Kohärenz linearer Segmentfolgen
- Duplikatgruppen mit ähnlicher Laufzeit - Duplikatgruppen mit ähnlicher Laufzeit
Daraus entstehen: Daraus entstehen intern Kandidatenlisten, Bewertungen und eine Empfehlung.
- `candidates`
- `evaluatedCandidates` (inkl. Score/Label)
- `recommendation`
- `manualDecisionRequired`
--- ---
## Wann muss der Benutzer entscheiden? ## Wann muss der Benutzer entscheiden?
Wenn nach Filterung mehr als ein relevanter Kandidat übrig bleibt, setzt Ripster `manualDecisionRequired = true` und wechselt auf: Wenn nach Filterung mehr als ein relevanter Kandidat übrig bleibt, wechselt der Job in der GUI auf:
- `WAITING_FOR_USER_DECISION` - `Warte auf Auswahl`
Dann muss eine Playlist bestätigt werden, bevor der Workflow weiterläuft. Dann muss eine Playlist bestätigt werden, bevor der Workflow weiterläuft.
@@ -47,9 +42,9 @@ Dann muss eine Playlist bestätigt werden, bevor der Workflow weiterläuft.
## Konfigurationseinfluss ## Konfigurationseinfluss
| Key | Wirkung | | Feld in `Settings` | Wirkung |
|-----|---------| |---|---|
| `makemkv_min_length_minutes` | Mindestlaufzeit für Kandidaten | | `Minimale Titellaenge (Minuten)` | Mindestlaufzeit für Kandidaten |
Default ist aktuell `60` Minuten. Default ist aktuell `60` Minuten.
@@ -61,5 +56,5 @@ Bei manueller Entscheidung zeigt das Dashboard Kandidaten inkl. Score/Bewertung
Nach Bestätigung: Nach Bestätigung:
- mit vorhandenem RAW -> zurück zu `MEDIAINFO_CHECK` - mit vorhandenem RAW -> zurück zu `Mediainfo-Pruefung`
- ohne RAW -> Startpfad über `READY_TO_START`/`RIPPING` - ohne RAW -> Startpfad über `Startbereit` / `Rippen`

View File

@@ -7,11 +7,11 @@ Ripster kann Skripte und Skript-Ketten vor und nach dem Encode ausführen.
## Ablauf ## Ablauf
```text ```text
READY_TO_ENCODE Bereit zum Encodieren
-> Pre-Encode Skripte/Ketten -> Pre-Encode Skripte/Ketten
-> HandBrake Encoding -> HandBrake Encoding
-> Post-Encode Skripte/Ketten -> Post-Encode Skripte/Ketten
-> FINISHED oder ERROR -> Fertig oder Fehler
``` ```
--- ---
@@ -29,8 +29,8 @@ Im Review-Panel kannst du getrennt wählen:
## Fehlerverhalten ## Fehlerverhalten
- Pre-Encode-Fehler stoppen die Kette und führen zu `ERROR`. - Pre-Encode-Fehler stoppen die Kette und führen zu `Fehler`.
- Post-Encode-Fehler stoppen die restlichen Post-Schritte; Job kann dennoch `FINISHED` sein (mit Fehlerzusatz im Status/Log). - Post-Encode-Fehler stoppen die restlichen Post-Schritte; Job kann dennoch `Fertig` sein (mit Fehlerzusatz im Status/Log).
--- ---

View File

@@ -1,6 +1,6 @@
# Workflow & Zustände # Workflow & Zustände
Ripster steuert den Ablauf als State-Machine im `pipelineService`. Ripster steuert den Ablauf als Zustandsmaschine.
--- ---
@@ -8,41 +8,41 @@ Ripster steuert den Ablauf als State-Machine im `pipelineService`.
```mermaid ```mermaid
flowchart LR flowchart LR
IDLE --> DISC_DETECTED A[Bereit] --> B[Medium erkannt]
DISC_DETECTED --> ANALYZING B --> C[Analyse]
ANALYZING --> METADATA_SELECTION C --> D[Metadatenauswahl]
METADATA_SELECTION --> READY_TO_START D --> E[Startbereit]
READY_TO_START --> RIPPING E --> F[Rippen]
READY_TO_START --> MEDIAINFO_CHECK E --> G[Mediainfo-Pruefung]
MEDIAINFO_CHECK --> WAITING_FOR_USER_DECISION G --> H[Warte auf Auswahl]
WAITING_FOR_USER_DECISION --> MEDIAINFO_CHECK H --> G
MEDIAINFO_CHECK --> READY_TO_ENCODE G --> I[Bereit zum Encodieren]
READY_TO_ENCODE --> ENCODING I --> J[Encodieren]
ENCODING --> FINISHED J --> K[Fertig]
ENCODING --> ERROR J --> L[Fehler]
RIPPING --> ERROR F --> L
RIPPING --> CANCELLED F --> M[Abgebrochen]
``` ```
--- ---
## State-Liste ## Statusliste (GUI-Anzeige)
| State | Bedeutung | | Status in der GUI | Bedeutung |
|------|-----------| |---|---|
| `IDLE` | Wartet auf Disc | | `Bereit` | Wartet auf Disc |
| `DISC_DETECTED` | Disc erkannt | | `Medium erkannt` | Disc wurde erkannt |
| `ANALYZING` | MakeMKV-Analyse läuft | | `Analyse` | MakeMKV-Analyse läuft |
| `METADATA_SELECTION` | Benutzer wählt Metadaten | | `Metadatenauswahl` | Metadaten müssen bestätigt werden |
| `WAITING_FOR_USER_DECISION` | Playlist-Auswahl nötig | | `Warte auf Auswahl` | Playlist-Auswahl ist erforderlich |
| `READY_TO_START` | Übergangszustand vor Start | | `Startbereit` | kurzer Übergang vor Start |
| `RIPPING` | MakeMKV-Rip läuft | | `Rippen` | MakeMKV-Rip läuft |
| `MEDIAINFO_CHECK` | Quelle/Tracks werden ausgewertet | | `Mediainfo-Pruefung` | Titel/Spuren werden ausgewertet |
| `READY_TO_ENCODE` | Review ist bereit | | `Bereit zum Encodieren` | Review ist bereit |
| `ENCODING` | HandBrake läuft | | `Encodieren` | HandBrake läuft |
| `FINISHED` | erfolgreich abgeschlossen | | `Fertig` | erfolgreich abgeschlossen |
| `CANCELLED` | abgebrochen | | `Abgebrochen` | manuell oder technisch abgebrochen |
| `ERROR` | fehlgeschlagen | | `Fehler` | fehlgeschlagen |
--- ---
@@ -50,38 +50,38 @@ flowchart LR
### Standardfall (kein vorhandenes RAW) ### Standardfall (kein vorhandenes RAW)
1. Disc erkannt 1. Medium erkannt
2. Analyse + Metadaten 2. Analyse + Metadaten
3. `RIPPING` 3. Rippen
4. `MEDIAINFO_CHECK` 4. Mediainfo-Pruefung
5. `READY_TO_ENCODE` 5. Bereit zum Encodieren
6. `ENCODING` 6. Encodieren
7. `FINISHED` 7. Fertig
### Vorhandenes RAW ### Vorhandenes RAW
`READY_TO_START` springt direkt zu `MEDIAINFO_CHECK` (kein neuer Rip). `Startbereit` springt direkt zu `Mediainfo-Pruefung` (kein neuer Rip).
### Mehrdeutige Blu-ray-Playlist ### Mehrdeutige Blu-ray-Playlist
`MEDIAINFO_CHECK` -> `WAITING_FOR_USER_DECISION` bis Benutzer Playlist bestätigt. `Mediainfo-Pruefung` -> `Warte auf Auswahl` bis Playlist bestätigt wurde.
--- ---
## Queue-Verhalten ## Queue-Verhalten
Wenn `pipeline_max_parallel_jobs` erreicht ist: Wenn der Wert `Parallele Jobs` erreicht ist:
- Job-Aktionen werden als Queue-Einträge abgelegt - neue Starts werden als Queue-Einträge abgelegt
- Queue kann zusätzlich Nicht-Job-Einträge enthalten (`script`, `chain`, `wait`) - die Queue kann zusätzlich Nicht-Job-Einträge enthalten (`Skript`, `Kette`, `Warten`)
- Reihenfolge ist per API/UI änderbar - Reihenfolge ist per UI/API änderbar
--- ---
## Abbruch, Retry, Restart ## Abbruch, Wiederaufnahme, Neustart
- `cancel`: laufenden Job abbrechen oder Queue-Eintrag entfernen - `Abbrechen`: laufenden Job stoppen oder Queue-Eintrag entfernen
- `retry`: Fehler-/Abbruch-Job neu starten - `Retry Rippen`: Fehler-/Abbruch-Job erneut starten
- `reencode`: aus vorhandenem RAW neu encodieren - `RAW neu encodieren`: aus vorhandenem RAW neu encodieren
- `restart-review`: Review aus RAW neu aufbauen - `Review neu starten`: Review aus RAW neu aufbauen
- `restart-encode`: Encoding mit letzter bestätigter Auswahl neu starten - `Encode neu starten`: Encoding mit letzter bestätigter Auswahl neu starten

View File

@@ -43,15 +43,15 @@ HandBrakeCLI -z
--- ---
## Relevante Settings ## Relevante Felder in `Settings`
| Key | Bedeutung | | Feldname in der GUI | Bedeutung |
|-----|-----------| |-----|-----------|
| `handbrake_command` | CLI-Binary | | `HandBrake Kommando` | CLI-Binary |
| `handbrake_preset_bluray` / `handbrake_preset_dvd` | profilspezifisches Preset | | `HandBrake Preset` (Blu-ray/DVD) | profilspezifisches Preset |
| `handbrake_extra_args_bluray` / `handbrake_extra_args_dvd` | profilspezifische Zusatzargumente | | `HandBrake Extra Args` (Blu-ray/DVD) | profilspezifische Zusatzargumente |
| `output_extension_bluray` / `output_extension_dvd` | Ausgabeformat | | `Ausgabeformat` (Blu-ray/DVD) | Dateiendung der finalen Datei |
| `handbrake_restart_delete_incomplete_output` | unvollständige Ausgabe bei Neustart löschen | | `Encode-Neustart: unvollständige Ausgabe löschen` | unvollständige Ausgabe bei Neustart löschen |
--- ---

View File

@@ -34,7 +34,7 @@ makemkvcon backup <source> <rawDir> --decrypt
## Registrierungsschlüssel (optional) ## Registrierungsschlüssel (optional)
Wenn `makemkv_registration_key` gesetzt ist, führt Ripster vor Analyse/Rip aus: Wenn in `Settings` ein `MakeMKV Key` gesetzt ist, führt Ripster vor Analyse/Rip aus:
```bash ```bash
makemkvcon reg <key> makemkvcon reg <key>
@@ -42,16 +42,16 @@ makemkvcon reg <key>
--- ---
## Relevante Settings ## Relevante Felder in `Settings`
| Key | Bedeutung | | Feldname in der GUI | Bedeutung |
|-----|-----------| |-----|-----------|
| `makemkv_command` | CLI-Binary | | `MakeMKV Kommando` | CLI-Binary |
| `makemkv_source_index` | Source-Index im Auto-Modus | | `MakeMKV Source Index` | Source-Index im Auto-Modus |
| `makemkv_min_length_minutes` | Mindestlaufzeitfilter | | `Minimale Titellaenge (Minuten)` | Mindestlaufzeitfilter |
| `makemkv_rip_mode_bluray` / `makemkv_rip_mode_dvd` | `mkv` oder `backup` | | `MakeMKV Rip Modus` (Blu-ray/DVD) | `mkv` oder `backup` |
| `makemkv_analyze_extra_args_bluray` / `_dvd` | Zusatzargs Analyse | | `MakeMKV Analyze Extra Args` (Blu-ray/DVD) | Zusatzargumente für Analyse |
| `makemkv_rip_extra_args_bluray` / `_dvd` | Zusatzargs Rip | | `MakeMKV Rip Extra Args` (Blu-ray/DVD) | Zusatzargumente für Rip |
--- ---

View File

@@ -6,21 +6,21 @@ Diese Seite beschreibt typische Abläufe mit den passenden UI-Aktionen.
1. `Dashboard`: Disc einlegen, `Analyse starten` 1. `Dashboard`: Disc einlegen, `Analyse starten`
2. Metadaten im Dialog übernehmen 2. Metadaten im Dialog übernehmen
3. bei `READY_TO_ENCODE` Titel/Tracks prüfen 3. bei `Bereit zum Encodieren` Titel/Tracks prüfen
4. `Encoding starten` 4. `Encoding starten`
5. Ergebnis in `Historie` kontrollieren 5. Ergebnis in `Historie` kontrollieren
## Workflow 2: Playlist-Entscheidung bei Blu-ray ## Workflow 2: Playlist-Entscheidung bei Blu-ray
1. Job landet in `WAITING_FOR_USER_DECISION` 1. Job landet in `Warte auf Auswahl`
2. im `Pipeline-Status` Playlist-Kandidaten vergleichen 2. im `Pipeline-Status` Playlist-Kandidaten vergleichen
3. gewünschte Playlist auswählen 3. gewünschte Playlist auswählen
4. `Playlist übernehmen` 4. `Playlist übernehmen`
5. danach normal weiter bis `READY_TO_ENCODE` 5. danach normal weiter bis `Bereit zum Encodieren`
## Workflow 3: Mehrere Jobs mit Queue ## Workflow 3: Mehrere Jobs mit Queue
1. Parallel-Limit in `Settings` setzen (`pipeline_max_parallel_jobs`) 1. Parallel-Limit in `Settings` über `Parallele Jobs` setzen
2. neue Jobs starten; überschüssige Starts gehen in `Job Queue` 2. neue Jobs starten; überschüssige Starts gehen in `Job Queue`
3. Reihenfolge per Drag-and-Drop anpassen 3. Reihenfolge per Drag-and-Drop anpassen
4. bei Bedarf Skript/Kette/Warten als Queue-Eintrag ergänzen 4. bei Bedarf Skript/Kette/Warten als Queue-Eintrag ergänzen
@@ -49,7 +49,7 @@ In `Historie` -> Detaildialog:
- im Dashboard optional erzeugte RAW/Movie-Datei bereinigen - im Dashboard optional erzeugte RAW/Movie-Datei bereinigen
- anschließend je nach Ziel: `Retry Rippen` oder `Disk-Analyse neu starten` - anschließend je nach Ziel: `Retry Rippen` oder `Disk-Analyse neu starten`
### Fall B: Job steht in `READY_TO_ENCODE`, ist aber nicht aktive Session ### Fall B: Job steht in `Bereit zum Encodieren`, ist aber nicht aktive Session
- in `Historie` oder `Database`: `Im Dashboard öffnen` - in `Historie` oder `Database`: `Im Dashboard öffnen`
- im Dashboard Review erneut prüfen und starten - im Dashboard Review erneut prüfen und starten

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