118 lines
3.4 KiB
Markdown
118 lines
3.4 KiB
Markdown
# Rippy — Automatisches CD/DVD/Blu-ray Ripping-System
|
|
|
|
> **Moderner Ripping-Daemon mit Metadaten-Preview, Jellyfin-Formatierung und Echtzeit-Status.**
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
| 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 | ✅ |
|
|
|
|
---
|
|
|
|
## Architektur
|
|
|
|
```
|
|
┌─────────────────────────────────────────────┐
|
|
│ 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
|
|
```
|
|
|
|
### Port-Übersicht
|
|
|
|
| Service | Port | URL |
|
|
|---------|------|-----|
|
|
| UI | 80 | http://localhost:80 |
|
|
| API | 8000 | http://localhost:8000 |
|
|
| PostgreSQL | 5432 | localhost:5432 |
|
|
| Redis | 6379 | localhost:6379 |
|
|
|
|
---
|
|
|
|
## API
|
|
|
|
### Endpoints
|
|
|
|
| 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 |
|
|
|
|
---
|
|
|
|
## Tech-Stack
|
|
|
|
| Layer | Tech |
|
|
|-------|------|
|
|
| Backend | Python, FastAPI, Celery |
|
|
| Database | PostgreSQL, SQLite, Redis |
|
|
| Frontend | React, Vite, TailwindCSS |
|
|
| Ripping | MakeMKV, abcde, FFmpeg, HandBrake |
|
|
| Auth | JWT, OAuth2 |
|
|
|
|
---
|
|
|
|
## 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
|