Pytube:怎样使用此 Python 工具下载 Youtube 视频

介绍

pytube 是一个 Python 包,主要用于从著名的视频网站 Youtube 下载视频。 根据官方文档,此工具没有第三方依赖项,换句话说,它是一个使用标准 Python 库的独立包。

在你的机器上安装 pytube

在 python 包管理器 pip 的帮助下,任何 python 包的安装都变得容易。 显示在以下命令中:

pip install pytube

此命令将收集包,下载并在您的机器上安装它。 成功的操作应该在您的 linux 控制台上打印以下输出。

Collecting pytube
  Downloading pytube-6.2.2-py2-none-any.whl
Installing collected packages: pytube
Successfully installed pytube-6.2.2

使用 pytube

安装完成后,打开 python 控制台并使用 import 语句导入包 pytube,如以下代码块所示:

import pytube

蟒蛇类 YouTube 代表 Youtube 会话的单个实例,因此您需要使用以下代码启动它:

yt = pytube.YouTube('https://www.youtube.com/watch?v=xtZOnyYu16U')

随着正在分配给变量的实例的生成 yt 使用文件名属性可以轻松获取视频的名称。

fn = yt.filename

您可能知道要在 python 中获取对象的值,您只需键入变量并按键盘上的返回按钮即可。

fn

然后将打印以下内容:

u'Stoto - Late Night (Original Mix)'

这是不言自明的。 文件名的结果取决于作为输入传递的视频链接 YouTube.__init__ 方法。

还有一个 video_id 属性,用于解析 __init__ 方法中传递的视频 url 中的 id。

video_id = yt.video_id

可以使用打印语句打印视频的 id,如下所示:

print(video_id)

然后将在控制台上显示以下内容:

'xtZOnyYu16U'

要获取可供下载的可用视频列表,可以运行 get_videos 方法并将其分配给变量; 就像在这段代码中一样 example:

videos = yt.get_videos()

然后使用 for 循环打印每个视频。

for v in videos:
    print(v)

在我的情况下,将在控制台上显示的输出如下: *根据您在实例中传递的视频网址,此输出可能不同*

<Video: MPEG-4 Visual (.3gp) - 144p - Simple>
<Video: MPEG-4 Visual (.3gp) - 240p - Simple>
<Video: H.264 (.mp4) - 360p - Baseline>
<Video: H.264 (.mp4) - 720p - High>
<Video: VP8 (.webm) - 360p - N/A>

到目前为止,我们提供了一个视频列表。 找出这个列表中每个对象的类型就像运行以下代码一样简单:

for v in videos:
    print(type(v))

以下内容将打印在控制台上,告知我们每个视频来自的对象类型。

<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>

班上 pytube.models.Video 可用于创建 Youtube 视频的单个实例,以便通过下载方法下载它们。

可以使用 python 列表内置对象的索引功能将第一个视频实例从列表中拉出。

first_video = videos[0]

打印第一个视频就像使用以下代码一样简单:

print(first_video)

Video 实例具有许多属性,例如文件名、url、扩展名、video_codec、audio_codec、audio_bitrate、分辨率等。

要访问每个属性,可以遵循以下语法:

object.attribute

为了 example, 要获得第一个视频的扩展名,可以运行以下 python 代码。

first_video.extension

在我的情况下,运行上述命令将产生以下输出。

'3gp'

视频的质量作为字符串存储在 解析度 Video 实例的属性。

quality = first_video.resolution
print(quality)

视频的质量将被打印。

'144p'

可以使用以下代码访问其他属性,例如音频或视频的比特率。

audio_bitrate = first_video.audio_bitrate
video_bitrate = first_video.video_bitrate
print(audio_bitrate)
print(video_bitrate)

每个 Video 实例都有一个下载方法,当涉及到视频内容时,这使得从最常用的网站之一下载任何视频变得非常容易。

可以使用以下代码轻松下载视频:

first_video.download('/Users/oltjano/Desktop')

上面的代码将调用 下载 Video 实例中的方法并将视频下载到指定路径。 路径是 Video 实例下载方法的必需参数,因此程序知道将文件保存在哪里。

上述案例中的目标输出目录如下:

/Users/oltjano/Desktop

随意指定您想要的任何路径。 还可以通过设置覆盖视频文件 强制覆盖 参数到 真的,如下图所示:

first_video.download(path="/Users/oltjano/Desktop", force_overwrite=True)

从 Youtube 下载所需的视频

人们可能想从 Youtube 下载具有特定文件格式和质量的视频。 pytube 工具为用户提供了一种完成此任务的方法。

笔记: 建议重启python控制台,让我们有一个干净的环境。

使用以下命令导入 pytube 包:

import pytube

将您要下载的 Youtube 视频的链接字符串分配给一个变量,以便在需要多次使用时更容易完成任务。

video_link = 'https://www.youtube.com/watch?v=8ZpVwAeLzm4'

然后使用以下命令启动 Youtube 会话:

yt = pytube.YouTube(video_link)

使用以下命令获取可供下载的可用视频列表:

videos = yt.videos

上面的列表可以为您提供有关可用于通过下载方法下载视频的视频实例的信息。

使用 pytube 中存在的 t 方法。YouTube instance 根据指定的文件格式和视频质量过滤 Video 实例。

video = yt.get('mp4', '720p')

如果可用,上面的代码将返回特定的 Video 实例。 如果不是,则将引发错误。

如果没有出现错误,可以使用下面显示的代码下载视频。

在下载视频之前,需要一个指向要保存视频的位置的路径。 设置路径变量如下图:

path="/Users/Oltjano/Desktop"

然后使用以下命令下载视频:

video.download(path)

结论

有许多工具可以帮助 Linux 用户通过命令行下载 Youtube 视频。 有些是开源的,有些不是。 拥有入门级编码技能,您可以编写脚本与 pytube 进行交互以实现特定目的,例如一次下载多个视频或下载整个播放列表。

但即使您不具备这样的技能,使用 pytube 下载视频也只需在您的控制台上输入一个命令即可!

相关阅读:

Posted in: LinuxTags: