feat: streamlit api

This commit is contained in:
Radu C. Martin 2025-04-11 13:04:34 +02:00
parent bdf44bcd94
commit 573429acd2
3 changed files with 74 additions and 61 deletions

49
main.py
View file

@ -1,7 +1,6 @@
from enum import Enum
from fastapi import FastAPI
from pygame.mixer import music
from download_service import DownloadService
from music_player import MusicPlayer
@ -10,15 +9,10 @@ from music_player import MusicPlayer
class ChangePlayerState(Enum):
play = "play"
pause = "pause"
unpause = "unpause"
resume = "resume"
stop = "stop"
class Songs(Enum):
era = "era.mp3"
royal_beggars = "royal-beggars.mp3"
queue: list[str] = []
tags_metadata = [
@ -32,22 +26,37 @@ dl_service = DownloadService()
# Experimental
@app.get("/test/player/queue", tags=["experimental"])
@app.get("/queue", tags=["queue"])
def play_music():
return player.get_queue()
@app.post("/test/queue", tags=["experimental"])
@app.post("/queue", tags=["queue"])
def post_to_queue(url: str):
track = dl_service.download(url)
player.add_to_queue(track)
@app.post("/player/play", tags=["experimental"])
def play():
@app.post("/player/play", tags=["player"])
def player_play():
player.play()
@app.post("/player/pause", tags=["player"])
def player_pause():
player.pause()
@app.post("/player/resume", tags=["player"])
def player_resume():
player.resume()
@app.post("/player/stop", tags=["player"])
def player_stop():
player.stop()
# Player
@app.put("/player/volume", tags=["player"])
def set_volume(volume: float):
@ -59,24 +68,6 @@ def get_volume():
return {"volume": player.get_volume()}
@app.patch("/player/state", tags=["player"])
def update_state(status: ChangePlayerState):
match status:
case ChangePlayerState.play:
music.play()
case ChangePlayerState.pause:
music.pause()
case ChangePlayerState.unpause:
music.unpause()
case ChangePlayerState.stop:
music.stop()
@app.get("/player/state", tags=["player"])
def get_state():
return {"state": player.get_state(), "current_track": player.get_current_track()}
@app.post("/queue", tags=["queue"])
def add_to_queue(filename: str):
queue.append(filename)