"""
爬取 ts 视频文件
"""
import urllib.request
import urllib.parse
import re
#从网页上下载的m3u8的ts文件目录
filepath = "/Users/xxxxxxx/Desktop/Film/Final/index1.m3u8"
txt = open(filepath, "r").read()
result=""
test_text = re.findall("..............+ts", txt)#取出每行含有ts的文本
result = result +'\n'.join(test_text)#换行输出
del_awake = result.replace("/20220205/8sSQcXhX/2306kb/hls/", "")#去掉每一行一样的字符串
tspart=del_awake.split("\n")#用这个方法将tresult拆成数组
#print(tspart[193])
# 保存ts到的文件夹
dir_path = "/Users/xxxxxx/Desktop/Film"
# ts视频流的基础路径
base_url = "https://xxxx.xxxx.com:65/20220205/8sSQcXhX/2306kb/hls/"
# 文件名的通用部分
base_urlall = ""
name = ""
# 依次爬取
for i in range(0, len(tspart)):
base_urlall = base_url + tspart[i]#把url和每个文件名拼接在一起
#print(base_urlall)
name = str(i) + ".ts"#生成文件名
#print(i,"+",name)
urllib.request.urlretrieve(base_urlall, "/Users/xxxxxxx/Desktop/Film/allts/" + name)#最关键的一步:通过Url下载视频!
"""
合并 ts 文件
"""
import os
base_path = "/Users/xxxxxxxx/Desktop/Film/allts"
dir_name = "ts_file"
# 合并文件的目标文件夹
save_path = '/Users/xxxxxxx/Desktop/Film/hebing'
# 获取ts文件目录
file_list = os.listdir(base_path)
# 保存目标目录如果不存在则创建
#if not os.path.exists(save_path):
# os.mkdir(save_path)
#合并文件的方法,download_path是下载ts文件的目录,hebing_path是合并后的文件存放的文件
def heBingTsVideo(download_path,hebing_path):
all_ts = os.listdir(download_path)
with open(hebing_path, 'wb+') as f:
for i in range(len(all_ts)):
ts_video_path = os.path.join(download_path, all_ts[i])
f.write(open(ts_video_path, 'rb').read())
print("合并完成!!")
download_path = r"/Users/xxxxxxxx/Desktop/Film/allts"
hebing_path = r"/Users/xxxxxxxx/Desktop/Film/hebing/hebing.mp4"
heBingTsVideo(download_path,hebing_path)
先上代码,第一次写原创博客,不知道怎么弄,┭┮﹏┭┮。编辑的文字被代码覆盖了!
本来打算是从页面上爬取并解析视频,参考链接(python m3u8视频ts解密合成完整mp4_FeelUps--The more U Give,The More U Have-CSDN博客_python 解密ts)然后下载,可我发现我没发现那个视频网站的视频规律就放弃了。于是选择直接用index1.m3u8文件里的ts文件名拼接下载链接,然后就能下载视频(参考链接:ts视频文件的爬取与合并_纯洁的小魔鬼-CSDN博客_ts文件抓取),我也成功了,但是视频居然有2000多个ts文件,十分钟我才下载了190个,顺便吐槽一下出租屋的wifi还不如我的热点快。具体怎么下载index.m3u8文件见第一个参考博客。今天很开心!
|