From cbf90d1d0a01ce2ee8728d6f0c89f7d30c8bd37a Mon Sep 17 00:00:00 2001 From: Simone Tesini Date: Sat, 2 Aug 2025 11:26:07 +0200 Subject: [PATCH 1/2] fix micro smarcio --- backend/src/app.py | 3 +++ backend/src/song_fetch.py | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/src/app.py b/backend/src/app.py index ac1dfaa..0fc9f9d 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -210,6 +210,9 @@ def add_song(): ## song not found, downolad from YT yt_video_id = yt_search_song(info.title, info.artist) + if yt_video_id is None: + return error("No video found on youtube") + ## add in DB song = Song( uuid=str(uuid.uuid4()), diff --git a/backend/src/song_fetch.py b/backend/src/song_fetch.py index f8cb78f..905d126 100644 --- a/backend/src/song_fetch.py +++ b/backend/src/song_fetch.py @@ -18,7 +18,7 @@ class SongInfo: tags: list[str] -def _lastfm_search(query: str) -> tuple[str, str]: +def _lastfm_search(query: str) -> tuple[str, str] | None: response = requests.get( url="https://ws.audioscrobbler.com/2.0/?method=track.search&format=json", params={"limit": 5, "track": query, "api_key": os.environ["LASTFM_API_KEY"]}, @@ -26,7 +26,10 @@ def _lastfm_search(query: str) -> tuple[str, str]: assert response.status_code == 200 - track_info = response.json()["results"]["trackmatches"]["track"][0] + tracks = response.json()["results"]["trackmatches"]["track"] + if len(tracks) == 0: + return None + track_info = tracks[0] return track_info["name"], track_info["artist"] @@ -74,14 +77,17 @@ def _yt_search(query: str) -> tuple[str, str]: def query_search(query: str) -> SongInfo | None: - name, artist = _lastfm_search(query) + res = _lastfm_search(query) + if res is None: + return None + name, artist = res img_id, tags = _lastfm_getinfo(name, artist) return SongInfo(artist=artist, title=name, img_id=img_id, tags=tags) -def yt_search_song(name: str, artist: str) -> str: # video id +def yt_search_song(name: str, artist: str) -> str | None: # video id ydl_opts = { "format": "bestaudio", "default_search": "ytsearch1", @@ -92,6 +98,9 @@ def yt_search_song(name: str, artist: str) -> str: # video id with yt_dlp.YoutubeDL(ydl_opts) as ydl: info = ydl.extract_info(f"{name!r} - {artist!r}", download=False) + if len(info["entries"]) == 0: + return None + return info["entries"][0]["id"] From 2a63a527f0a95e39902fb24412c296825f7d218d Mon Sep 17 00:00:00 2001 From: Leonardo Segala Date: Sat, 2 Aug 2025 11:47:26 +0200 Subject: [PATCH 2/2] Add room creation page --- frontend/src/routes/+page.svelte | 7 +- frontend/src/routes/room/create/+page.svelte | 92 ++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 frontend/src/routes/room/create/+page.svelte diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 29ee432..e8fb789 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -26,7 +26,12 @@ radar Scanning for rooms near you... - diff --git a/frontend/src/routes/room/create/+page.svelte b/frontend/src/routes/room/create/+page.svelte new file mode 100644 index 0000000..c69b19e --- /dev/null +++ b/frontend/src/routes/room/create/+page.svelte @@ -0,0 +1,92 @@ + + +
+

Create Room

+ +
+ + + + +

+ Room Coordinates: + {coord.latitude},{coord.longitude} +

+ +
+ Public Room: + + {#if !privateRoom} +

The room is flagged as public, everyone can join

+ {/if} +
+ + +
+