こんにちは、すのくろです。
「公式チャンネルのYoutube動画を何度も視聴するので、もう自分のローカルにダウンロードしておきたいなあ」
と思ったことはありませんか?
今回はpythonのPytubeを使用して、簡単にYoutubeの動画またはオーディオををダウンロードして、ファイルは指定した場所に保存する方法についても紹介します!
ファイル形式や、解像度、音声有無などの設定についても解説します。
Pytubeとは
Pytube(パイチューブ)は、Pythonプログラミング言語を使用してYouTubeから動画や音声をダウンロードするためのライブラリです。
Pytube公式HP https://pytube.io/en/latest/index.html
Pytubeは、YouTubeのビデオストリーム情報を取得し、選択した品質と形式でビデオやオーディオをダウンロードできる強力なツールです。
例えば、Pytubeの主要な機能と使い方の概要は以下の通りです。
- 動画の情報取得: Pytubeを使用して、特定のYouTube動画のタイトル、再生時間、作者、視聴回数などの情報を取得できます。
- ビデオストリームの取得: YouTube動画はさまざまな品質や形式で提供されています。Pytubeを使用して、利用可能なビデオストリーム(解像度と形式)をリストアップできます。
- ダウンロード: ビデオまたはオーディオストリームをダウンロードするには、Pytubeを使用して選択したストリームを指定し、ダウンロードを開始します。ダウンロード後、ファイルは指定した場所に保存されます。
今回はこのPytubeを使って、
Youtube動画をダウンロードする方法について説明します。
YouTube動画ダウンロードの基本的なコード例
以下は、Pytubeを使用してYouTube動画をダウンロードする基本的なコードの例です:
pytubeのインストール
初めにサードパーティ製であるpytubeを環境にダウンロードしておきます。
コード上で下記を入力すればOKです。
Anacondaなどで環境構築している方は適した方法で行ってください。
!pip install pytube
もし、そもそもpythonが使える環境ではないという方がいましたら、下記の記事を参考に環境構築を行っていただければ幸いです。
コードの実行
import pytube
# Youtube Video URLを以下に貼り付け
link = "XXXXXXXXXX"
video_download = pytube.YouTube(link)
video_download.streams.first().download()
print('Video Downloaded', link)
コードはこれだけです。
簡単に動画をダウンロードすることができます!
エラーが出た場合
ImportError: cannot import name 'quote' from 'pytube.compat'
上記のエラーが発生した場合は、一度pytubeをアンインストールして再度、下記のインストール方法を試してください。
アンインストール
pip uninstall pytube
再インストール
pip install pytube3
プレイリストのダウンロード方法
単一の動画だけでなく、プレイリストのダウンロードもまとめて行うことができます。
from pytube import Playlist
# プレイリストのURLを以下に貼り付け
p = Playlist('XXXXXXXXXXXXXXXX')
for video in p.videos:
video.streams.first().download()
オプション設定(タグ、画質、ファイル形式、音声有無)
基本的なダウンロードが簡単にできるようになりましたが、上記のコードだと動画の方で設定されているデフォルトの画質、ファイル形式でのダウンロードとなっています。
そこでここからは、オプションを自分で設定していく方法を解説します。
ダウンロード可能な形式を確認
初めに動画の方で用意されているオプションを確認します。
url = link #動画URL
format_list = pytube.YouTube(url).streams.all()
for format in format_list:
print(format)
出力結果例↓
このように、色んな設定が決められた条件が「itag」の番号で管理されています。
- mime_type:ファイル形式
- res:解像度(画質)
- fps:フレーム数
- vcodec:ビデオのコーデック
- acodec:オーディオのコーデック
- progressive:ストリーミング技術(True: progressive, False: DASH)
- type:”video” or “audio”
ここで「progressive」について少し解説すると、
プログレッシブ ストリーム:ビデオとオーディオが 1 つのファイルに含まれているが、一般的には画質が良くない。
アダプティブ ストリーム(DASH):ビデオ トラックとオーディオ トラックを分割しているが、高画質を提供可能
となります。ダウンロード時に音声と画像の両方が一つのファイルにまとめて欲しい場合は、
progressive=”True”
のものでなければならないということです。
itagで指定してダウンロード
上記では、動画ごとにいくつか詳細設定が決められていることがわかりました。
そこで、その設定リストの中から、自分が欲しいものに適した設定条件でダウンロードしていきたいと思います。
具体的には、「itag」で設定します。
もしリストの中で、最高画質(1080p)のものが欲しければそれに当てはまるitag=18を選びます。
下記画像の選択部分です。
itag = "18"
link = "XXXXXXXXXX"
video_download = pytube.YouTube(link)
youtube_dl = video_download.streams.get_by_itag(itag).download()
print('Video Downloaded', link)
これで1080pの動画をダウンロードできます。
ファイル形式を指定
ファイル形式においても、リストの中からmime_typeの部分でエンらんで、itagを指定することで好きなファイル形式でダウンロードできます。
ただ、他の方法として、filter()を使ってファイル形式を選ぶ方法もあります。
link = "XXXXXXXXXX"
video_download = pytube.YouTube(link)
video_download.streams.filter(file_extension='mp4').all()
実行結果↓
ファイル形式が「mp4」だけのitagがフィルタリングされました。
あとは今ままでと同じようにダウンロードすればOKです。
video_download.streams.filter(file_extension='mp4').first().download()
先ほどのfilter()の後に「first().download()」をつけてフィルター後の中の初めの条件でダウンロードしています。
音声のみ/動画のみに指定
動画ではなく、動画の音声だけをダウンロードしたい場合のフィルタリングの方法は下記の通りです。
video_download.streams.filter(only_audio=True)
簡単ですね。
ダウンロードする上での注意事項
以上、簡単にYouTubeの動画を自分のPCなどに簡単に動画ファイルとし
てダウンロードする方法について学ぶことができたと思います。
ただし、YouTubeの動画ダウンロードは、利用方法により違法として罪に問われる可能性があります。
具体的な違法例
- 違法にアップロードされた動画のダウンロード
- YouTube公式の規約により許可がある合法アップロード動画以外のダウンロード
- ダウンロードした動画の再配布や販売などの二次利用(合法にアップロードされた動画も含む)
もし、動画をダウンロードする場合は、その動画のダウンロードや、ダウンロードした動画の使い方が規約違反になる可能性がないか注意しましょう!
(本内容の使い方については各自自己判断でお願いします。著者は責任は負いません)
まとめ
pytubeはPythonライブラリで、YouTubeからMP4形式のビデオをダウンロードする際に役立ちます。以下が基本的な手順です:
- pytubeをインポートし、YouTubeのURLを指定してYouTubeオブジェクトを作成
- ファイル形式などをフィルタリングするために、
filter
メソッドを使用 - フィルタリングされたビデオストリームから選択肢を選び、ダウンロードを開始
詳細な情報はPytubeの公式ドキュメンテーションで確認できます。YouTubeから動画を効率的にダウンロードする際に役立つ便利なツールです!
これ以外にも、Pythonは自由度が高く、豊富なライブラリがまだまだ用意されているため、様々なデータ処理や効率化に応用することができます!
さらにPythonのスキルを高めて、効率的に業務を行いたい、高度なPythonを中心としたプログラミングをより体系的に学びたいと言う方向けに、おすすめのオンラインスクールを2つ厳選して紹介していますので、こちらもよければご覧ください!
自分も一度体系的にPythonを学んだことで、一気に日々の業務や人生が変わったと感じています!
以上、ここまでお読みいただき、ありがとうございました!
コメント