from collections import defaultdict from typing import Dict, List, Optional from server.client.base.client import ApiKeyClient from server.client.utils import prepare_list_arg from server.constants import DSP, DSP_SPOTIFY_APPLE, DspApiPrefix class ApolloApiPlaylistsClient(ApiKeyClient): @prepare_list_arg("playlist_ids") async def get_playlists_previous_top_dates( self, dsp: DSP, tracks_isrc: Dict[str, Dict[str, str]], market: str, period: int, playlist_ids: Optional[list[str]] = None, ): body = { "tracks_isrc": tracks_isrc, "playlist_ids": playlist_ids, "market": market, "period": period, } return await self.send_request(f"api/playlists/{dsp.value}/previous/top/dates/", method="POST", body=body) @prepare_list_arg("playlist_ids") async def get_playlists_streams_weekly(self, dsp: DSP, **params): return await self.send_request(f"api/playlists/{dsp.value}/streams/weekly/", params=params) async def get_v1_spotify_playlist_date_range_listeners(self, playlist_id: str, **params): return await self.send_request(f"api/v1/spotify/playlists/listeners/range/{playlist_id}/", params=params)