from typing import Dict import requests import config import consts def _get_headers() -> Dict[str, str]: """Get headers for API request. """ return { "Authorization": config.DSPAPI.APP_KEY, "Content-Type": "application/json", "X-App-Slug": "apollo", "X-Client-Type": "job", "X-Client-Name": consts.APP_NAME, } def get_playlist_tracks(playlist_id: str) -> Dict[str, str]: """Get playlist tracks. Args: playlist_id: Playlist ID. Returns: Tracklist. """ url = f"{config.DSPAPI.HOST}/api/delphi/public/track-positions/playlists/current-tracklist" offset = 0 result = {} while True: response = requests.get( url, headers=_get_headers(), params={"offset": offset, "limit": config.DSPAPI.PAGE_SIZE, "playlist_id": f"spotify_{playlist_id}"}, timeout=config.DSPAPI.TIMEOUT, ) data = response.json() result.update({i["track_id"]: i["isrc"] for i in data.get("items", []) if i.get("isrc") and i.get("track_id")}) if data.get("next"): offset += config.DSPAPI.PAGE_SIZE else: break return result