"""Model for ows-analytics.""" from owsrequest import request from podcast.constants import api from podcast.utils import api_utils OWS_ANALYTICS = 'ows-analytics' def _headers(): headers = api_utils.get_ows_json_headers() headers['Orchard-Profile-Type'] = api.AUTH0_PROFILE_NAME return headers def top_episodes( podcast_ids, date_range, countries, players, limit, offset, sort_field, sort_order, start_date=None, end_date=None): """Get top episodes for podcast_ids.""" response = request.post( OWS_ANALYTICS, '/top-podcast-episodes', json={ 'podcast_ids': podcast_ids, 'limit': limit, 'offset': offset, 'date_range': date_range, 'countries': countries, 'players': players, 'sort_field': sort_field, 'sort_order': sort_order, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def episode_daily_downloads(episode_ids, date_range, countries, players, start_date=None, end_date=None): """Get episode daily downloads for episode ids.""" response = request.get( OWS_ANALYTICS, '/episode-daily-downloads', params={ 'episode_ids': episode_ids, 'date_range': date_range, 'countries': countries, 'players': players, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def top_podcasts(podcast_ids, date_range, countries, players, limit, offset, sort_field, sort_order, start_date=None, end_date=None): """Get (top podcasts) for network ids.""" response = request.post( OWS_ANALYTICS, '/top-podcasts', json={ 'podcast_ids': podcast_ids, 'limit': limit, 'offset': offset, 'date_range': date_range, 'countries': countries, 'players': players, 'sort_field': sort_field, 'sort_order': sort_order, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def podcast_daily_downloads(podcast_ids, date_range, countries, players, start_date=None, end_date=None): """Get podcast daily downloads for podcast ids.""" response = request.get( OWS_ANALYTICS, '/podcast-daily-downloads', params={ 'podcast_ids': podcast_ids, 'date_range': date_range, 'countries': countries, 'players': players, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def country_daily_downloads(object_id, object_type, date_range, countries, players, start_date=None, end_date=None): """Get podcast daily downloads for podcast ids.""" response = request.get( OWS_ANALYTICS, '/podcast-country-daily-downloads', params={ 'object_id': object_id, 'object_type': object_type, 'date_range': date_range, 'countries': countries, 'players': players, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def top_networks(network_ids, date_range, countries, players, limit, offset, sort_field, sort_order, start_date=None, end_date=None): """Get top networks for network ids.""" response = request.post( OWS_ANALYTICS, '/top-networks', json={ 'network_ids': network_ids, 'limit': limit, 'offset': offset, 'date_range': date_range, 'countries': countries, 'players': players, 'sort_field': sort_field, 'sort_order': sort_order, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def network_daily_downloads(network_ids, date_range, countries, players, start_date=None, end_date=None): """Get network daily downloads for network ids.""" response = request.get( OWS_ANALYTICS, '/network-daily-downloads', params={ 'network_ids': network_ids, 'date_range': date_range, 'countries': countries, 'players': players, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def player_daily_downloads(object_id, object_type, date_range, countries, players, start_date=None, end_date=None): """Get players daily downloads for object id.""" response = request.get( OWS_ANALYTICS, '/podcast-player-daily-downloads', params={ 'object_id': object_id, 'object_type': object_type, 'date_range': date_range, 'countries': countries, 'players': players, 'start_date': start_date, 'end_date': end_date }, headers=_headers()) return response.json() def get_chartable_podcasts_by_ids(podcast_ids): """Get chartable podcasts by given podcast ids.""" response = request.get( OWS_ANALYTICS, '/chartable-podcasts-by-podcast-ids', params={'podcast_ids': podcast_ids}, headers=_headers()) return response.json() def get_podcast_chart(store, category, country, report_date, podcast_ids): """Get podcast chart.""" response = request.post( OWS_ANALYTICS, '/podcast-chart', json={ 'podcast_ids': podcast_ids, 'store': store, 'category': category, 'country': country, 'report_date': report_date }, headers=_headers()) return response.json() def get_episode_chart(category, country, report_date, podcast_ids): """Get episode chart.""" response = request.post( OWS_ANALYTICS, '/episode-chart', json={ 'podcast_ids': podcast_ids, 'category': category, 'country': country, 'report_date': report_date }, headers=_headers()) return response.json() def get_episode_spikes(date): """Get episode spikes.""" response = request.get( OWS_ANALYTICS, '/podcast-episode-spikes', params={ 'date': date }, headers=_headers()) return response.json()