搜索
查看: 2115|回复: 0

抖音无水印解析 Python

[复制链接]

311

主题

461

帖子

991

积分

vip用户

Rank: 6Rank: 6

积分
991

注册会员活跃会员热心会员

QQ
发表于 2020-5-1 15:06:34 来自手机 | 显示全部楼层 |阅读模式
 import requests
import re
import os

headers = {
    'User-Agent': 'User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1',
}


class Douyin:
    def __init__(self, url):
        '''
        数据初始化
        :param url:
        '''
        self.url = url
        # self.item_ids = ''
        # self.dytk = ''

    def info(self):
        '''
        获取item_ids和dytk参数
        :return: [zxsq-anti-bbcode-item_ids,dytk]
        '''
        url = self.url
        response = requests.get(url, headers=headers)
        now_url = response.url
        pat_item_ids = '/video/(.*?)/'
        self.item_ids = re.compile(pat_item_ids, re.S).findall(now_url)
        pat_dytk = 'dytk: "(.*?)"'
        self.dytk = re.compile(pat_dytk, re.S).findall(response.text)
        print(self.item_ids, self.dytk)
        return [zxsq-anti-bbcode-self.item_ids[0], self.dytk[zxsq-anti-bbcode-0]]

    def video(self):
        '''
        获取无水印视频链接和视频描述
        :return: true_url
        '''
        Douyin.info(self)
        url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/'
        params = {
            'item_ids': self.item_ids,
            'dytk': self.dytk
        }
        response = requests.get(url, headers=headers, params=params).json()
        self.true_url = response[zxsq-anti-bbcode-'item_list'][zxsq-anti-bbcode-0][zxsq-anti-bbcode-'video'][zxsq-anti-bbcode-'play_addr'][zxsq-anti-bbcode-'url_list'][zxsq-anti-bbcode-0]
        self.des = response[zxsq-anti-bbcode-'item_list'][zxsq-anti-bbcode-0][zxsq-anti-bbcode-'desc']
        print(self.true_url, self.des)
        return [zxsq-anti-bbcode-self.true_url, self.des]

    def download(self):
        '''
        获取视频
        :return:
        '''
        Douyin.video(self)
        response = requests.get(self.true_url, headers=headers).content
        if os.path.exists('video') == False:
            os.mkdir('video')
        with open('video/' + self.des + '.mp4', mode='wb') as f:
            f.write(response)


# 主程序
if __name__ == '__main__':
    a = Douyin('https://v.douyin.com/38JgQ3/')
    a.download()

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表