# 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