aaronthon
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)

 

分类:

技术点:

相关文章: