Dokumentation: README, KONZEPT, ROADMAP, SAVEPOINT

This commit is contained in:
Hitonabi
2026-07-21 17:23:01 +02:00
parent 5464d8acc7
commit 6fe2fd74c1
3 changed files with 105 additions and 49 deletions
+2 -3
View File
@@ -65,7 +65,7 @@ Ein modular aufgebautes System, das bei Disc-Einwurf automatisch den Typ erkennt
- Title, Laufzeit, Scene-Labels werden ausgelesen. - Title, Laufzeit, Scene-Labels werden ausgelesen.
- Video-Titel wird gegen TMDB API gegengeprüft → Matching-Ergebnis mit Confidence-Score. - Video-Titel wird gegen TMDB API gegengeprüft → Matching-Ergebnis mit Confidence-Score.
- Audio-Titel wird gegen MusicBrainz gegengeprüft (bei CD). - Audio-Titel wird gegen MusicBrainz gegengeprüft (bei CD).
- **Rippy zeigt eine Preview im WebUI**: Titel, Jahr, Cover, Scene-Trackliste. - **Rippy zeigt eine Preview im WebUI**: Titel, Jahr, Cover, Trackliste.
- Der Commander kann bestätigen oder manuell korrigieren (z.B. falsches TMDB-Match). - Der Commander kann bestätigen oder manuell korrigieren (z.B. falsches TMDB-Match).
- Bestätigte Metadaten werden im SQLite-Cache persistiert. - Bestätigte Metadaten werden im SQLite-Cache persistiert.
6. **Ripping** (nach Bestätigung): 6. **Ripping** (nach Bestätigung):
@@ -185,8 +185,7 @@ Ein modular aufgebautes System, das bei Disc-Einwurf automatisch den Typ erkennt
Änderungen: Änderungen:
- **Metadaten-Lookup VOR dem Ripping** eingefügt (Sek. 5, Schritt 5) - **Metadaten-Lookup VOR dem Ripping** eingefügt (Sek. 5, Schritt 5)
- **100% Jellyfin-Kompatibilität** hinzugefügt: NFO-Generator, Ordnerstruktur, Poster/Backdrop/ - **100% Jellyfin-Kompatibilität** hinzugefügt: NFO-Generator, Ordnerstruktur, Poster/Backdrop/Fanart-Download, Jellyfin-kompatible Dateibenennung (Sek. 4, Sek. 5, Sek. 6)
Fanart-Download, Jellyfin-kompatible Dateibenennung (Sek. 4, Sek. 5, Sek. 6)
- **Metadaten-Preview im UI** als neuer UX-Schritt (Sek. 7, Schritt 3) - **Metadaten-Preview im UI** als neuer UX-Schritt (Sek. 7, Schritt 3)
- **Neue Risiken**: TMDB-Matching-Fehler (offen, mit Fallback), NFO-Format-Abhängigkeit (Hinweis), Pre-Scan-Latenz (Hinweis), TMDB-Bildrechte (gelöst) - **Neue Risiken**: TMDB-Matching-Fehler (offen, mit Fallback), NFO-Format-Abhängigkeit (Hinweis), Pre-Scan-Latenz (Hinweis), TMDB-Bildrechte (gelöst)
+97 -46
View File
@@ -1,66 +1,117 @@
# Rippy # Rippy — Automatisches CD/DVD/Blu-ray Ripping-System
Ein modernes, eigenständiges System zum automatischen Rippen von CD, DVD und Blu-ray. > **Moderner Ripping-Daemon mit Metadaten-Preview, Jellyfin-Formatierung und Echtzeit-Status.**
Es erkennt Disc-Einwürfe automatisch, sucht Metadaten vor, rippt verlustfrei und legt
alles in Jellyfin-konformer Struktur ab — mit Echtzeit-UI statt veralteter Flask-Oberfläche.
## Was du brauchst ---
- Ein System mit einem optischen Laufwerk (DVD/Blu-ray) ## Features
- Docker + Docker Compose
- 12 Stunden Zeit für den ersten Bau
## So legst du los | Feature | Status |
|---------|--------|
| Disc-Erkennung (CD/DVD/Blu-ray) | ✅ |
| Metadaten-Lookup (TMDB/MusicBrainz/TheTVDB) | ✅ |
| Pre-Scan ohne Ripping | ✅ |
| Jellyfin-Formatierung (NFO + Images) | ✅ |
| JWT-Auth + Rate-Limiting | ✅ |
| React-UI mit Echtzeit-Updates | ✅ |
| SQLite-Cache für API-Rate-Limits | ✅ |
| Multi-Disc-Set-Handling | ✅ |
1. Clone das Repo: ---
```
git clone https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git
cd rippy
```
2. Lies **KONZEPT.md** — das sagt, was das Projekt ist.
3. Lies **ROADMAP.md** — das sagt, in welcher Reihenfolge es gebaut wird.
4. Fang mit Etappe 1 an (Fundament + udev-Erkennung).
## Entwicklungsumgebung (Docker) ## Architektur
### Starten
``` ```
┌─────────────────────────────────────────────┐
│ Proxmox LXC (Debian 12) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ API │ │ Worker │ │ UI │ │
│ │ FastAPI │◄─►│ Celery+ │ │ React+ │ │
│ │ │ │ Redis │ │ Nginx │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ PostgreSQL│ │ udev │ │ Media │ │
│ │ │ │ Daemon │ │ Store │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────┘
```
---
## Installation
### Docker Compose
```bash
git clone https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git
cd rippy
docker compose up -d docker compose up -d
``` ```
### Stoppen ### Port-Übersicht
```
docker compose down
```
### Logs ansehen | Service | Port | URL |
``` |---------|------|-----|
docker compose logs -f | UI | 80 | http://localhost:80 |
``` | API | 8000 | http://localhost:8000 |
| PostgreSQL | 5432 | localhost:5432 |
| Redis | 6379 | localhost:6379 |
### Container neu bauen ---
```
docker compose build
docker compose up -d
```
## Etappe 1: Fundament ## API
Aktueller Stand: ### Endpoints
- ✅ Docker Compose mit 5 Containern (api, worker, ui, postgres, redis)
- ✅ Basis-Dockerfiles für jeden Service
- ✅ udev-Regel + Daemon für Disc-Einwurf-Erkennung
- ✅ Device-Resolver (UUID/Serial)
- ✅ Celery-Job-Erstellung
### udev-Integration | Endpoint | Method | Description |
|----------|--------|-------------|
| `/health` | GET | Health check |
| `/jobs` | GET | Alle Jobs |
| `/devices` | GET | Alle Geräte |
| `/prescan` | POST | Pre-Scan durchführen |
| `/metadata/lookup` | POST | Metadaten lookup |
| `/metadata/confirm` | POST | Metadaten bestätigen |
| `/jellyfin/format` | POST | Für Jellyfin formatieren |
| `/token` | POST | Login (JWT) |
| `/token/refresh` | POST | Refresh Token |
| `/api-keys` | POST/GET/DELETE | API-Key Management |
1. Kopiere `udev/99-disc-ripper.rules` nach `/etc/udev/rules.d/` ---
2. Kopiere `udev/udev_daemon.py` nach `/app/` (im Worker-Container)
3. Lade udev-Regeln neu: `sudo udevadm control --reload-rules && sudo udevadm trigger`
## Weitere Etappen ## Tech-Stack
Siehe ROADMAP.md für Details zu Etappe 2+. | Layer | Tech |
|-------|------|
| Backend | Python, FastAPI, Celery |
| Database | PostgreSQL, SQLite, Redis |
| Frontend | React, Vite, TailwindCSS |
| Ripping | MakeMKV, abcde, FFmpeg, HandBrake |
| Auth | JWT, OAuth2 |
Alles andere steht in den Docs. Viel Spaß beim Bauen. ---
## Roadmap
- [x] Etappe 1: Container-Infrastruktur
- [x] Etappe 2: Ripping-Pipeline
- [x] Etappe 3: Metadaten-Lookup + Pre-Scan
- [x] Etappe 4: Jellyfin-Formatierung
- [x] Etappe 5: API + Auth + WebUI
- [ ] Etappe 6: Sicherheit + Compliance
- [ ] Etappe 7: Proxmox-Integration
---
## License
GPL-v3
---
## Credits
- **Commander**: Projekt-Idee, Anforderungen, Testing
- **AI-Box**: Entwicklung, Architektur, Dokumentation
+6
View File
@@ -61,6 +61,8 @@
- Commander kann bestätigen oder manuell korrigieren - Commander kann bestätigen oder manuell korrigieren
- Bestätigte Metadaten werden im Cache persistiert - Bestätigte Metadaten werden im Cache persistiert
**Status:** Abgeschlossen
--- ---
## Etappe 4: Jellyfin-Formatierung + NFO-Generierung ## Etappe 4: Jellyfin-Formatierung + NFO-Generierung
@@ -84,6 +86,8 @@
- Jellyfin scannt und erkennt alles korrekt - Jellyfin scannt und erkennt alles korrekt
- Multi-Disc-Sets werden als eine Entität angezeigt - Multi-Disc-Sets werden als eine Entität angezeigt
**Status:** Abgeschlossen
--- ---
## Etappe 5: API + Auth + WebUI ## Etappe 5: API + Auth + WebUI
@@ -109,6 +113,8 @@
- Echtzeit-Updates via SSE funktionieren - Echtzeit-Updates via SSE funktionieren
- Alle Einstellungen werden gespeichert - Alle Einstellungen werden gespeichert
**Status:** Abgeschlossen
--- ---
## Etappe 6: Sicherheit + Compliance + Hardening ## Etappe 6: Sicherheit + Compliance + Hardening