From 2f37d1b31f81bc70be35ab07e85bdd9b7f2632f8 Mon Sep 17 00:00:00 2001 From: Marek Lenczewski Date: Mon, 6 Apr 2026 20:01:19 +0200 Subject: [PATCH] update --- .../java/com/youtubeapp/data/ApiClient.kt | 7 ++- .../routes/__pycache__/videos.cpython-312.pyc | Bin 8062 -> 8039 bytes backend/routes/videos.py | 3 +- features.md | 48 +++++++++++++----- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt b/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt index 8427460..fdca5b6 100644 --- a/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt +++ b/app/frontend/src/main/java/com/youtubeapp/data/ApiClient.kt @@ -1,11 +1,14 @@ package com.youtubeapp.data +import android.os.Build import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory object ApiClient { - // Server-IP hier anpassen - const val BASE_URL = "http://marha.local:8000/" + val BASE_URL: String = if (Build.FINGERPRINT.contains("generic") || Build.FINGERPRINT.contains("sdk")) + "http://10.0.2.2:8000/" + else + "http://marha.local:8000/" val api: VideoApi by lazy { Retrofit.Builder() diff --git a/backend/routes/__pycache__/videos.cpython-312.pyc b/backend/routes/__pycache__/videos.cpython-312.pyc index e48ed9e14f994a18a3ea12847b6cf100930e8c7a..550176aaedda70faa57d1deb297b179d822f1674 100644 GIT binary patch delta 1252 zcmaJ>O>7%g5Z>qAwby?*jg#244m2fAwZthuNt1>)X;fJ?5NHk*p(4OpWw*_?_O3O% z4lRc!st`~K38}*&>Y+k{0}&TcE?gnKpq@$vNDql0frJVdmvS!5tQ#rGfhWChNAvr= zdGq%E^dHmNo7rqip*04#-MKHaFX`e{wDiMb6|d>{RP|gQMImo$=X%&_`??^4m{4r} zGttot<^5~;Q+!Uu@nGWP-o(kbVoOtZ{-q_w5X8voj=*0N&Bs*Bwq>db{u#IK)LdI8 z&pKgk$+aC{Y7NWvU;snI69f30F_k(@fm}V%@bToOek1=u?n-Vo^+R#wR&nIp;?tk+ z`py__rzHzzPvm|;h*EA<7x<%NMt z@@7r>&_dm@yjHW*!2nK>adiEk>|a8Z@t0hA%;fOFC_D%)2u%&1WmR;NG1kY!MQ|*8 z3qPFc>Pwv_+a&G4!>5WSUg>&HRM&5J&5HE%96!tO!n)bLD8wLM&Cm95vMBe1Oe-re zfp_yq#EUr6)3(ZNHW*GZq#5`q@CF0Vp{Z}7W|Kl{O^e8J;y@>ur(@4Vy_T6EB+`w} zv0;&nC-745GEuzWdvO~@yj&QXaL55(BQRrdhCb5Z@$;;PVnJ=8vj$9>@wc+>aKSl zdO4y_u%mFd?bMynsRa%!Inb%zBsboHOR%E+o_QE2iv#%1?uw}5&E4-6c~)hHU)_UO z7(mFbcz#c5SCu65Ntv*Mi{66k!^^n3ClIe=rgVMzAlZOlq*N(ds;(DyW7%Q6vsXGu0OKg)V1R#qz*WV60%CuQrd=(CZ-K(qBc@;XeBBEGAr-Y-DbV( zzFmhD5J@@kA&QWg3+e%Za%s6$>7fTsxEBNmqCkU2;)YZqE{2LL<-K(ynj9Eue=~aT z&Ak7-eRIF`Pf7n?*E=FOmM?GG^;`N`l{vyxpJ!i*>*|A;aw#iL?#(6GwGZBjUCN8S zdM>op?RJS$Z|+Uf+5U~HD(A^D;_zBhuu`bzzGV3eS~8OUqKXcz&M#++{TDFueI0< z;&l4y0oo165xas*WG5UHpQTT*39*@O&QcDk@#Tusu&6%15rdZ~kn&2k;x*jBkKuYd zr|hga+;kiDcKv)fh0devzv_Q5HY&c`bKsQ`+CCU=_X86GLxEW`g*Q1u_IPj+xM}Uw zCo=)q)hdUw<-O@To@v2(45lmkE<)7vL&EJ%h~>=7Y-atN%pB8BqaDr==GL>>i;NA5 zw{vq{lqAggD8uS1j0>4N&gR9wu9i7U?j+$XK_k!=;dKIap`kt|xq=3%)J+sk2m31G z4J^lr@E^#uAK+zb?Q%dBowK5vUqOlY^H+9A6pP)%D;5U8s|X_s94DEi&UDQhH&T!# z=Pr5wDa(_W?|x?Kf6;UQy$PA3^6I}V?LT$uqpQc5(exk|i5_c3an%}L|D^98 HQ%Ll`HcCEx diff --git a/backend/routes/videos.py b/backend/routes/videos.py index 72f0da2..6b483f2 100644 --- a/backend/routes/videos.py +++ b/backend/routes/videos.py @@ -26,8 +26,7 @@ async def create_videos(videos_data: list[VideoCreate], db: Session = Depends(ge video_service.delete_by_youtube_id(db, video_id_match) video = video_service.create_video(db, video_data) created_ids.append(video.id) - if video_data.profile_id: - profile_ids.add(video_data.profile_id) + profile_ids.add(video_data.profile_id or 1) videos = [video_service.get_video(db, vid) for vid in created_ids] if profile_ids: diff --git a/features.md b/features.md index ea8286a..e72a6c3 100644 --- a/features.md +++ b/features.md @@ -1,16 +1,38 @@ -# Aufgaben +# Aufgaben + ## Browser + - Sichtbare Youtube Videos werden erfasst -- Videodaten (Titel, Youtuber, Bild, Url) werden nach dem erfassen gruppiert an den Server gesendet -- Einstellung: Profil auswählen -## App -- Ansicht: Navigation mit Alle Videos, Heruntergeladen +- Videodaten (Titel, Youtuber, Bild, Url) werden nach dem erfassen gruppiert an den Server gesendet +- Einstellung: Profil auswählen + +## App + +- Startansicht: + - Navigation unten: Alle Videos, Heruntergeladen + - Icons oben rechts: Mülleimer (Löschen), Benutzer (Profile) - Alle Videos: Videos als Cards auflisten (Untereinander: Bild, Youtuber, Titel) -- Heruntergeladen: Heruntergeladene Videos als Cards auflisten (Untereinander: Bild, Youtuber, Titel) -- Klick auf Card zeigt die Videoübersicht (Starten, Download, Zurück) -- Klick auf Startet startet den Stream über den Server mit den Standard Video-Controls und einem Zurück-Button -- Klick auf Download lädt das Video herunter und wird lokal auf dem Client gespeichert -- Klick auf Icon zeigt verfügbare Profile -- Das ausgewählte Profil wird persistiert und bestimmt welche Videos angezeigt werden -- Klick auf Icon löscht alle nicht heruntergeladenen Videos vom aktuellen Profil -- Bei neuen Videoeinträgen in der DB werden die Videos für das zugehörige Profil in der App aktualisiert \ No newline at end of file + - Klick auf ein Video zeigt die Videoübersicht + - Neue Videoeinträge in der DB aktualisieren direkt die Videoliste + - Funktioniert nur Online und wenn Server verfügbar +- Heruntergeladen: Heruntergeladene (lokale) Videos als Cards auflisten (Untereinander: Bild, Youtuber, Titel) + - Videodaten und Videodatei werden lokal gespeichert (funktionieren Offline) +- Mülleimer Icon: Alle Videodaten von nicht heruntergeladenen Videos zum aktuellen Profil löschen +- Benutzer Icon: Verfügbare Profile anzeigen + - Klick auf ein Profile setzt dieses als das aktuelle Profil + - Es werden nur Videos zu dem Profil angezeigt + - Standardprofil enthält alle Videos ohne Profilzuweisung +- Videoübersicht: + - Oben links: Zurück-Button + - Unter Zurück-Button: Thumbnail + - Unten: Abspielen und Download Buttons +- Abspielen: + - "Zurück"-Button oben linsk + - Standard Videos Controls + - Startet einen Stream über den Server +- Download: + - Video auf dem Server herunterladen, Video lokal speichern, Video auf dem Server löschen + - Ladeanimation währenddessen + - Beim Abspielen wird das heruntergeladene Video priorisiert +- Fehlerbehandlung + - Server nicht erreichbar: Fehlermeldung "Server nicht erreichbar" anzeigen unter Alle Videos