def parse_to_user(author_json): """ parse json to User :param author_json: :return: User """ id = author_json.get('mid') avatar_url = get_array_first( author_json.get('avatar_larger', {}).get('url_list')) is_verified = author_json.get('is_verified') verify_info = author_json.get('custom_verify') is_hide_search = author_json.get('hide_search') nickname = author_json.get('nickname') region = author_json.get('CN') signature = author_json.get('signature') gender = parse_gender(author_json.get('gender')) birthday = parse_datetime(author_json.get('birthday')) alias = author_json.get('unique_id') or author_json.get('short_id') if id: return User(id=id, avatar_url=avatar_url, is_verified=is_verified, verify_info=verify_info, is_hide_search=is_hide_search, nickname=nickname, region=region, signature=signature, gender=gender, birthday=birthday, alias=alias) else: return None
def hot_search(): """ get 20 of the most popular searching videos in billboard :return:HotSearch """ result = get(hot_search_url, headers=headers) data = result.get('data', {}) date_time = parse_datetime(data.get('active_time')) word_list = data.get('word_list', []) data_lists = [{'hot_value': item.get('hot_value'), 'word': item.get('word')} for item in word_list] return HotSearch(data=data_lists, datetime=date_time)
def parse_to_video(data): """ parse json to Video :param data: :return: Video """ id = data.get('aweme_id') statistics = data.get('statistics', {}) like_count = statistics.get('digg_count') comment_count = statistics.get('comment_count') share_count = statistics.get('share_count') share_url = data.get('share_url') desc = data.get('desc') group_id = data.get('group_id') author_user_id = data.get('author_user_id') create_time = parse_datetime(data.get('create_time')) is_ads = data.get('is_ads') region = data.get('region') video = data.get('video', {}) ratio = video.get('ratio') cover_url = get_array_first(get_cover_url(video).get('url_list', [])) play_url = get_video_url(video.get('play_addr', {}).get('url_list', [])) duration = data.get('duration') music = parse_to_music(data.get('music', {})) author = parse_to_user(data.get('author', {})) address = parse_to_address(data.get('poi_info', {})) if id: return Video(id=id, like_count=like_count, comment_count=comment_count, share_count=share_count, share_url=share_url, desc=desc, group_id=group_id, author_user_id=author_user_id, create_time=create_time, is_ads=is_ads, region=region, ratio=ratio, cover_url=cover_url, play_url=play_url, duration=duration, music=music, author=author, address=address) else: return None
def hot_stars(): """ get 20 of the most popular starts in billboard :return:HotStar """ result = get(url=hot_star_url, headers=headers) date_time = parse_datetime(result.get('active_time')) star_list = result.get('user_list', []) stars = [] for item in star_list: star = parse_to_star(item) stars.append(star) return HotStar(data=stars, datetime=date_time)
def hot_pe_top20(): """ get 20 of the most popular positive energy videos in billboard :return:HotPETopVideo """ result = get(hot_positive_energy_url, headers=headers) active_time = parse_datetime(result.get('active_time')) video_lists = result.get('aweme_list', []) videos = [] for item in video_lists: video = parse_to_video(item.get('aweme_info')) video.hot_value_count = item.get('hot_value') videos.append(video) return HotPETopVideo(data=videos, datetime=active_time)
def hot_music(): """ get 20 of the most popular musics in billboard :return:HotTopMusic """ result = get(url=hot_music_url, headers=headers) date_time = parse_datetime(result.get('active_time')) music_list = result.get('music_list', []) musics = [] for item in music_list: music = parse_to_music(item.get('music_info')) music.hot_value = item.get('hot_value') musics.append(music) return HotTopMusic(data=musics, datetime=date_time)