47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# 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
|