使用 Python 下载 YouTube 视频
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
介绍
你好!🙂 在本教程中,我将向你展示如何使用Python下载YouTube视频。
安装依赖项
首先,我们需要安装所需的依赖项,我们将使用一个名为“pytube”的库。创建一个名为“requirements.txt”的文件,并添加以下内容:
pytube
接下来,要安装依赖项,您需要运行以下命令:
pip install -r requirements.txt
现在我们终于可以开始编写代码了。😎
编写代码
接下来创建一个名为“main.py”的文件,首先我们需要声明导入语句:
import argparse
from pytube import YouTube
我们将使用 argparse 解析传递给脚本的参数,并使用 pytube 下载 YouTube 视频。
接下来,我们需要声明视频/音频文件要保存到哪些目录,我使用以下常量:
VIDEO_SAVE_DIRECTORY = "./videos"
AUDIO_SAVE_DIRECTORY = "./audio"
视频和音频将分别保存到不同的目录中。接下来,我们需要创建一个能够同时处理视频和音频的函数:
def download(video_url):
video = YouTube(video_url)
video = video.streams.get_highest_resolution()
try:
video.download(VIDEO_SAVE_DIRECTORY)
except:
print("Failed to download video")
print("video was downloaded successfully")
这个函数并不复杂,它接收 YouTube 视频的 URL,获取可用的最高分辨率视频,然后将其下载到视频目录中。
但是,如果你像我一样,主要用 YouTube 听音乐,你可能不需要视频,只想下载音频,那么我们来创建另一个功能,允许我们只下载音频:
def download_audio(video_url):
video = YouTube(video_url)
audio = video.streams.filter(only_audio = True).first()
try:
audio.download(AUDIO_SAVE_DIRECTORY)
except:
print("Failed to download audio")
print("audio was downloaded successfully")
与视频功能类似,但这次我们筛选出只有音频的流,并获取第一个可用的流,然后将只有音频的流下载到音频目录。
最后,我们需要编写主函数:
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", required = True, help = "URL to youtube video")
ap.add_argument("-a", "--audio", required = False, help = "audio only", action = argparse.BooleanOptionalAction)
args = vars(ap.parse_args())
if args["audio"]:
download_audio(args["video"])
else:
download(args["video"])
这里我们使用 argparse 来解析视频 URL,还使用了一个可选的仅音频标志。如果启用该标志,则会下载视频的音频;默认情况下,视频和音频都会下载。
完成!😆
现在你应该可以通过以下命令运行脚本了:
# video
python main.py -v "[YouTube Video URL]"
# audio
python main.py -a -v "[YouTube Video URL]"
媒体文件应位于音频/视频目录中。
结论
这里我演示了如何使用名为 pytube 的库下载 YouTube 视频。
我个人用它来下载我喜欢的歌曲。😃
您可以在这里找到本教程的源代码:
https://github.com/ethand91/python-youtube
喜欢我的作品吗?我会发布各种主题的内容,如果你想看更多,请点赞并关注我。
另外,我超爱咖啡。