下载咪咕视频
最近想看纪录片《绿色星球》,刚刚好在咪咕网站上找到这个视频。就萌生了一个想法把这个视频下载下来。
网址:https://m.hebeilaibang.com/bf-174799-1-1.html
网页分析工具,很容易找到m3u8文件。右边红框,框出来的就是一个个ts视频文件。统计了下时长为1:30:02的视频,拆分成了4000多个小的ts视频文件。
那思路就是:
步骤1. 下载,打开m3u8文件。提取里的ts文件。
步骤2.下载ts文件,合并为完整的视频文件。
步骤1代码:有些人就会问为啥不用requests,一开始就是使用的requests但是老是提示证书问题(ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed),短时间内没有找到解决这个证书问题的办法. 反正目标就是要下载ts文件,能下载下来就行,这里就直接使用了python的wget包。
先看看下载下来的m3u8文件,是这个样子的。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:1.303,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/NhAPlV8p.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/PKkwv5hd.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/Ux79JcrZ.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/HAhapIrq.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/YDl5LAiY.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/12fNJKSm.ts
#EXTINF:1.2,
/VMDIR4CAA791091D21D23E63637080226F370/20220111/fRia4tyb/2850kb/hls/plbmFStJ.ts
ts结尾的文件是我们需要下载下来的。拼接完整的网址就可以下载下来了。这里还有个问题,就是这些ts文件命名是乱码的(NhAPlV8p.ts)。需要给他整理个编号。
import wget ts_list = [] web_url = "https://cdn2.bzjupinhang.com:65" def read_file():#只留下ts文件放到ts_list列表中。 with open("index.m3u8") as files: for line in files: # print(type(line)) if line.endswith(".ts\n"): ts_list.append(line.strip("\n")) def download_ts():#拼接下载ts文件的网址,使用wget下载,并对下载下来的视频按顺序进行编号。 for i in range(3695,len(ts_list)): print(web_url+ts_list[i]) ts_file = "{}.ts".format(i) wget.download(web_url+ts_list[i], out=ts_file) read_file() download_ts()
运行这段脚本就是开始下载了。拼网速。下载完成以后进行合并。
import os def heBingTsVideo(download_path,merge_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, "{}.ts".format(i)) f.write(open(ts_video_path, 'rb').read()) print("合并完成!!") download_path = "D:\\movie" merge_path = "D:\\movie\\绿色星球.mp4" heBingTsVideo(download_path,merge_path)
分类:
Python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库