爬取时间2022/8/19

在上上篇示例中,大量乱序ts文件合并成mp4文件虽然示范了如何合并乱序文件,

由于os模块合并文件有上限(650左右),对于动辄几千ts文件的电影来说,如果不采用循环太费时间.

本文示范如何利用循环合并文件,再也不用每次手动修改合并程序.

还是以结合下载大量ts文件为例:

直接找一个视频网站,找到爬取目标,以下代码直接忽略拿m3u8文件链接的过程,直接从下载到m3u8文件开始

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(1)

代码1-25行

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(2)

代码26-52行

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(3)

代码53-77行

不断调试后的运行结果:

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(4)

最终成功合成157分钟的视频文件

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(5)

代码中merge合并函数合并4430个ts文件所花的时间为5秒

合并的操作在代码第18-44行,也就是定义的marge函数下

思路:

1>>>读取m3u8文件(因为里面的内容都是有序的),取出做成列表

2>>>把有序的文件名列表(4429个元素)进行切片操作,

3>>>每次切出600个文件,去合并

4>>>把步骤3合并的片段mp4文件合并成一部整体的电影文件

5>>>打开最终合并的文件检查有无错误

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(6)

m3u8文件,内含4439个ts文件下载链接

------------------------------------------

本次下载4429个ts文件过程中遇到的问题:

最开始线程池设置的是39个线程,运行过程中,下载2000左右ts文件后就变成单程下载了.只能停止程序运行.

经后面调试过程中,确定该网站是有限制的...只能是另起排查文件程序....

经历此次事件,在之后利用异步协程或者多线程下载电影;小说时(特征是文件多,乱序文件,一旦中途出错,如网站限制响应等,后期没法合并,重新下载耽误时间不说,还大概率遇到同样的问题),

>>>非常有必要在下载过程中设置检测(将要下载的文件本地是否存在,如果存在就跳过下载,如果不存在,就下载下来),设置这个检测代码不耗时间,0.0几秒程序就能运行出结果

总结:

1>对于新手来说,代码最开始奔着要达到的目标就行了,不需要代码排版有多好看,也不需要考虑程序运行过程中可能会遇到的错误

类似"先生存,再求发展",

2>达到目标后,思考程序是否够自动化?能否再减少人的时间?奔着这个目的去完善代码.

3>不要怕2繁琐,精益求精,才能不断提升,而不是成为"固化的打字机器".

------------------------

结尾:如需要源代码或者电影文件的可以私信,就不留阿里网盘的分享了.

python合并两个文本文件(4000多个乱序的ts文件合并成MP4文件)(7)

分辨率1920*1080

,