这是 月小水长 的第 44 篇原创干货

上次写的 B 站视频下载器收到了大家的反馈,主要有两个:

  1. 找不到下载的视频在哪。
  2. 能否新增分集下载。
  3. 能否支持任务多开。

下面一一回答。

下载的视频到底在哪

B 站视频下载器更新:分集下载及任务多开_学习

首先,程序默认的设定是将视频下载到了和该程序同一目录下的文件夹中,比如我的程序路径是:

C:\Users\lenovo\Desktop\src\dist

里面有 pro.exe 和 ffmpeg.exe(pro.exe 是 bilibili.exe 的升级版),后者是音视频合成所需,并被前者调用,因此请不要随便分开这两个 exe 文件,运行时只需要双击 pro.exe 就行,运行方式我们可以参考这个视频:

比如我们还是这个视频,注意图中的【《白蛇:缘起》无对白版片尾曲《前世今生》完整版4分06秒 演唱:龚笑笑】,

B 站视频下载器更新:分集下载及任务多开_学习_02

下载完成后,程序路径下会多出一个文件夹【《白蛇:缘起》无对白版片尾曲《前世今生》完整版4分06秒 演唱:龚笑笑】

B 站视频下载器更新:分集下载及任务多开_学习_03

然后点击这个文件夹,里面有三个文件,第一个文件是音频文件,第三个是视频文件,中间那个就是我们想要的有声音的视频文件。

新增分集下载

再者,相比于 bilibili.exe,pro.exe 新增了分集下载功能

B 站视频下载器更新:分集下载及任务多开_学习_04

比如我们想下载 RNG 和 EDG 的最后一局,只需要以此提供 BV 号:BV1RV411R7Rj 和 集数:4  即可。

任务多开

能否支持任务多开?当然可以,只需要把整个文件夹复制,分别双击运行 exe 即可,这大概就是最朴素的任务多开了,本质上是多进程。

我们知道,Python 中由于 GIL 的存在,多线程程序无法发挥多核 CPU 的优势,特别是计算密集型任务,因为在计算密集型任务中,一个线程可能长久地持有 GIL 而导致其他线程无法执行;而 IO 密集型任务的 IO 中断一定会让出 GIL 转到其他非 IO 线程,而多线程上下文切换开销远小于多进程,因此 IO 密集型任务适合采用多线程;实际上,爬虫的主要耗时在网络 IO,理论上应该是使用多线程来实现并发效率更高,但是开发效率低,而且虽然多进程开销相对大,但只是相对的,在计算机性能这么强大的今天,我的这个爬虫多进程所消耗的系统资源可以说微不足道,取个平衡,我采用了前者。

一句话,可以多开,但是是手动的多进程,理论上多线程效率更高,但是,我懒。

 

B 站视频下载器更新:分集下载及任务多开_学习_05