首页 > 编程语言 >Python抖音视频去水印,并打包成exe可执行文件

Python抖音视频去水印,并打包成exe可执行文件

时间:2022-09-30 19:24:10浏览次数:88  
标签:视频 exe headers Python get 音视频 url video print

前言

抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使用并进行炫耀一番。

一.问题分析

首先,在抖音APP中分享视频,点击复制链接,即可得到如下所示的分享视频链接。

https://v.douyin.com/d8LpxMQ/

在浏览器中打开后,发现链接变成了

https://www.iesdouyin.com/share/video/6999605370222054663/

我们抓下包发现了 item_ids 的接口,后面跟的值就是重定向url的最后这部分(6999605370222054663),我判断这应该是视频的ID了。接口地址如下:

https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6999605370222054663

接下来我们看看这个接口请求返回的数据,当我点开Preview的时候,有视频的文案、作者、音乐、缩略图、地址等等。
在这里插入图片描述
我拿出视频的地址后,复制到浏览器打开。视频url如下:

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0d00fg10000c4hpfk3c77uar6l7cs90&ratio=720p&line=0

打开后发现,视频左上角的水印还是在啊。但是链接中去掉 wm,然后复制到浏览器打开,视频的水印没了。视频无水印的地址如下:

https://aweme.snssdk.com/aweme/v1/play/?video_id=v0d00fg10000c4hpfk3c77uar6l7cs90&ratio=720p&line=0

经过简单的分析,抖音去水印的原理就被搞清楚了,既然原理搞明白了,那写代码就非常简单了。

二.代码编写

1.导包和定义请求头

import requests

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36",
}

2.获取分享链接

def get_share_url(url):
    try:
        r = requests.get(url, headers=headers, allow_redirects=False)
        return r.headers['location']
    except Exception as e:
        print("解析失败")
        print(e)

3.获取视频链接

def get_video_url(url):
    if not url:
        return

    try:
        vid = url.split("/?")[0].split("video/")[1]
        xhr_url = f'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={vid}'

        r = requests.get(xhr_url, headers=headers).json()
        video_url = r['item_list'][0]['video']['play_addr']['url_list'][0]
        return video_url

    except Exception as e:
        print("解析失败")
        print(e)

4.下载视频

def download_video(url, name):
    if not url:
        return

    try:
        r = requests.get(url, headers=headers)
        with open(name + '.mp4', 'wb') as f:
            f.write(r.content)
        print("下载完成")

    except Exception as e:
        print("下载失败")
        print(e)

5.调用

if __name__ == "__main__":
    while 1 < 2:
        # 抖音APP分享的短链接
        url = input("请输入抖音视频链接: ")
        # url = "https://v.douyin.com/R4tKg6C/"
        name = input("请给视频起个名字吧: ")
        share_url = get_share_url(url)
        video_url = get_video_url(share_url)
        download_video(video_url, name)
        print("去除水印完成!")

全部代码

import requests

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36",
}


def get_share_url(url):
    try:
        r = requests.get(url, headers=headers, allow_redirects=False)
        return r.headers['location']
    except Exception as e:
        print("解析失败")
        print(e)


def get_video_url(url):
    if not url:
        return

    try:
        vid = url.split("/?")[0].split("video/")[1]
        xhr_url = f'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={vid}'

        r = requests.get(xhr_url, headers=headers).json()
        video_url = r['item_list'][0]['video']['play_addr']['url_list'][0]
        return video_url

    except Exception as e:
        print("解析失败")
        print(e)


def download_video(url, name):
    if not url:
        return

    try:
        r = requests.get(url, headers=headers)
        with open(name + '.mp4', 'wb') as f:
            f.write(r.content)
        print("下载完成")

    except Exception as e:
        print("下载失败")
        print(e)


if __name__ == "__main__":
    while 1 < 2:
        # 抖音APP分享的短链接
        url = input("请输入抖音视频链接: ")
        # url = "https://v.douyin.com/R4tKg6C/"
        name = input("请给视频起个名字吧: ")
        share_url = get_share_url(url)
        video_url = get_video_url(share_url)
        download_video(video_url, name)
        print("去除水印完成!")

三.使用教程

1.运行程序后输入分享的抖音视频链接;
2.再输入去除水印后的视频的名称;
3.运行程序成功会将视频保存下来;

四.打包成exe可执行文件

4.1 安装pyinstaller,使用安装命令:

pip install pyinstaller

4.2进行打包

pyinstaller -F -w -i 图标名.后缀 源文件.py
# 例子:pyinstaller -F -w -i qt-logo.ico one.py

4.3最终效果

打包完成后会在当前目录下生成dist文件夹,打开后双击exe接可以使用了是不是很简单啊,最后附上效果图
去水印成功

五.总结

到此这篇关于Python抖音视频去水印,并打包成exe可执行文件的详细操作指南的文章就介绍到这了,十分感谢大家的观看,喜欢的可以点个关注哦。

标签:视频,exe,headers,Python,get,音视频,url,video,print
From: https://www.cnblogs.com/qi66/p/16745889.html

相关文章

  • Python学习路程——Day08
    Python学习路程——Day08目录Python学习路程——Day08字典相关操作1、类型转换2、字典取值3、修改值的数据与新增键值对4、删除数据5、统计字典中键值对的个数6、字典三剑......
  • Python Markdown解析利器----mistune详细用法记录
    @目录小试牛刀开始使用mistunemistune简单使用mistune高级用法(自定义mistune)mistune中插件插件使用方法(以删除线(strikethrough)为例)插件包名内置插件删除线(striket......
  • Python tkinter 做一个VIP视频解析的桌面软件,100%你会爱上它
    前言tkinter:GUI桌面应用开发模块,写软件界面你还可以打包成exe软件,哪怕你没有python环境,一样可以用虽然不一定要有界面,但是有界面,用户体验很棒…环境使用......
  • python面试编程题
    1:已知字符串 str='skdaskerkjsalkj',请统计该字符串中各字母出现的次数思路是:用字典str='skdaskerkjsalkj'a=dict()foriinstr:ifinotina.keys():a......
  • python数据类型·内置方法2
    今日内容概要字典相关操作元组相关操作集合相关操作字符编码(理论)字典相关操作1.类型转换 dict()字典的转换一般不使用关键字而是自己动手转2.字典必须......
  • 设置mode='out-on'导致路由切换过快路由加载报错 Failed to execute 'insertBefore'
    原代码:  解决代码:  原因未知 ......
  • JavaScript IndexedDB 完整指南
    本文将通过一个crmeb小教程向你介绍 ​​IndexedDB​​​,并将 ​​IndexedDB​​​ 与其他可用选项进行比较。​​IndexedDB​​ 用于在浏览器中存储数据,对于需要离线工......
  • 进入python的世界_day8_python基础——字典、元组、合集的内置方法、编码的介绍
    写在开头,昨天学了一些数据类型的内置使用方法,比如整形、浮点型、字符串、列表,今天学字典、元组、集合的常用内置方法,布尔值是没有所谓的内置方法的,还学了字符编码一、字......
  • python学习之数据内置
    今日分享字典相关操作元组相关操作集合相关操作字符编码(理论)字典相关操作1.类型转换 dict() 字典的转换一般不使用关键字而是靠自己手动转2.必须要学的......
  • Python 空间分析简介
    Python空间分析简介ImageSource:关注涉及任何类型的特定地理区域或位置信息的数据称为“空间”数据(或“地理空间”数据)。地理空间数据有助于理解地理属性和任何其他......