Python | 3行でYouTube動画をダウンロードする方法

Python

Pythonで3行でYouTube動画をダウンロードする方法を説明する。

結論

  1. pytubeをimport
  2. URLを変数に代入
  3. ダウンロードする(get_highest_resolution()で最高画質の動画がダウンロードされる)

ダウンロードした動画ファイルはpyファイルが存在するディレクトリに保存される。

from pytube import YouTube

url = 'https://www.youtube.com/watch?v=Nptp-ogd3aw'
YouTube(url).streams.get_highest_resolution().download()

メモ

保存形式を取得

Youtube(url).streamで動画や音声の保存されている形式を取得できる。

from pytube import YouTube

url = 'https://www.youtube.com/watch?v=Nptp-ogd3aw'
for stream in YouTube(url).streams:
    print(stream)

出力結果

<Stream: itag="17" mime_type="video/3gpp" res="144p" fps="8fps" vcodec="mp4v.20.3" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="298" mime_type="video/mp4" res="720p" fps="60fps" vcodec="avc1.640020" progressive="False" type="video">
<Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d400b" progressive="False" type="video">
<Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e" progressive="False" type="video">
<Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400c" progressive="False" type="video">
<Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400b" progressive="False" type="video">
<Stream: itag="139" mime_type="audio/mp4" abr="48kbps" acodec="mp4a.40.5" progressive="False" type="audio">
<Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">
<Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus" progressive="False" type="audio">

所望の形式でダウンロード

Youtube(url).get_by_itag(itagの番号)で所望の形式の動画や音声をダウンロードできる。itag番号とその内容の関係は上記出力結果の通り。

from pytube import YouTube

url = 'https://www.youtube.com/watch?v=Nptp-ogd3aw'

# itag="17", 144p, 8fpsの動画をダウンロード
YouTube(url).streams.get_by_itag(17).download()

# itag="22", 720p, 30fpsの動画をダウンロード
YouTube(url).streams.get_by_itag(22).download()

# itag="140", 128kbpsの音声をダウンロード
YouTube(url).streams.get_by_itag(140).download()

タイトルを取得

Youtube(url).titleで動画のタイトルを取得できる。

from pytube import YouTube

url = 'https://www.youtube.com/watch?v=Nptp-ogd3aw'
print(YouTube(url).title)

サムネイルURLを取得

Youtube(url).thumbnail_urlで動画のタイトルを取得できる。

from pytube import YouTube

url = 'https://www.youtube.com/watch?v=Nptp-ogd3aw'
print(YouTube(url).thumbnail_url)

リンク

pytubeのGitHub

GitHub - pytube/pytube: A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos.
A lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos. - pytube/pytube

pytubeの公式ドキュメント

pytube — pytube 15.0.0 documentation

まとめ

3行でYouTube動画をダウンロードする方法を説明した。

コメント