from server.client.base.client import ApiKeyClient from server.client.utils import prepare_list_arg from server.constants import DSP, DspApiPrefix from server.utils.parallel import request_in_chunks class ApolloApiTracksClient(ApiKeyClient): @prepare_list_arg("track_ids") async def get_artists(self, **params): return await self.send_request("api/tracks/artists/", params=params) @prepare_list_arg("isrc") @request_in_chunks(100, items_key="isrc") async def get_starred_tracks_check(self, **params): return await self.send_request("api/v1/starred-tracks/check/", params=params) async def get_starred_tracks_detailed(self, **params): return await self.send_request("api/v1/starred-tracks/detailed/", params=params) @prepare_list_arg("isrc") async def get_track_playlists(self, dsp: DSP, **params): return await self.send_request(f"api/v2/{DspApiPrefix[dsp.name].value}/track/playlists/", params=params) @prepare_list_arg("track_ids") async def get_tracks(self, **params): return await self.send_request("api/tracks/", params=params) async def get_user_favorite_tracks(self, **params): return await self.send_request("api/users/favorites/tracks/", method="POST", body=params)