import requests user_id = \'58841646784\' # 6556303280 # 获取一个用户的所有作品 """ signature = _bytedAcrawler.sign(\'用户ID\') douyin_falcon:node_modules/byted-acrawler/dist/runtime """ import subprocess signature = subprocess.getoutput(\'node s1.js %s\' %user_id) user_video_list = [] # ############################# 获取个人作品 ########################## user_video_params = { \'user_id\': str(user_id), \'count\': \'21\', \'max_cursor\': \'0\', \'aid\': \'1128\', \'_signature\': signature, \'dytk\': \'b4dceed99803a04a1c4395ffc81f3dbc\' # \'114f1984d1917343ccfb14d94e7ce5f5\' } def get_aweme_list(max_cursor=None): if max_cursor: user_video_params[\'max_cursor\'] = str(max_cursor) res = requests.get( url="https://www.douyin.com/aweme/v1/aweme/post/", params=user_video_params, headers={ \'user-agent\':\'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\', \'x-requested-with\':\'XMLHttpRequest\', \'referer\':\'https://www.douyin.com/share/user/58841646784\', } ) content_json = res.json() aweme_list = content_json.get(\'aweme_list\', []) user_video_list.extend(aweme_list) if content_json.get(\'has_more\') == 1: return get_aweme_list(content_json.get(\'max_cursor\')) get_aweme_list() # ############################# 获取喜欢作品 ########################## favor_video_list = [] favor_video_params = { \'user_id\': str(user_id), \'count\': \'21\', \'max_cursor\': \'0\', \'aid\': \'1128\', \'_signature\': signature, \'dytk\': \'b4dceed99803a04a1c4395ffc81f3dbc\' } def get_favor_list(max_cursor=None): if max_cursor: favor_video_params[\'max_cursor\'] = str(max_cursor) res = requests.get( url="https://www.douyin.com/aweme/v1/aweme/favorite/", params=favor_video_params, headers={ \'user-agent\':\'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\', \'x-requested-with\':\'XMLHttpRequest\', \'referer\':\'https://www.douyin.com/share/user/58841646784\', } ) content_json = res.json() aweme_list = content_json.get(\'aweme_list\', []) favor_video_list.extend(aweme_list) if content_json.get(\'has_more\') == 1: return get_favor_list(content_json.get(\'max_cursor\')) get_favor_list() # ############################# 视频下载 ########################## for item in user_video_list: video_id = item[\'video\'][\'play_addr\'][\'uri\'] video = requests.get( url=\'https://aweme.snssdk.com/aweme/v1/playwm/\', params={ \'video_id\':video_id }, headers={ \'user-agent\': \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\', \'x-requested-with\': \'XMLHttpRequest\', \'referer\': \'https://www.douyin.com/share/user/58841646784\', }, stream=True ) file_name = video_id + \'.mp4\' with open(file_name,\'wb\') as f: for line in video.iter_content(): f.write(line) for item in favor_video_list: video_id = item[\'video\'][\'play_addr\'][\'uri\'] video = requests.get( url=\'https://aweme.snssdk.com/aweme/v1/playwm/\', params={ \'video_id\':video_id }, headers={ \'user-agent\': \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\', \'x-requested-with\': \'XMLHttpRequest\', \'referer\': \'https://www.douyin.com/share/user/58841646784\', }, stream=True ) file_name = video_id + \'.mp4\' with open(file_name, \'wb\') as f: for line in video.iter_content(): f.write(line)