wupeiqi

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
import requests

url = \'https://www.douyin.com/share/user/6556303280/?share_type=link\'  # 75097696932/96488770253/6556303280/67561351000

# ###################### 1. 根据url获取用户ID #########################
user_id = re.findall(\'share/user/(.*)/\?\', url)[0]

# ###################### 2. 根据用户ID获取签名 #########################
# 方式一:
import os

output = os.popen(\'node s1.js %s\' % user_id)
# output = os.popen(\'node byted-acrawler.js %s\' % user_id)
signature = output.readlines()[0].strip()
# 方式二:
"""
def exec_javascript(file_path, func, *args):
    pip3 install execjs
    import execjs

    with open(file_path, \'r\', encoding=\'UTF-8\') as f:
        content = f.read()
    ctx = execjs.compile(content)
    return ctx.call(func, *args)

signature = exec_javascript("encode.js", \'_bytedAcrawler.sign\', user_id)
"""

# ###################### 3. 获取抖音用户发送过的所有的视频 #########################
headers = {
    \'accept\': \'application/json\',
    \'accept-encoding\': \'gzip, deflate, br\',
    \'accept-language\': \'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\',
    \'upgrade-insecure-requests\': \'1\',
    \'host\':\'www.douyin.com\',
    \'X-Requested-With\':\'XMLHttpRequest\',
    \'user-agent\': \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\',
}

user_video_list = []

user_video_params = {
    \'user_id\': str(user_id),
    \'count\': \'21\',
    \'max_cursor\': \'0\',
    \'aid\': \'1128\',
    \'_signature\': signature,
    \'dytk\': \'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=headers
    )
    content_json = res.json()
    print(content_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()

print("该用户发布过抖音", user_video_list)

# ###################### 4. 获取抖音赞过的所有视频 #########################
#
# favor_video_list = []
#
# favor_video_params = {
#     \'user_id\': str(user_id),
#     \'count\': \'21\',
#     \'max_cursor\': \'0\',
#     \'aid\': \'1128\',
#     \'_signature\': signature
# }
#
#
# 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=headers
#     )
#     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()
#
# print("该用户赞过抖音", favor_video_list)

# ###################### 5. 下载抖音 #########################
"""
base_download_folder = os.path.join(\'download\', user_id)
if not os.path.isdir(base_download_folder):
    os.mkdir(base_download_folder)

# 下载自己的视频
user_download_folder = os.path.join(base_download_folder, \'user\')
if not os.path.isdir(user_download_folder):
    os.mkdir(user_download_folder)

for aweme in user_video_list:
    if aweme.get(\'video\', None):
        video_id = aweme[\'video\'][\'play_addr\'][\'uri\']

        file_name = video_id + ".mp4"
        file_path = os.path.join(user_download_folder, file_name)

        response_video = requests.get(
            url=\'https://aweme.snssdk.com/aweme/v1/play/\',
            params={
                \'video_id\': video_id,
            },
            stream=True,
        )
        with open(file_path, \'wb\') as fh:
            for chunk in response_video.iter_content(chunk_size=1024):
                fh.write(chunk)

# 下载赞过的视频
"""
"""
favor_download_folder = os.path.join(base_download_folder, \'favor\')
if not os.path.isdir(favor_download_folder):
    os.mkdir(favor_download_folder)

for aweme in favor_video_list:
    if aweme.get(\'video\', None):
        video_id = aweme[\'video\'][\'play_addr\'][\'uri\']

        file_name = video_id + ".mp4"
        file_path = os.path.join(favor_download_folder, file_name)

        response_video = requests.get(
            url=\'https://aweme.snssdk.com/aweme/v1/play/\',
            params={
                \'video_id\': video_id,
            },
            stream=True,
        )
        with open(file_path, \'wb\') as fh:
            for chunk in response_video.iter_content(chunk_size=1024):
                fh.write(chunk)
"""

  

分类:

技术点:

相关文章: