import dotenv from flask import Flask, Response, jsonify, request from flask_cors import CORS from .room import Room from .song import Song, init_db # from .song_fetch import * dotenv.load_dotenv() app = Flask(__name__) CORS(app) ROOMS: dict[int, Room] = { 1234: Room( 1234, (0.0, 1.0), "Test Room", None, {"Rock", "Metal"}, {}, [], [Song(mbid="test", title="", artist="<artist placeholder>", tags=["Metal"], image_id="img-id", youtube_id="yt-id")], ) } # { room_id: room, ... } def error(msg: str, status: int = 400) -> Response: res = jsonify({"success": False, "error": msg}) res.status_code = status return res @app.get("/api/join") def join(): room_id = request.args.get("room") code = request.args.get("code") if room_id is None: return error("Missing room id") if (room := ROOMS.get(int(room_id))) is None: return error("Invalid room") if room.pin is not None and room.pin != code: return error("Invalid code") return {"success": True, "ws": f"/ws/{room_id}"} @app.get("/api/queue") def queue(): if (room_id := request.args.get("room")) is None: return error("Missing room id") if (room := ROOMS.get(int(room_id))) is None: return error("Invalid room") return {"success": True, "queue": room.playing} @app.post("/api/queue/next") def queue_next(): ... @app.post("/api/queue/renew") def queue_renew(): ... init_db() if __name__ == "__main__": app.run(debug=True)