Files
youtube-app/architecture.md
2026-04-05 23:26:55 +02:00

1.9 KiB

Browser Extension

  • Content Script — YouTube-DOM auslesen, Videodaten extrahieren
  • Background Script — Daten gruppiert an Server senden (POST /videos)
  • Popup — Profil vom Server laden und auswaehlen

Server

API

  • POST /videos — Video-Batch empfangen, Duplikate entfernen, Profil zuordnen
  • GET /videos — alle Videos abrufen (optional nach Profil filtern)
  • GET /profiles — alle Profile abrufen
  • GET /videos/downloaded — heruntergeladene Videos abrufen (optional nach Profil filtern)
  • DELETE /videos?profile_id=X&exclude_ids= — Videos des Profils loeschen (ausser lokal gespeicherte)
  • POST /videos/{id}/download — Download triggern
  • GET /videos/{id}/stream — Video streamen
  • GET /videos/{id}/file — Video-Datei zum Download ausliefern
  • DELETE /videos/{id}/file — Server-Datei loeschen (nach lokalem Download)
  • WS /ws — WebSocket, benachrichtigt Clients bei neuen Videos

Services

  • VideoService — Videos speichern, abrufen, Status verwalten
  • DownloadService — yt-dlp aufrufen, Video herunterladen
  • StreamService — Live-Streaming via yt-dlp + ffmpeg

Model

  • Video — id, title, youtuber, thumbnail_url, youtube_url, file_path
  • Profile — id, name
  • video_profiles — video_id, profile_id (Many-to-Many)

App

Screens

  • AllVideosScreen — alle Videos als Cards
  • DownloadedVideosScreen — heruntergeladene Videos als Cards
  • VideoDetailScreen — Starten, Download, Zurück, Löschen
  • VideoPlayerScreen — Player mit Standard-Controls

ViewModel

  • VideoViewModel — Video-State verwalten, API-Aufrufe triggern, lokal bevorzugen sonst streamen

Services

  • LocalStorageService — Videos lokal speichern, pruefen, loeschen

API

  • ServerApi — kommuniziert mit FastAPI (GET /profiles, GET /videos, POST /download, GET /stream, GET /videos/{id}/file, DELETE /videos/{id}/file, DELETE /videos)

Model

  • Video — id, title, youtuber, thumbnailUrl, youtubeUrl, isDownloaded, localFilePath, profileIds
  • Profile — id, name