外链论坛

 找回密码
 立即注册
搜索
查看: 44|回复: 3

Python学习项目练习——m3u8视频下载

[复制链接]

3054

主题

176

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098893
发表于 2024-8-18 00:21:38 | 显示全部楼层 |阅读模式

非常多时候你想下载视频下载按钮,那样你该怎么做呢?Python学习完以后你能够经过Python下载这些视频。今天就分享一下m3u8视频怎样用Python下载。

查询视频

找到视频的源文件,这是你要抓取文件的第1步。此时,你会发掘浏览器的研发者工拥有多么棒!

电脑浏览器打开要下载电影的页面,按下F12打开浏览器研发工具,选取网络/Network,这儿能够看到网站请求的所有数据

刷新页面,找到含有.m3u8的请求数据流,能够点击研发者工具栏,按ctrl+F查询.m3u8文件。而后打开标头/Headers,查看请求位置

能够经过预览/Response查看.m3u8文件包括那些数据,将这些位置复制下来,便是咱们要下载的视频数据,这些视频通常都是.ts格式的,便是视频片段。你能够一条一条下载下来,但既然咱们说了要用Python下载,那样,接下来的事情咱们用代码实现。

ts视频下载

咱们将预览内容Ctrl+A全选,而后复制,粘贴到新建的txt文件中,而后处理下载问题。

import re # 读取文件,file便是保留复制内容的txt文件 # lfile是得到复制视频的次序list_file # dfile是要下载的视频链接 download_file # url 是视频的url路径前缀 def read(file, lfile, dfile, url): #读取复制内容 with open(f./{file}, r+, encoding=utf-8) as r: # 按行读取 ts_file = r.readlines() # 正则模块,获取复制文件中的所有ts文件 re_ts = re.compile(r\w+\.ts) # 倘若ts文件有?后带的参数,要识别 re_ts_data = re.compile(r\w+\.ts?\w+.+|\w+\.ts) # 正则模块,url正则 re_ts_url = re.compile(rhttp://\w+.+|https://\w+.+) # 创建ts文件次序文件 with open(f{lfile}, a, encoding=utf-8) as w: for i in ts_file: try: # 查询所有的ts文件名 w.write(ffile {re.findall(re_ts, i)[0]}\n) except: pass # 创建ts下载文件 with open(f{dfile}, a, encoding=utf-8) as f: try: # 创建下载文件时要在文件中添加url前缀 f.write(f{url}{re.findall(re_ts_data, i)[0]}\n) except: pass read(a.txt, list.txt, down.txt, https://www.xxx.com/)

这是对复制内容的处理,方便后面的继续进行,此时咱们得到了三个文件,一个是前面创建的txt文件,后面两个是程序运行时得到的文件。重视倘若要创建新的下载视频,这儿要修改read()传入的参数。由于lfile和dfile的打开权限是a,再次执行会在原来文件内继续添加内容,会导致之前的内容重复。

import os import re import wget # 这个库必须经过命令pip install wget下载 # 创建下载,dir是下载文件的文件夹名叫作,url是下载文件 def url_down(dir, url): try: # 创建文件夹 os.mkdir(dir) except: pass # 下载文件 wget.download(url, out=f./{dir}/) if __name__ == __main__: # 读取down.txt文件中的ts视频的url with open(down.txt, r+, encoding=utf-8) as r: txt_list = r.readlines() # 创建视频链接url的正则模块 url_get = re.compile(rhttp://\w+.+|https://\w+.+)for i in txt_list: # 查询ts的url k = re.findall(url_get, i) # 由于文件中可能存在空行非url行,因此加个校验 if k == []: pass else: # 下载 url_down(视频, k[0])

ts视频转mp4

当你执行完成后发掘会有非常多视频片段,不方便查看和运用因此咱们要把这些ts视频片段合并成一整段的mp4视频格式。

这儿用到一个工具--ffmpeg,一款非常好用处理音视频的工具包。

下载完成后,将文件解压,而后将bin文件的路径添加到系统环境中,命令行执行ffmpeg -version查看是不是安装成功。

# 这是python一个终端操作工具 import subprocess import os def ts_mp4(filename): ts_path = os.path.join(os.getcwd(), 视频/) try: os.mkdir(mp4视频) except: passmp4_path = os.path.join(os.getcwd(),mp4视频/) cmdline = f"ffmpeg -f concat -i {ts_path}list.txt -c copy {mp4_path}{filename}.mp4" subprocess.call(cmdline, shell=True) print(f{filename}视频转换成功!) ts_mp4(new)
回复

使用道具 举报

2986

主题

2万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96066074
发表于 2024-10-8 23:09:16 | 显示全部楼层
外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢!
回复

使用道具 举报

2967

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109346
发表于 2024-10-13 15:59:59 | 显示全部楼层
百度seo优化论坛 http://www.fok120.com/
回复

使用道具 举报

2881

主题

2万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979665
发表于 2024-10-25 19:27:17 | 显示全部楼层
你的见解独到,让我受益匪浅,非常感谢。
回复

使用道具 举报

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

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-5 16:34 , Processed in 0.080042 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.