使用 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'

現在我們看到影片已下載到我們的目標路徑。

更新於:2019年7月30日

439 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.