update
This commit is contained in:
46
CLAUDE.md
Normal file
46
CLAUDE.md
Normal 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
|
||||
Reference in New Issue
Block a user