9

我正在尝试用pytube这种方式下载 youtube 视频:

from pytube import YouTube
YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams.first().download()

但该文件将与原始视频名称具有相同的名称。如何指定自定义文件名?

4

2 回答 2

20

更新:

该功能现已添加。您现在可以使用下面提到的功能而无需下载存储库。

老答案:

这在当前最新 (v7.0.18) 版本中是不可能的。该功能已添加,但此后未发布任何新版本。如果你想拥有这个功能,你需要下载pytube仓库:https ://github.com/NFicano/pytube

如果你这样做了,你可以使用YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams.first().download(filename='filename')

它会自动添加文件扩展名,因此您不必包含它。

我通过阅读源代码找到了它。download在那里,我在文件中找到了函数的声明streams.py

def download(self, output_path=None, filename=None):

所以你显然也可以指定一个路径。

有关一个好的解决方法,请参阅landogardner 的回答。

于 2017-12-05T19:30:56.383 回答
3

为了添加到 klutt 的答案中,自添加此功能以来似乎没有新的 pypi 版本,因此现在您可以按照 klutt 的建议直接下载代码,或者作为一种解决方法,手动重命名文件后download()打电话,例如:

import os
from pytube import YouTube

yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
yt.streams.first().download()
os.rename(yt.streams.first().default_filename, 'new_filename.ext')`
于 2017-12-07T14:35:18.720 回答