From d1dce692fd8973f1cf46124e750dabce5d03a381 Mon Sep 17 00:00:00 2001 From: Choco <94597336+ChocoMeow@users.noreply.github.com> Date: Fri, 2 Jun 2023 19:09:23 +0800 Subject: [PATCH] Optimize spotify autoplay --- function.py | 2 +- voicelink/player.py | 4 ++-- voicelink/spotify/client.py | 10 +++------- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/function.py b/function.py index b668bf8..ad93870 100644 --- a/function.py +++ b/function.py @@ -173,7 +173,7 @@ async def similar_track(player) -> bool: tracks = [] if randomTrack.spotify: - tracks = await player.spotifyRelatedTrack(randomTrack.identifier, seed_artists=randomTrack.artistId[0] if randomTrack.artistId else None) + tracks = await player.spotifyRelatedTrack(randomTrack.identifier) else: if randomTrack.source != 'youtube': return False diff --git a/voicelink/player.py b/voicelink/player.py index 1752ec8..10f049d 100644 --- a/voicelink/player.py +++ b/voicelink/player.py @@ -462,9 +462,9 @@ class Player(VoiceProtocol): ) for track in tracks ] - async def spotifyRelatedTrack(self, seed_tracks: str, *, seed_artists: str = None): + async def spotifyRelatedTrack(self, seed_tracks: str): - tracks = await self._node._spotify_client.similar_track(seed_tracks=seed_tracks, seed_artists=seed_artists) + tracks = await self._node._spotify_client.similar_track(seed_tracks=seed_tracks) return [ Track( track_id=None, diff --git a/voicelink/spotify/client.py b/voicelink/spotify/client.py index 1d825f8..d2ccd03 100644 --- a/voicelink/spotify/client.py +++ b/voicelink/spotify/client.py @@ -34,7 +34,6 @@ GRANT_URL = "https://accounts.spotify.com/api/token" REQUEST_URL = "https://api.spotify.com/v1/{type}s/{id}" SEARCH_URL = "https://api.spotify.com/v1/search?q={query}&type={type}&limit={limit}" SUGGESTION_URL = "https://api.spotify.com/v1/recommendations?limit={limit}&seed_tracks={seed_tracks}" -SUGGESTION_URL_WITH_ART = "https://api.spotify.com/v1/recommendations?limit={limit}&seed_artists={seed_artists}&seed_tracks={seed_tracks}" SPOTIFY_URL_REGEX = re.compile( r"https?://open.spotify.com/(?Palbum|playlist|track|artist)/(?P[a-zA-Z0-9]+)" ) @@ -88,15 +87,12 @@ class Client: return [ Track(track) for track in data['tracks']['items'] ] - async def similar_track(self, seed_tracks: str, *, seed_artists: str = None, limit: int = 5) -> list: + async def similar_track(self, seed_tracks: str, *, limit: int = 5) -> list: if not self._bearer_token or time.time() >= self._expiry: await self._fetch_bearer_token() - if not seed_artists: - request_url = SUGGESTION_URL.format(limit=limit, seed_tracks=seed_tracks) - else: - request_url = SUGGESTION_URL_WITH_ART.format(limit=limit, seed_artists=seed_artists, seed_tracks=seed_tracks) - + request_url = SUGGESTION_URL.format(limit=limit, seed_tracks=seed_tracks) + async with self.session.get(request_url, headers=self._bearer_headers) as resp: if resp.status != 200: raise SpotifyRequestException(