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)
|
||||
|
||||
|
||||
ROOMS: dict[int, 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, ... }
|
||||
ROOMS: dict[int, Room] = {} # { room_id: room, ... }
|
||||
|
||||
|
||||
def error(msg: str, status: int = 400) -> Response:
|
||||
|
@ -82,11 +70,56 @@ def queue_next():
|
|||
# room.renew_queue()
|
||||
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}
|
||||
|
||||
|
||||
@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()
|
||||
test_algo()
|
||||
exit()
|
||||
|
|
|
@ -30,7 +30,7 @@ class Song:
|
|||
youtube_id: str
|
||||
|
||||
|
||||
def get_song_by_mbid(mbid: str) -> Song:
|
||||
def get_song_by_mbid(mbid: str) -> Song | None:
|
||||
conn = get_connection()
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT * FROM songs WHERE mbid = ?", (mbid,))
|
||||
|
@ -38,7 +38,7 @@ def get_song_by_mbid(mbid: str) -> Song:
|
|||
conn.close()
|
||||
|
||||
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"])
|
||||
return song
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue