from typing import List from flask import jsonify from delphi_api.const import DEFAULT_PAGE_SIZE from delphi_api.utils import Strings from delphi_api.v2.view_models.amazon import ( AmazonPlaylistStreamViewModel, AmazonPlaylistTrackStreamViewModel, AmazonTrackStreamViewModel, ) class AmazonMusicView: @staticmethod def get_tracks_streams( isrc: List[str], end_date: str, start_date: str, country_code: str = None, group_by: str = None, limit: int = DEFAULT_PAGE_SIZE, offset: int = 0): isrc = [Strings.normalize_isrc(i) for i in isrc] view_model = AmazonTrackStreamViewModel() view_model.batch_load_tracks_streams( isrc=isrc, start_date=start_date, end_date=end_date, country_code=country_code, group_by=group_by, limit=limit, offset=offset) return jsonify(view_model.to_dict()) @staticmethod def get_playlist_tracks_streams( isrc: List[str], playlist_id: str, end_date: str, start_date: str, country_code: str = None, group_by: str = None, limit: int = DEFAULT_PAGE_SIZE, offset: int = 0): isrc = [Strings.normalize_isrc(i) for i in isrc] view_model = AmazonPlaylistTrackStreamViewModel() view_model.batch_load_playlist_tracks_streams( isrc=isrc, playlist_id=playlist_id, start_date=start_date, end_date=end_date, country_code=country_code, group_by=group_by, limit=limit, offset=offset) return jsonify(view_model.to_dict()) @staticmethod def get_playlist_streams( playlist_id: List[str], end_date: str, start_date: str, country_code: str = None, group_by: str = None, limit: int = DEFAULT_PAGE_SIZE, offset: int = 0): view_model = AmazonPlaylistStreamViewModel() view_model.batch_load_playlists( playlist_id=playlist_id, start_date=start_date, end_date=end_date, country_code=country_code, group_by=group_by, limit=limit, offset=offset) # This model does not contain ISRC, so we use playlist_id for grouping view_model.base_key_name = 'playlist_id' return jsonify(view_model.to_dict())