diff --git a/main.py b/main.py
index c54ef6d..1909f55 100644
--- a/main.py
+++ b/main.py
@@ -1,7 +1,7 @@
import asyncio
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
-from fastapi.responses import HTMLResponse
+from fastapi.staticfiles import StaticFiles
from models import MusicPlayer, PlayerState, WSConnectionType
from services import ConnectionManager, DownloadService
@@ -12,17 +12,16 @@ tags_metadata = [
{"name": "experimental"},
{"name": "queue"},
]
-app = FastAPI(openapi_tags=tags_metadata)
+api_app = FastAPI(openapi_tags=tags_metadata, title="Dashdio API")
player = MusicPlayer()
dl_service = DownloadService()
ws_manager = ConnectionManager()
+app = FastAPI(title="Dashdio App")
# Interface
-@app.get("/", response_class=HTMLResponse)
-async def root():
- with open("index.html") as f:
- return f.read()
+app.mount("/api", api_app)
+app.mount("/", StaticFiles(directory="ui", html=True), name="ui")
@app.on_event("startup")
@@ -46,7 +45,7 @@ async def queue_broadcast_loop():
# Status updates
-@app.websocket("/player")
+@api_app.websocket("/player")
async def websocket_player(websocket: WebSocket):
await ws_manager.connect(websocket, WSConnectionType.state)
try:
@@ -58,7 +57,7 @@ async def websocket_player(websocket: WebSocket):
# Queue updates
-@app.websocket("/queue")
+@api_app.websocket("/queue")
async def websocket_queue(websocket: WebSocket):
await ws_manager.connect(websocket, WSConnectionType.queue)
try:
@@ -69,48 +68,48 @@ async def websocket_queue(websocket: WebSocket):
ws_manager.disconnect(websocket)
-@app.get("/queue", tags=["queue"])
+@api_app.get("/queue", tags=["queue"])
def get_queue():
return player.get_queue()
-@app.post("/queue", tags=["queue"])
+@api_app.post("/queue", tags=["queue"])
async def post_to_queue(url: str):
track = await dl_service.download(url)
await player.add_to_queue(track)
-@app.delete("/queue/{track_id}", tags=["queue"])
+@api_app.delete("/queue/{track_id}", tags=["queue"])
def delete_from_queue(track_id: str):
player.remove_from_queue_by_id(track_id)
-@app.post("/player/play", tags=["player"])
+@api_app.post("/player/play", tags=["player"])
async def player_play():
await player.play()
-@app.post("/player/stop", tags=["player"])
+@api_app.post("/player/stop", tags=["player"])
async def player_stop():
await player.stop()
-@app.post("/player/skip", tags=["player"])
+@api_app.post("/player/skip", tags=["player"])
async def player_skip():
await player.next()
# Player
-@app.put("/player/volume", tags=["player"])
+@api_app.put("/player/volume", tags=["player"])
async def set_volume(volume: float):
await player.set_volume(volume)
-@app.get("/player/volume", tags=["player"])
+@api_app.get("/player/volume", tags=["player"])
def get_volume():
return {"volume": player.get_volume()}
-@app.get("/player", tags=["player"])
+@api_app.get("/player", tags=["player"])
def get_player_state() -> PlayerState:
return player.get_state()
diff --git a/ui/index.html b/ui/index.html
new file mode 100644
index 0000000..140d02e
--- /dev/null
+++ b/ui/index.html
@@ -0,0 +1,56 @@
+
+
+
+
+ Music Player
+
+
+
+
+
🎵 Dashdio
+
+
Artist: -
+
Title: -
+
Status: -
+
+
+
+
+
+
+
+
+
+
+
+
📃 Queue
+
+
+
+
+
+ # |
+ Artist |
+ Title |
+ Duration |
+ Actions |
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/ui/script.js
similarity index 52%
rename from index.html
rename to ui/script.js
index fe5ade4..a5521fc 100644
--- a/index.html
+++ b/ui/script.js
@@ -1,56 +1,4 @@
-
-
-
-
- Music Player
-
-
-
-
-
🎵 Dashdio
-
-
Artist: -
-
Title: -
-
Status: -
-
-
-
-
-
-
-
-
-
-
-
📃 Queue
-
-
-
-
-
- # |
- Artist |
- Title |
- Duration |
- Actions |
-
-
-
-
-
-
-
-
-
-
-