实用主义 | 再也不看马赛克画质的电影了
个人公众号:咸鱼普拉思
废话
从《夏洛特烦恼》、《羞羞的铁拳》到《西虹市首富》,开心麻花貌似成为引爆票房的奇点。想去电影院支持一波,但程序猿看电影不存在的!BUG改完了?膨胀了?还想看电影?
按耐不住内心的渴望,在种种原因的驱使下我还是向枪版低头了(对不起,我悔过
于是我罪恶的点开了朋友圈某微商的福利资源,画质是不错但是他卡啊。。看一秒卡三秒。。
难得摸鱼的时间怎么能浪费在这上面,于是祭出我大Python,很快我就拿到了我想要的.avi.mp4 高清画质的资源,美滋滋~
动手
获取.ts文件
PC访问了福利资源网址,没有任何显示自动下载了一个 .mu38 后缀的文件,面向搜索引擎学习了下,得到以下结果:
m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求。
看到这里我用Notepad++打开,得到以下结果:
手动请求了一个网址:
https://doubanzyv2.tyswmp.com:81/2018/07/30/LSn7hSBfY0LxpKX2/out000.ts
得到一个out000.ts文件
这里的 .ts 文件可以理解为是视屏分隔后的片段,我们只要把它组合起来就是我们想要的结果了。
到这里,基本就有思路了,提取文件中所有 .ts 文件的链接,使用requests挨个请求并保存返回的 .ts 文件,再合并在一起就可以了, so easy !
代码如下:
import requests
import re
with open("playlist.m3u8", "r") as f:
filedetail = f.read()
pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
url_list = re.findall(pattern, filedetail)
for url in url_list:
requests.packages.urllib3.disable_warnings()
r = requests.get(url,verify=False)
filename = re.findall(".*/(.*?).ts", url)
# print(filename)
with open(filename[0]+".ts", "wb") as code:
code.write(r.content)
print("下载成功", filename[0]+".ts")
这个时候已经获取到所有的 .ts 文件
然后使用缓冲合并工具
合并所有的 .ts 文件。
合并
把.ts文件整理到手机当中(用安卓模拟器应该也是可以的),打开软件按照下图的步骤操作即可。
工具以及m3u8文件已经放在云盘上了,有需要的朋友可以在公众号回复「西红柿」获取,MP4文件实在分享不出来,有需要的话跑下脚本吧~
写在后面
我是咸鱼,这是实用主义系列的第一篇文章。
人生苦短,我用Python。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
小编的Python入门免费视频课程!!!
【最新免费微课】小编的Python快速上手matplotlib可视化库!!!
崔老师爬虫实战案例免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。