# Ripster Ripster ist eine lokale Web-Anwendung für Disc-Ripping, Audiobook-Verarbeitung und Datei-Konvertierung. Das System kombiniert MakeMKV, HandBrake, FFmpeg, `cdparanoia`, `mkvmerge`, SQLite und eine React-Oberfläche zu einer durchgehenden Pipeline mit Queue, Historie, Downloads, Skript-Automation und Echtzeitstatus per WebSocket. ## Funktionsumfang ### Medien-Workflows - Blu-ray-Ripping und -Encoding - DVD-Ripping und -Encoding - Audio-CD-Ripping und -Encoding - Audiobook-Verarbeitung aus `.aax` - Datei-Converter für Audio-, Video- und ISO-Dateien ### Video (Blu-ray / DVD) - automatische Disc-Erkennung, Rescan einzelner Laufwerke und Live-Status im Ripper - Metadaten-Suche über TMDB für Filme und Serien - HandBrake-Review mit Playlist-/Titel-Auswahl, Audio-/Untertitel-Track-Auswahl und Encode-Vorschau - MakeMKV-Rip mit profilspezifischen Modi und Zusatzargumenten - HandBrake-Encoding mit User-Presets, offiziellen HandBrake-Presets und Extra-Args - Serien-Workflows für DVD- und Blu-ray-Discs inkl. Episoden-Zuordnung und Batch-Encoding - Multipart-Movie-Workflows über mehrere Discs inkl. Merge-Job via `mkvmerge` - Re-Encode aus RAW, Review-Neustart, Encode-Neustart, Retry und Resume laufender/unterbrochener Jobs ### Audio-CD - TOC-Analyse und Rip mit `cdparanoia` - MusicBrainz-Suche und Übernahme von Album-/Track-Metadaten - Track-Auswahl und Ausgabe als FLAC, WAV, MP3, Opus oder Ogg Vorbis - RAW-Wiederverwendung und CD-Review-/Encode-Neustart aus vorhandenen Daten ### Audiobooks - Upload und Verarbeitung von Audible-/AAX-Dateien - Activation-Bytes-Cache für DRM-geschützte Titel - Metadaten- und Kapitelanreicherung über Audnex plus lokale Probe-Daten - Ausgabe als M4B, MP3 oder FLAC - Einzeldatei oder kapitelweises Splitten ### Converter - Dateibaum und Datei-Explorer für das Converter-RAW-Verzeichnis - Upload, Ordner anlegen, Umbenennen, Verschieben und Löschen - Jobs aus Dateiauswahl erzeugen, Dateien bestehenden Jobs zuweisen oder daraus entfernen - Audio-/Video-Erkennung und automatische RAW-Scans per Polling - TMDB-Metadatenzuordnung für passende Video-Jobs ### Automation, Betrieb und Verwaltung - Queue mit normalen Jobs sowie zusätzlichen `script`-, `chain`- und `wait`-Einträgen - Pre-/Post-Encode-Skripte und Skript-Ketten - Cron-Jobs für Skripte und Ketten inkl. Validierung, Logs und manueller Auslösung - Download-Queue für ZIP-Archive aus Historienjobs - Historie mit Detailansicht, Re-Encode, Review-/Encode-Neustart, Retry und Löschfunktionen - `/database`-Ansicht für Orphan-RAW-Ordner (Import oder Löschen vorhandener RAW-Daten) - Hardware-Monitoring mit Live-Werten und Verlaufshistorie - Pushover-Benachrichtigungen für zentrale Pipeline-Ereignisse - MakeMKV-Betakey-Prüfung/-Übernahme und Cover-Art-Recovery ## Oberfläche - `Ripper`: Disc-Erkennung, Pipeline-Status, Queue, Review-Dialoge und aktive Jobs - `Converter`: Dateibaum, Uploads und Converter-Jobs - `Audiobooks`: AAX-Uploads und Audiobook-Jobs - `Settings`: Pfade, Tools, Templates, Queue, Monitoring, Notifications, Scripts, Chains, Presets - `Historie`: abgeschlossene und fehlerhafte Jobs mit Folgeaktionen - `Downloads`: vorbereitete ZIP-Downloads - `Database`: Orphan-RAW-Verwaltung (im Expertenmodus) - Zusatzansichten: `Hardware` und `TMDB Migration` ## Installation Der korrekte Bootstrap läuft über `setup.sh`. `setup.sh` lädt das passende `install.sh` aus dem gewünschten Branch und startet es mit denselben Parametern. Unterstützte Systeme laut Installer: - Debian - Ubuntu - Linux Mint - Pop!_OS Standardinstallation: ```bash curl -fsSL https://raw.githubusercontent.com/Mboehmlaender/ripster/main/setup.sh | bash -s -- --branch dev ``` Alternativ per Datei: ```bash wget -qO setup.sh https://raw.githubusercontent.com/Mboehmlaender/ripster/main/setup.sh bash setup.sh --branch dev ``` Hinweise: - `setup.sh` nutzt bei Bedarf `sudo`; root-Rechte und Internetzugang sind erforderlich. - Ohne `--branch` bietet `setup.sh` lokal eine Branch-Auswahl an. Bei `curl | bash` sollte `--branch` gesetzt werden. - Der eigentliche Installer ist `install.sh`; `setup.sh` ist der empfohlene Einstiegspunkt. Wichtige Standardparameter für den Installationslauf: ```bash bash setup.sh --branch dev --dir /opt/ripster --user ripster --port 3001 --host 192.168.1.10 ``` Verfügbare Optionen: - `--branch ` - `--dir ` - `--user ` - `--port ` - `--host ` - `--no-makemkv` - `--no-handbrake` - `--no-nginx` - `--no-system-deps` - `--reinstall` - `--help` Was der Installer typischerweise einrichtet: - Node.js 20 - `ffmpeg`, `ffprobe`, `mediainfo`, `mkvtoolnix` - CD-Tools (`cdparanoia`, `flac`, `lame`, `opus-tools`, `vorbis-tools`) - optional MakeMKV - optional HandBrakeCLI - optional nginx - Repository-Checkout bzw. Update - npm-Abhängigkeiten, Frontend-Build und `ripster-backend`-systemd-Service ## Update Standard-Update einer bestehenden Installation: ```bash sudo bash /opt/ripster/install.sh --reinstall --branch dev ``` Wenn die Installation mit abweichenden Kernparametern eingerichtet wurde, diese beim Update wieder mitgeben: ```bash sudo bash /opt/ripster/install.sh --reinstall --branch dev --dir /opt/ripster --user ripster --port 3001 --host 192.168.1.10 ``` Alternativ kann auch erneut über `setup.sh` gebootstrapped werden: ```bash curl -fsSL https://raw.githubusercontent.com/Mboehmlaender/ripster/main/setup.sh | bash -s -- --branch dev --reinstall ``` `--reinstall` aktualisiert die Installation und behält die persistenten Daten der bestehenden Instanz bei. ## Entwicklung Schnellstart für lokale Entwicklung: ```bash ./start.sh ``` `start.sh` prüft Node.js, installiert fehlende Abhängigkeiten und startet Backend und Frontend im Dev-Modus. Wichtige npm-Skripte: - `npm run dev` - `npm run dev:backend` - `npm run dev:frontend` - `npm run build:frontend` - `npm run start` ## Konfiguration Die meisten Einstellungen werden in der Weboberfläche unter `Settings` gepflegt und in SQLite gespeichert. Dazu gehören insbesondere: - Pfade und Output-Templates für Blu-ray, DVD, Serie, CD, Audiobook, Converter, Downloads und Logs - Tool-Kommandos für MakeMKV, HandBrake, MediaInfo, FFmpeg, FFprobe, `cdparanoia` und `mkvmerge` - Laufwerksmodus, Disc-Erkennung und Queue-/Parallelisierungsregeln - Hardware-Monitoring, Logging, Expert Mode und Cover-Art-Recovery - TMDB-Zugangsdaten, Pushover, Skripte, Skript-Ketten, User-Presets und Preset-Defaults Zusätzliche Bootstrap-/Override-Variablen: Backend: - `PORT` - `DB_PATH` - `LOG_DIR` - `LOG_LEVEL` - `CORS_ORIGIN` - `DEFAULT_TEMP_DIR` - `DEFAULT_RAW_DIR` - `DEFAULT_MOVIE_DIR` - `DEFAULT_SERIES_DIR` - `DEFAULT_CD_DIR` - `DEFAULT_AUDIOBOOK_RAW_DIR` - `DEFAULT_AUDIOBOOK_DIR` - `DEFAULT_DOWNLOAD_DIR` - `DEFAULT_CONVERTER_RAW_DIR` - `DEFAULT_CONVERTER_MOVIE_DIR` - `DEFAULT_CONVERTER_AUDIO_DIR` Frontend: - `VITE_API_BASE` - `VITE_WS_URL` ## Daten, Logs und API - Standard-DB: `backend/data/ripster.db` - Standard-Logs: `backend/logs` - Standard-Outputs liegen relativ zum Datenverzeichnis, sofern in den Settings nichts anderes gesetzt ist. - Das Schema wird beim Start geprüft und fehlende DB-Elemente werden migriert. REST-Gruppen: - `/api/health` - `/api/pipeline/*` - `/api/converter/*` - `/api/history/*` - `/api/downloads/*` - `/api/settings/*` - `/api/crons/*` - `/api/runtime/*` Realtime: - WebSocket unter `/ws` ## Projektstruktur ```text ripster/ backend/ frontend/ db/ docs/ install.sh setup.sh start.sh ``` ## Dokumentation Ausführlichere Dokumentation liegt in `docs/` und veröffentlicht unter: https://mboehmlaender.github.io/ripster/