• 抖音无水印解析 Python


    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: [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 [self.item_ids[0], self.dytk[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['item_list'][0]['video']['play_addr']['url_list'][0]
            self.des = response['item_list'][0]['desc']
            print(self.true_url, self.des)
            return [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()
    
  • 相关阅读:
    【转载】uboot的工具mkimage使用方法
    u-boot-2010.3移植到Tiny6410问题总结
    【转载】 GNU GCC 选项说明
    【转载】GCC 预处理器选项
    用kermit通过串口往nandflash任意地址里烧写任何文件!
    自己写Tiny6410的Bootloader总结!
    ARM常用汇编指令介绍
    Ubuntu14.04和Tiny6410挂载NFS服务!
    Tiny 6410的Linux学习总结!
    Tiny6410下的第一个Linux驱动程序
  • 原文地址:https://www.cnblogs.com/L1079991001/p/12782998.html
Copyright © 2020-2023  润新知