from apollo_utils.core.constants.dsp import DSP from typing import Any, Dict, List from server.constants.playlists.delphi.by_api.track_positions_playlists import TrackPositionsPlaylists from server.scenarios.playlists.by_track.extended.common import get_track_playlists_extended from server.utils.common import group_by_items async def get_current_playlists_apple_by_track_ap( isrc: str, country_code: List[str], meta_country_code: str ) -> Dict[str, List[Dict[str, Any]]]: """Get Dict of current APPLE Track in playlist items (AP Scenario) Args: isrc: ISRC. country_code: Playlist country code filter. meta_country_code: Playlist country code to be a meta playlists when playlists are grouped by Returns: {"items": [Apple Track in playlist]} """ delphi_playlists_by_track = await get_track_playlists_extended( dsp=DSP.APPLE, isrc=isrc, delphi_include=[ TrackPositionsPlaylists.INCLUDE.PLAYLISTS, TrackPositionsPlaylists.INCLUDE.STREAMS_FOR_PERIOD, TrackPositionsPlaylists.INCLUDE.NUM_TRACKS, ], streams_country_code=[ TrackPositionsPlaylists.STREAMS_COUNTRY_CODE.WORLDWIDE, TrackPositionsPlaylists.STREAMS_COUNTRY_CODE.LOCAL, ], country_code=country_code, sort_order=[TrackPositionsPlaylists.SORT_ORDER.ASC], sort_by=[TrackPositionsPlaylists.SORT_BY.PLAYLIST_ID], ) items = await group_by_items( items=delphi_playlists_by_track["items"], item_group_by_key="playlist_id", item_meta_identifier_key="playlist.country_code", meta_identifier=meta_country_code, add_key="countries", ) return {"items": items}