21
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

pytubeを使ってみよう

IPFactory Advent Calender 2019 4日目

大層な記事を書けるほどの知識はありませんが、4日目書かせていただきます。
IPFactory所属、ISC 1年のpycysです。

pytubeとは

Pythonのライブラリです。
YouTube上の動画を簡単にダウンロードできます。

環境

  • Windows 10 Pro
  • Python 3.7.4

インストールしよう

pip install pytube

上記をbashなりコマンドプロンプトなりに打ち込めばインストールされます。

注意

ダウンロードする前に動画の投稿者のチャンネル名を見てください。
チャンネル名の横にチェックマークがついていない場合、
ダウンロードしたらYouTubeの規約に違反してしまいます。

動画をダウンロードしてみよう

早速ダウンロードしてみましょう。

download1.py
from pytube import YouTube

YouTube(input("ダウンロードしたい動画のURL:")).streams.first().download()

上記のコードをコピペして実行してみてください。
URL聞かれたら動画のURL貼り付けてEnter。
正常に動作した場合、同じフォルダに動画ファイルができたはずです。

保存するフォルダを指定する

download2.py
from pytube import YouTube

YouTube(input("ダウンロードしたい動画のURL:")).streams.first().download(r"フォルダのパス")

保存するフォルダを指定したい場合は、downloadメソッドの引数に保存先フォルダのパスを渡しましょう。
フォルダパスを指定するので、rをつけてエスケープシーケンスを無効化するのも忘れずに。
もしダウンロードする時に動画ファイルの名前を変更したい場合は、downloadメソッドの第二引数に付けたい名前を設定しましょう。

解像度やフォーマット等を指定してみる

download3.py
from pytube import YouTube

url = input("ダウンロードしたい動画のURL:")
print(*YouTube(url).streams.all(), sep="\n")
itag = int(input("ダウンロードしたい動画のタグ:"))
YouTube(url).streams.get_by_itag(itag)).download()

今度はこちらのコードを実行してみてください。
実行した直後にURLを求められるので、入力してEnter。

するとこんな感じの文字列が返ってきましたね?
(フォーマットが似ていれば大丈夫です)

<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="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="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="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d4015">
<Stream: itag="242" mime_type="video/webm" res="240p" fps="30fps" vcodec="vp9">
<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="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2">
<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">

これらはダウンロード可能なフォーマットや解像度等の組み合わせであり、
この中からダウンロードしたい組み合わせのitagの値を指定することでダウンロードできます。

返ってきた組み合わせから良さげなものを選んで、itagの値を入力してみましょう。
入力した値が間違っていなければ、選んだファイルがダウンロードされたはずです。

最後に

以上になります。
誤った情報や誤字脱字、分かりにくい点等ありましたらご指摘ください。
最後まで読んでいただきありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
21
Help us understand the problem. What are the problem?