diff --git a/backend/auth/session.py b/backend/auth/session.py index b41ecf7..3858d69 100644 --- a/backend/auth/session.py +++ b/backend/auth/session.py @@ -52,7 +52,7 @@ class SessionData(): raise e @property - def access_tokens(self): + def access_token(self): if self.nearly_expired(): self.refresh() diff --git a/backend/endpoints/queue.py b/backend/endpoints/queue.py index 7dc5e17..351db47 100644 --- a/backend/endpoints/queue.py +++ b/backend/endpoints/queue.py @@ -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, diff --git a/backend/endpoints/spotify_api.py b/backend/endpoints/spotify_api.py index 82cafbf..eee7a5f 100644 --- a/backend/endpoints/spotify_api.py +++ b/backend/endpoints/spotify_api.py @@ -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) \ No newline at end of file + import traceback + traceback.print_exc() + print(e)