使用 Python 和 pafy 下载 YouTube 媒体/音频


在本文中,我们将了解如何使用 **pafy** 模块提取 **Youtube** 视频的详细信息并在不同格式中下载它们。 请访问链接以获取官方文档。

使用以下命令安装 **pafy** 模块

pip install pafy

如果您运行上述命令,则在成功安装 **pafy** 模块后,将生成以下结果。

Collecting pafy
Using cached
https://files.pythonhosted.org/packages/b0/e8/3516f761558525b00d3eaf73744eed5c267db
20650b7b660674547e3e506/pafy-0.5.4-py2.py3-none-any.whl
Installing collected packages: pafy
Successfully installed pafy-0.5.4

通过运行以下命令检查您是否可以导入 **pafy** 模块。

import pafy

如果您没有发现任何错误,则说明已完成。 否则,安装以下模块以解决问题。

pip install youtube-dl

如果您运行上述命令,则在成功安装 **youtube-dl** 模块后,将生成以下结果。

Collecting youtube-dl
Using cached
https://files.pythonhosted.org/packages/b1/ec/fe552181d6bd05a9e5b6b51f6f7ea4fed9f12
1ce595d788217e59318e47c/youtube_dl-2019.7.30-py2.py3-none-any.whl
Installing collected packages: youtube-dl
Successfully installed youtube-dl-2019.7.30

Youtube 视频详细信息

使用链接提取视频详细信息的步骤。

  • 导入 **pafy** 模块

  • 将视频链接存储在一个变量中。

  • 调用 **pafy.new(url)** 方法并将结果存储在一个变量中。

  • 使用上述变量获取有关视频的所有信息。

让我们看一个例子。

## importing the module
import pafy
## url of the video
url = "https://www.youtube.com/watch?v=cr3-J5wDLsM"
## calling the new method of pafy
result = pafy.new(url)
## getting details like title, rating, viewcount, author, length, likes, etc..,
print(f"Title: {result.title}")
print(f"Viewcount {result.viewcount}")
print(f"Author: {result.author}")
print(f"Video Length: {result.length}")
print(f"Likes: {result.likes}")
print(f"Dislikes: {result.dislikes}")
print(f"Description: {result.description}")

如果您运行上述程序,您将获得以下结果。

Title: Indexing Overview
Viewcount 862
Author: Tutorials Point (India) Pvt. Ltd.
Video Length: 167
Likes: 6
Dislikes: 1
Description: Indexing Overview
Watch more Videos at https://tutorialspoint.com/videotutorials/index.htm
Lecture By: Mr. Arnab Chakraborty, Tutorials Point India Private Limited

下载最佳质量的视频

  • 导入 **pafy** 模块

  • 将视频链接存储在一个变量中。

  • 调用 **pafy.new(url)** 方法并将结果存储在一个变量中。

  • 使用上述变量使用 **getbest** 方法获取视频的最佳质量,并将其存储在一个变量中。

  • 在前面的变量上调用 **download** 方法。

请参阅以下示例。

## importing the module
import pafy
## url of the video
url = "https://www.youtube.com/watch?v=cr3-J5wDLsM"
## calling the new method of pafy
result = pafy.new(url)
## getting the best quality of video from the 'result' using the getbest()
best_quality_video = result.getbest()
## you can print it to see the quality of the video
print(best_quality_video)
## download it using the download()
best_quality_video.download()

如果您运行上述程序,您将获得以下结果。

normal:mp4@1280x720
26,638,008 Bytes [100.00%] received. Rate: [ 820 KB/s]. ETA: [0 secs]

您可以使用 **getbest()** 方法绕过 preftype(如 3gp、mp4、WebM 等)下载任何类型的视频,请参阅以下语法并自行尝试。

## previous steps are same
best_quality_video = result.getbest(preftype = "mp4")
## next steps are same

下载最佳质量的音频

按照我们下载视频时所做的相同步骤操作。 调用 **getbestaudio()** 而不是 **getbest()**,然后使用 **download()** 方法下载它。 首先,请自行尝试。 如果您发现很难查看以下代码。## 导入模块

import pafy
## url of the video
url = "https://www.youtube.com/watch?v=cr3-J5wDLsM"
## calling the new method of pafy
result = pafy.new(url)
## getting the best quality of video from the 'result' using the getbest()
best_quality_audio = result.getbestaudio()
## you can print it to see the quality of the video
print(best_quality_audio)
## download it using the download()
best_quality_audio.download()

如果您运行上述程序,您将获得以下结果。

audio:m4a@128k
27,518 Bytes [100.00%] received. Rate: [ 306 KB/s]. ETA: [0 secs]
'Indexing Overview.m4a'

更新于: 2020年7月2日

952 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告