使用 Python 库 PyTube 下载 YouTube 视频
你了解“YouTube”吧?没错,它是在印度尤其受欢迎的著名视频分享网站 . 很多时候,你会喜欢一些视频,并尝试下载以便稍后/离线观看。然后你可能会遇到“YouTube 下载器”应用程序,它可以从 YouTube 网站下载视频。但是,大多数应用程序都有一些限制(如果你免费使用)或需要付费。但你是否想过创建我们自己的程序来下载 YouTube 视频?如果没有,你应该尝试一下,因为使用 Python 库实现起来非常简单。Python 提供了“Pytube”库来从 YouTube 下载视频。这个库允许我们从网络下载视频。
Pytube 不是标准库,所以我们需要安装它。使用 pip,安装起来很容易:
pip install pytube Collecting pytube Downloading https://files.pythonhosted.org/packages/af/56/c9b484e93e1f3a4ef6aefbc1e68258121831007938556daf968ab4519c9c/pytube-9.3.5-py3-none-any.whl Installing collected packages: pytube Successfully installed pytube-9.3.5
下载视频
正如我们在文章中看到的,使用 Pytube 下载 YouTube 视频非常简单。
所以,让我们从导入 YouTube 类开始:
from pytube import YouTube
现在让我们尝试获取视频链接。例如,选择一个你喜欢的视频:
yt = YouTube('https://www.youtube.com/watch?v=-KnAZcXzxRA')
Pytube API 使所有信息都易于访问。例如,以下是如何获取视频标题:
>>> yt.title 'Redmi Note 7 Fake 48MP Camera? Explained \U0001f525\U0001f525\U0001f525'
获取缩略图 URL:
>>> yt.thumbnail_url 'https://i.ytimg.com/vi/-KnAZcXzxRA/default.jpg'
现在,我们需要选择媒体格式。Pytube 模块提供了以下媒体格式来下载视频:
>>> yt.streams.all() [<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2">, <Stream: itag="43" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp8.0" acodec="vorbis">, <Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2">, <Stream: itag="36" mime_type="video/3gpp" res="240p" fps="30fps" vcodec="mp4v.20.3" acodec="mp4a.40.2">, <Stream: itag="17" mime_type="video/3gpp" res="144p" fps="30fps" vcodec="mp4v.20.3" acodec="mp4a.40.2">, <Stream: itag="137" mime_type="video/mp4" res="1080p" fps="30fps" vcodec="avc1.640028">, <Stream: itag="248" mime_type="video/webm" res="1080p" fps="30fps" vcodec="vp9">, <Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.4d401f">, <Stream: itag="247" mime_type="video/webm" res="720p" fps="30fps" vcodec="vp9">, <Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d401f">, <Stream: itag="244" mime_type="video/webm" res="480p" fps="30fps" vcodec="vp9">, <Stream: itag="397" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e">, <Stream: itag="243" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp9">, <Stream: itag="396" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400d">, <Stream: itag="242" mime_type="video/webm" res="240p" fps="30fps" vcodec="vp9">, <Stream: itag="395" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400c">, <Stream: itag="278" mime_type="video/webm" res="144p" fps="30fps" vcodec="vp9">, <Stream: itag="394" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2">, <Stream: itag="171" mime_type="audio/webm" abr="128kbps" acodec="vorbis">, <Stream: itag="249" mime_type="audio/webm" abr="50kbps" acodec="opus">, <Stream: itag="250" mime_type="audio/webm" abr="70kbps" acodec="opus">, <Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus">] >>> </Stream:>
假设我们想要获取第一个流:
>>> stream = yt.streams.first() >>> stream <Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2">
视频将下载到你的目标路径:
>>> stream.download('f:/') 'f:/Redmi Note 7 Fake 48MP Camera Explained \U0001f525\U0001f525\U0001f525.mp4'
或者,你也可以将视频下载到当前工作目录:
>>> stream.download() 'C:\Python\Python361\Redmi Note 7 Fake 48MP Camera Explained \U0001f525\U0001f525\U0001f525.mp4'
现在我们看到视频已下载到我们的目标路径。
广告