fixed add track to queue

This commit is contained in:
Matteo Baldi 2025-08-02 11:53:43 +02:00
parent dec89ef9de
commit f3c868a050
3 changed files with 21 additions and 17 deletions

View file

@ -23,6 +23,7 @@ class QueueItem(BaseModel):
voti: int = 0
class QueueItemCreate(BaseModel):
id: str
titolo: str
coverUrl: str
color: str
@ -42,12 +43,8 @@ class VoteUpdate(BaseModel):
async def add_item(item: QueueItemCreate):
"""POST: Aggiunge un nuovo item alla queue"""
try:
# Genera un ID univoco
import uuid
item_id = str(uuid.uuid4())
new_item = {
"id": item_id,
"id": item.id,
"titolo": item.titolo,
"coverUrl": item.coverUrl,
"color": item.color,

View file

@ -7,6 +7,8 @@ from auth.session import SessionData, SessionManager
from fastapi import APIRouter
from fastapi.responses import RedirectResponse
from backend.endpoints.queue import delete_item
music_router = APIRouter(prefix="/music")
SPOTIFY_CLIENT_ID = os.getenv("SPOTIFY_CLIENT_ID")
@ -46,6 +48,9 @@ def callback(code: str):
refresh_token = token_info.get("refresh_token")
expires_in = token_info.get("expires_in")
if any(token is None for token in [access_token, refresh_token, expires_in]):
return {"error": "Failed to obtain access token from Spotify."}
# Salva access_token in sessione o database per usi futuri
old_session = SessionManager.instance().get_current_session()
SessionManager.instance().set_session(SessionData(access_token, refresh_token, expires_in))
@ -53,7 +58,7 @@ def callback(code: str):
return {
"changed": session != old_session,
"access_token": session.access_tokens,
"access_token": session.access_token,
}
@ -62,7 +67,7 @@ def search(query: str):
try:
url = SPOTIFY_PLAY_URL + f"search?q={query}&type=track"
header = {
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_tokens,
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_token,
"Content-Type": "application/json"
}
response = requests.get(url, headers=header)
@ -81,7 +86,7 @@ def play(song_id: str):
"position_ms": 0
}
header = {
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_tokens,
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_token,
"Content-Type": "application/json"
}
print(body)
@ -97,7 +102,7 @@ def current_song():
try:
url = SPOTIFY_PLAY_URL + f"me/player/currently-playing?marketing=IT"
header = {
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_tokens,
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_token,
"Content-Type": "application/json"
}
return requests.get(url, headers=header).json()
@ -105,19 +110,21 @@ def current_song():
print(e)
@music_router.get("/add_queue_track")
def add_queue_track(song_id: str):
async def add_queue_track(song_id: str):
try:
params = {
"uri": f"spotify:track:{song_id}"
}
url_encoded_params = urllib.parse.urlencode(params)
url = f"{SPOTIFY_AUTH_URL}/me/player/queue{url_encoded_params}"
url = f"{SPOTIFY_PLAY_URL}me/player/queue"
header = {
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_tokens,
"Content-Type": "application/json"
"Authorization": "Bearer " + SessionManager.instance().get_current_session().access_token,
}
return requests.post(url, headers=header).json()
return requests.post(url, params=params, headers=header).json()
except Exception as e:
print(e)
import traceback
traceback.print_exc()
print(e)