找回密码
  注册[Register]
查看: 936|回复: 13

[python] Python抖音无水印视频解析下载

[复制链接]
发表于 2021-9-16 19:10 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

[Python] 纯文本查看 复制代码
import re
import time

import requests

temp_data = {
    'headers': {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.138 Mobile Safari/537.36  aweme_170401 JsSdk/1.0 NetType/WIFI Channel/update AppName/aweme app_version/17.4.0 ByteLocale/zh-CN Region/CN AppTheme/light SystemFontScale/1.0 BytedanceWebview/d8a21c6'
    }
}

# 取视频ID
def GetVideo(Str_url):
    # 正则取文本内网址
    patt = re.compile(r'(((https?|ftp|file)://|)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|])', re.S)
    data = patt.findall(Str_url)[3][0]
    if 'v.douyin.com' in data:
        try:
            res = requests.get(
                data,
                headers=temp_data['headers'],
                allow_redirects=False
            )
        except None:
            temp_data['GetVideo'] = False
        else:
            Location = res.headers['Location']
            if 'www.douyin.com/404' in Location:
                temp_data['GetVideo'] = False
            else:
                # 取视频ID
                video_id = re.search('\\d{19}/', Location)[0].replace("/", "")
                temp_data['GetVideo'] = video_id
    else:
        temp_data['GetVideo'] = False

# 获取无水印视频地址
def analysis_url(video_id):
    try:
        res = requests.get(
            'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/',
            headers=temp_data['headers'],
            params={
                'item_ids': video_id
            }
        ).json()
    except None:
        temp_data['analysis_url'] = False
    else:
        if res['status_code'] == 0:
            play_url = res['item_list'][0]['video']['vid']
            temp_data[
                'analysis_url'] = 'https://aweme.snssdk.com/aweme/v1/play/?video_id={video_id}&ratio=1080p&line=0'.format(
                video_id=play_url
            )
        else:
            temp_data['analysis_url'] = False

# 下载无水印视频
def down_video(video_url):
    try:
        res = requests.get(
            video_url,
            headers=temp_data['headers']
        ).content
    except None:
        temp_data['down_video'] = False
    else:
        with open('{time}.mp4'.format(time=int(time.time())), 'wb') as f:
            f.write(res)
        temp_data['down_video'] = True

if __name__ == '__main__':
    share_url = '6.92 OxF:/ 好TMD真实  [url]https://v.douyin.com/dBVkpXo/[/url] 复制此链接,打开Dou音搜索,直接观看视频!'
    # 获取视频ID
    GetVideo(share_url)
    if not temp_data['GetVideo']:
        print("解析视频ID失败")
    else:
        # 解析无水印视频地址
        analysis_url(temp_data['GetVideo'])
        if not temp_data['analysis_url']:
            print('获取视频地址失败')
        else:
            # 下载视频
            down_video(temp_data['analysis_url'])
            if not temp_data['down_video']:
                print('下载视频失败')
            else:
                print('视频下载成功!')

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2021-9-16 19:15 来自手机 | 显示全部楼层
感谢大佬分享,大佬666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-16 19:22 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-16 19:38 | 显示全部楼层

感谢楼主的分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-16 19:42 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-16 19:44 | 显示全部楼层
先收藏了,万一用到呢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-16 21:07 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2021-9-17 09:52 | 显示全部楼层
顶帖是一种态度,也是一种尊重。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-17 10:58 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-9-17 11:36 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

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

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-5-13 14:31 , Processed in 0.040639 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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