Fixed autoplay

This commit is contained in:
Choco
2023-05-31 12:23:50 +08:00
parent c8dbc505f4
commit 0e4910cfdc
3 changed files with 13 additions and 9 deletions

View File

@@ -173,7 +173,7 @@ async def similar_track(player) -> bool:
tracks = []
if randomTrack.spotify:
tracks = await player.spotifyRelatedTrack(seed_artists=randomTrack.artistId[0], seed_tracks=randomTrack.track_id)
tracks = await player.spotifyRelatedTrack(randomTrack.identifier, seed_artists=randomTrack.artistId[0] if randomTrack.artistId else None)
else:
if randomTrack.source != 'youtube':
return False

View File

@@ -443,7 +443,7 @@ class Player(VoiceProtocol):
raise TrackLoadError("Not able to find the provided Spotify entity, is it private?")
return [ Track(
track_id=track.id,
track_id=None,
requester=requester,
search_type=SearchType.ytsearch,
spotify_track=track,
@@ -462,12 +462,12 @@ class Player(VoiceProtocol):
)
for track in tracks ]
async def spotifyRelatedTrack(self, seed_artists: str, seed_tracks: str):
async def spotifyRelatedTrack(self, seed_tracks: str, *, seed_artists: str = None):
tracks = await self._node._spotify_client.similar_track(seed_artists=seed_artists, seed_tracks=seed_tracks)
tracks = await self._node._spotify_client.similar_track(seed_tracks=seed_tracks, seed_artists=seed_artists)
return [ Track(
track_id=track.id,
track_id=None,
search_type=SearchType.ytsearch,
spotify_track=track,
info={

View File

@@ -33,7 +33,8 @@ from .exceptions import InvalidSpotifyURL, SpotifyRequestException
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_artists={seed_artists}&seed_tracks={seed_tracks}"
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/(?P<type>album|playlist|track|artist)/(?P<id>[a-zA-Z0-9]+)"
)
@@ -87,12 +88,15 @@ class Client:
return [ Track(track) for track in data['tracks']['items'] ]
async def similar_track(self, seed_artists: str, seed_tracks: str, limit: int = 5) -> list:
async def similar_track(self, seed_tracks: str, *, seed_artists: str = None, limit: int = 5) -> list:
if not self._bearer_token or time.time() >= self._expiry:
await self._fetch_bearer_token()
request_url = SUGGESTION_URL.format(limit=limit, seed_artists=seed_artists, seed_tracks=seed_tracks)
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)
async with self.session.get(request_url, headers=self._bearer_headers) as resp:
if resp.status != 200:
raise SpotifyRequestException(