25
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IPFactoryAdvent Calendar 2019

Day 4

pytubeを使ってみよう

Last updated at Posted at 2019-12-03

#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の値を入力してみましょう。
入力した値が間違っていなければ、選んだファイルがダウンロードされたはずです。

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

25
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?