为什么随后用youtube-dl下载的速度如此之快?

社会创新

我正在将RPi Zero上的多个YouTube视频下载并转换为纯音频文件。尽管初始化和首次下载需要花费一些时间,但后续下载却要快得多。有没有什么方法可以“热身” yt-dl以使其即使是首次下载也可以更快?我不介意任何额外的初始化时间。(更改URL的顺序无效。)

import time
t1 = time.time()

from youtube_dl import YoutubeDL
ydl = YoutubeDL({'format': 'bestaudio/best'}) 
t2 = time.time()
print(t2 - t1, flush=True)

ydl.download(['https://www.youtube.com/watch?v=xxxxxxxxxxx'])
t3 = time.time()
print(t3 - t2, flush=True)

ydl.download(['https://www.youtube.com/watch?v=yyyyyyyyyyy'])
t4 = time.time()
print(t4 - t3, flush=True)

ydl.download(['https://www.youtube.com/watch?v=zzzzzzzzzzz',])
t5 = time.time()
print(t5 - t4, flush=True)

输出:

5.889932870864868
[youtube] xxxxxxxxxxx: Downloading webpage
[download] 100% of 4.09MiB in 00:01
15.685529470443726
[youtube] yyyyyyyyyyy: Downloading webpage
[download] 100% of 3.58MiB in 00:00
2.526634693145752
[youtube] zzzzzzzzzzz: Downloading webpage
[download] 100% of 3.88MiB in 00:01
2.4716105461120605
社会创新

在浏览完youtube-dl代码后,我发现大部分时间都花在了寻找正确InfoExtractor的YT网址上。当下载第一个媒体项目时,框架会经过数百个可能的提取器(每个提取器都执行正则表达式),最后定位到正确的YT提取器,在我的情况下,该提取器位于位置1122

这是我的快速技巧,可从RPi Zero上的流程中完全删除12秒:

import time
timer = time.time()

from youtube_dl import YoutubeDL

ydl = YoutubeDL({'format': 'bestaudio/best'})

# Get correct info extractor and replace the long existing list
ydl._ies = [ydl.get_info_extractor('Youtube')]

print(time.time() - timer)
timer = time.time()

# Super fast first download, yay!
ydl.download(['https://www.youtube.com/watch?v=xxxxxxxxxxx'])

print(time.time() - timer)

输出:

5.961918592453003
[youtube] xxxxxxxxxxx: Downloading webpage
[download] 100% of 4.09MiB in 00:01
3.7426917552948   <-- way faster!

也许有一种更常规的方法可以不覆盖半私有变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在Python 3中“范围(10000000000000001)”如此之快?

是什么让gcc std :: list排序实现如此之快?

是什么使Java编译器如此之快?

为什么这个C ++程序如此之快?

为什么MATLAB在矩阵乘法中如此之快?

WebStorm调试javascript停止并断开的速度如此之快

为什么从内存映射文件读取如此之快?

为什么三元运算符如此之快?

是什么使Python的列表附加方法如此之快?

为什么python dict更新速度如此之慢?

为什么C ++模板计算如此之快?

为什么在Python 3中复数求幂如此之快?

为什么Flutter(飞镖)处理图像的速度如此之慢?

为什么Dask的执行速度如此之慢,而多处理的执行速度却如此之快?

与较新的libstdc ++。so链接时,为什么C ++可执行文件的运行速度如此之快?

为什么使用JavaScript对32位数字进行排序比对33位数字进行排序如此之快?

为什么在摩托罗拉68k中dbra对于这么大的循环计数如此之快?

为什么只有1个预配置读取容量单位的DynamoDB扫描速度如此之快?

当测试值与预测值之间的差异如此之近时,为什么我的MSE如此之高?

为什么从Canonical Partners资源库下载速度如此之慢?

当今计算机如此之快,为什么查看PDF文件仍然很慢?

为什么USB串行在Linux中如此之快?

为什么查询在Entity Framework中花费这么长时间,而在SQL中却如此之快呢?

为什么列表乘法如此之快?

为什么Spark从S3读取和写入如此之快

为什么默认的最大堆大小如此之小

为什么 Pandas 的速度如此之快?如何定义这样的函数?

为什么此代码在进行优化编译时运行得如此之快?

Python Pandas MySQL - 为什么在将数据帧写入数据库时 SQLite 速度如此之快