This commit is contained in:
Marek
2026-04-04 21:56:31 +02:00
parent 3b95fa34a3
commit 05fbcd5a04
7 changed files with 121 additions and 19 deletions

46
CLAUDE.md Normal file
View File

@@ -0,0 +1,46 @@
# YouTube App
Selbst-gehostete Anwendung: YouTube-Videos per Browser Extension erfassen, auf einem Server speichern und per Kotlin-App auf Android/Android TV streamen und herunterladen.
## Dokumentation
- `systems.md` — Technologie-Stack pro Komponente
- `commication.md` — Kommunikationsflüsse zwischen den Systemen
- `features.md` — Konkrete Features und Benutzerinteraktionen
- `architecture.md` — Detaillierter Systemaufbau (Endpoints, Services, Models, Screens)
- `szenarios.md` — Benutzer-Szenarien
## Architektur
Drei Komponenten:
### Browser Extension (JavaScript, Manifest V3)
- Content Script liest YouTube-DOM aus, extrahiert Videodaten
- Background Script sendet Daten an Server (POST /videos)
### Server (Python, FastAPI, SQLite, yt-dlp + ffmpeg)
- REST API empfängt Videodaten, liefert Videolisten, triggert Downloads, streamt Videos
- yt-dlp lädt Videos von YouTube, speichert auf dem Server
- Beim Streamen wird das Video automatisch heruntergeladen, falls noch nicht geschehen
### App (Kotlin, Android/Android TV)
- Screens: AllVideos, Downloaded, VideoDetail, VideoPlayer
- Videos werden vom Server gestreamt, optional auf das Gerät heruntergeladen
- Lokale Videos werden bevorzugt abgespielt, sonst Stream
## API Endpoints
- `POST /videos` — Videodaten von Extension empfangen
- `GET /videos` — alle Videos abrufen
- `GET /videos/downloaded` — heruntergeladene Videos abrufen
- `POST /videos/{id}/download` — Download auf Server triggern
- `GET /videos/{id}/stream` — Video streamen
- `GET /videos/{id}/file` — Video-Datei zum Download auf Client ausliefern
## Entscheidungen
- Kein Jellyfin — erfüllt nicht die Anforderung, Videos vor dem Download aufzulisten
- Kein PostgreSQL/MySQL — SQLite reicht für den Prototyp
- Keine Benutzerprofile im Prototyp
- Videos werden auf dem Server gespeichert, Client speichert nur bei explizitem Download
- Sprache der Dokumentation: Deutsch