def build_add(name, seed, include_tracks, num_tracks, recent_datetime=None): """ :param name: the title :param seed: a dict {'itemId': id, 'seedType': int} :param include_tracks: if True, return `num_tracks` tracks in the response :param num_tracks: :param recent_datetime: purpose unknown. defaults to now. """ if recent_datetime is None: recent_datetime = datetime.now() recent_timestamp = utils.datetime_to_microseconds(recent_datetime) return { "createOrGet": { "clientId": str(uuid1()), "deleted": False, "imageType": 1, "lastModifiedTimestamp": "-1", "name": name, "recentTimestamp": str(recent_timestamp), "seed": seed, "tracks": [] }, "includeFeed": include_tracks, "numEntries": num_tracks, "params": { "contentFilter": 1 } }
def dynamic_data(sid, plays, playtime): #TODO this can support multiple return json.dumps({'track_stats': [{ 'id': sid, 'incremental_plays': plays, 'last_play_time_millis': str(utils.datetime_to_microseconds(playtime)), 'type': 2 if sid.startswith('T') else 1, 'track_events': [], }]})
def dynamic_params(cls, updated_after=None, start_token=None, max_results=None): """ :param updated_after: datetime.datetime; defaults to epoch """ if updated_after is None: microseconds = 0 else: microseconds = utils.datetime_to_microseconds(updated_after) return {'updated-min': microseconds}
def dynamic_data(sid, plays, playtime): # TODO this can support multiple tracks at a time play_timestamp = utils.datetime_to_microseconds(playtime) event = { 'context_type': 1, 'event_timestamp_micros': str(play_timestamp), 'event_type': 2, # This can also send a context_id which is the album/artist id # the song was found from. } return json.dumps({'track_stats': [{ 'id': sid, 'incremental_plays': plays, 'last_play_time_millis': str(play_timestamp / 1000), 'type': 2 if sid.startswith('T') else 1, 'track_events': [event] * plays, }]})