from server.client.base.client import ApiKeyClient from server.client.utils import date_response, prepare_list_arg class DpsApiAnalyticsClient(ApiKeyClient): async def get_playlist_date_range_streams(self, **params): return await self.send_request("api/analytics/v1/playlist-date-range-streams", params=params) @prepare_list_arg("isrc", result_type=dict) async def get_stations_streams_summary(self, **params): return await self.send_request("api/analytics/v1/stations-summary", params=params) @date_response async def get_streams_latest_date(self): response = await self.send_request("api/consumer_analytics/streams-latest-date") return response["date"] @prepare_list_arg("isrc", result_type=dict) async def get_streams_per_country(self, **params): return await self.send_request("api/consumer_analytics/v1/track-per-country", params=params) @prepare_list_arg("isrc") async def get_tiktok_markets(self, **params): result = await self.send_request("api/analytics/v1/tiktok/markets", params=params) return result["country_codes"] @prepare_list_arg("isrc") async def get_track_first_stream_date(self, **params): return await self.send_request("api/consumer_analytics/tracks-first-stream-dates", params=params) @prepare_list_arg("items") async def get_track_or_playlists_streams(self, **params): result = await self.send_request("api/analytics/v1/track-playlists-streams", body=params, method="POST") return result["items"] async def get_v1_playlists_streams_graph(self, **params): return await self.send_request("api/analytics/v1/playlists-streams-graph", params=params)