こんにちは!
YouTubeの動画をダウンロードしたいと思ったことはありますか?
Pythonのpytubeというライブラリを使えばYouTubeの動画を超簡単にダウンロードすることができます。
今回の記事では、pytubeを使った以下の方法を紹介します。
- たったの3行でダウンロードする方法
- フォーマット等を選択してダウンロードする方法
投資、就活、英語についての記事を書いています。
気になる方は是非見てみてください!
pytubeについて
pytubeとは
pytubeとは、YouTubeの動画をダウンロードするために作られた、Pythonライブラリです。
以下にgithubアカウントのリンクを載せます。
A lightweight, dependency-free Python library (and command-l…
pytubeのインストール方法
pytubeのインストールは以下のようになります。
pip install pytube
ImportError: cannot import name 'quote' from 'pytube.compat'
上記のエラーが発生した場合は、一度pytubeをアンインストールし(pip uninstall pytube)下記のインストール方法を試してください。(ちなみに僕の場合はエラーが発生しました。)
pip install pytube3
このインストール方法を行うと、しっかりとエラーが出ずにインポートできるようになるはずです。
YouTube動画のダウンロード
pytubeを使って3行でダウンロード
まずは、一番簡単な方法を見ていきましょう。
たったの3行でYouTubeの動画をダウンロードできます。
以下のプログラムは、3行でYouTubeの動画をダウンロードするプログラムです。
import pytube
#保存したいYouTube動画のURLを入力
url = input("url:")
#保存したい動画のフォーマットリストの先頭の動画を保存
youtube = pytube.YouTube(url).streams.first().download()
解説
youtube = pytube.YouTube(url).streams.first().download()
この部分で、YouTube動画のフォーマットリストを得ることができます。
youtube = pytube.YouTube(url).streams.first().download()
この部分で、先ほど得たフォーマットリストの先頭のフォーマットの動画をダウンロードします。
実行結果
上記のようなmp4ファイルがカレントディレクトリにダウンロードされます。
今回は、ヒカキンのアベマスクレビューの動画をダウンロードしました。
動画を保存するフォルダを指定したい場合は、download()のカッコ内に指定しましょう。
フォーマットを指定してダウンロード
先ほどの3行のプログラムでは、簡単に行えるようにフォーマットリストの先頭のフォーマットで動画をダウンロードしました。
ですが、もちろんフォーマットを選択して動画をダウンロードすることができます。
まず、フォーマットリストの中身を全て表示してみましょう。
以下のプログラムは、利用可能なフォーマットを全て表示するプログラムです。
import pytube
url = input("url:")
format_list = pytube.YouTube(url).streams.all()
for format in format_list:
print(format)
実行結果
<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="137" mime_type="video/mp4" res="1080p" fps="30fps" vcodec="avc1.640028" progressive="False" type="video">
<Stream: itag="248" mime_type="video/webm" res="1080p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="299" mime_type="video/mp4" res="1080p" fps="60fps" vcodec="avc1.64002a" progressive="False" type="video">
<Stream: itag="303" mime_type="video/webm" res="1080p" fps="60fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.4d401f" progressive="False" type="video">
<Stream: itag="247" mime_type="video/webm" res="720p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="298" mime_type="video/mp4" res="720p" fps="60fps" vcodec="avc1.4d4020" progressive="False" type="video">
<Stream: itag="302" mime_type="video/webm" res="720p" fps="60fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d401f" progressive="False" type="video">
<Stream: itag="244" mime_type="video/webm" res="480p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e" progressive="False" type="video">
<Stream: itag="243" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d4015" progressive="False" type="video">
<Stream: itag="242" mime_type="video/webm" res="240p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400c" progressive="False" type="video">
<Stream: itag="278" mime_type="video/webm" res="144p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">
<Stream: itag="249" mime_type="audio/webm" abr="50kbps" acodec="opus" progressive="False" type="audio">
<Stream: itag="250" mime_type="audio/webm" abr="70kbps" acodec="opus" progressive="False" type="audio">
<Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus" progressive="False" type="audio">
このように多くのフォーマットが用意されています。
各フォーマットに「itag」というタグがつけられているのがわかると思います。
このタグを指定することでフォーマットを選択します。
上記のプログラムに、以下のプログラムを追記しましょう。
以下のプログラムは、itagを指定して、YouTubeの動画をダウンロードするプログラムです。
itag = input("itag:")
youtube_dl = youtube.streams.get_by_itag(itag).download()
カレントディレクトリにitagで指定したフォーマットの動画がダウンロードされます。
まとめ
今回の記事では、以下の方法を紹介しました。
- たったの3行でダウンロードする方法
→URLを指定するだけでダウンロード可能 - フォーマット等を選択してダウンロードする方法
→「itag」を指定
応用すれば様々なサービスができそうな予感がしますね。
とても簡単にできるので、皆さんも試しにやってみてはいかがでしょうか?