Merge branch 'main' of https://repos.hackathon.bz.it/2025-summer/team-1
This commit is contained in:
commit
07964c469e
2 changed files with 49 additions and 16 deletions
|
@ -17,19 +17,7 @@ socketio = SocketIO(app)
|
||||||
CORS(app)
|
CORS(app)
|
||||||
|
|
||||||
|
|
||||||
ROOMS: dict[int, Room] = {
|
ROOMS: dict[int, Room] = {} # { room_id: room, ... }
|
||||||
1234: Room(
|
|
||||||
1234,
|
|
||||||
(0.0, 1.0),
|
|
||||||
"Test Room",
|
|
||||||
None,
|
|
||||||
{"Rock", "Metal"},
|
|
||||||
{},
|
|
||||||
[],
|
|
||||||
[Song(mbid="test", title="<title placeholder>", artist="<artist placeholder>", tags=["Metal"], image_id="img-id", youtube_id="yt-id")],
|
|
||||||
playing_idx=1,
|
|
||||||
)
|
|
||||||
} # { room_id: room, ... }
|
|
||||||
|
|
||||||
|
|
||||||
def error(msg: str, status: int = 400) -> Response:
|
def error(msg: str, status: int = 400) -> Response:
|
||||||
|
@ -82,11 +70,56 @@ def queue_next():
|
||||||
# room.renew_queue()
|
# room.renew_queue()
|
||||||
emit("update_songs", {"songs": [1, 2, 3]}, broadcast=True, namespace="/")
|
emit("update_songs", {"songs": [1, 2, 3]}, broadcast=True, namespace="/")
|
||||||
|
|
||||||
return {"success": True, "ended": True, "index": room.playing_idx, "queue": []}
|
return {"success": True, "ended": True, "index": room.playing_idx, "queue": room.playing}
|
||||||
|
|
||||||
return {"success": True, "ended": False, "index": room.playing_idx}
|
return {"success": True, "ended": False, "index": room.playing_idx}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/api/room/new")
|
||||||
|
def room_new():
|
||||||
|
if (room_name := request.args.get("name")) is None:
|
||||||
|
return error("Missing room name")
|
||||||
|
|
||||||
|
if (room_cords := request.args.get("coords")) is None:
|
||||||
|
return error("Missing room coords")
|
||||||
|
|
||||||
|
if room_pin := request.args.get("pin"):
|
||||||
|
room_pin = int(room_pin)
|
||||||
|
else:
|
||||||
|
room_pin = None
|
||||||
|
|
||||||
|
lat, lon = room_cords.split(",")
|
||||||
|
|
||||||
|
room = Room(
|
||||||
|
id=max(ROOMS or [0]) + 1, #
|
||||||
|
coord=(float(lat), float(lon)),
|
||||||
|
name=room_name,
|
||||||
|
pin=room_pin,
|
||||||
|
tags=set([tag for tag in request.args.get("tags", "").split(",") if tag]),
|
||||||
|
songs={},
|
||||||
|
history=[],
|
||||||
|
playing=[],
|
||||||
|
playing_idx=-1,
|
||||||
|
)
|
||||||
|
|
||||||
|
ROOMS[room.id] = room
|
||||||
|
|
||||||
|
return {"success": True, "room_id": room.id}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/api/room")
|
||||||
|
def room():
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"id": room.id,
|
||||||
|
"name": room.name,
|
||||||
|
"private": room.pin is not None,
|
||||||
|
"coords": room.coord,
|
||||||
|
}
|
||||||
|
for room in ROOMS.values()
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
init_db()
|
init_db()
|
||||||
test_algo()
|
test_algo()
|
||||||
exit()
|
exit()
|
||||||
|
|
|
@ -30,7 +30,7 @@ class Song:
|
||||||
youtube_id: str
|
youtube_id: str
|
||||||
|
|
||||||
|
|
||||||
def get_song_by_mbid(mbid: str) -> Song:
|
def get_song_by_mbid(mbid: str) -> Song | None:
|
||||||
conn = get_connection()
|
conn = get_connection()
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("SELECT * FROM songs WHERE mbid = ?", (mbid,))
|
cursor.execute("SELECT * FROM songs WHERE mbid = ?", (mbid,))
|
||||||
|
@ -38,7 +38,7 @@ def get_song_by_mbid(mbid: str) -> Song:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
if row is None:
|
if row is None:
|
||||||
raise ValueError(f"Song with MBID {mbid} not found")
|
return None
|
||||||
|
|
||||||
song = Song(mbid=row["mbid"], title=row["title"], artist=row["artist"], tags=row["tags"].split(","), image_id=row["lastfm_image_id"], youtube_id=row["youtube_id"])
|
song = Song(mbid=row["mbid"], title=row["title"], artist=row["artist"], tags=row["tags"].split(","), image_id=row["lastfm_image_id"], youtube_id=row["youtube_id"])
|
||||||
return song
|
return song
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue