どうも、nippa です。
今回はネタ記事で、たまたま見つけた pytube というライブラリを紹介したいと思います。
pytube は 軽量なライブラリで、ライブラリ依存性がない youtube の動画情報をするためのライブラリになります。
動画のダウンロードは法律に触れる可能性があります。また、Youtubeの利用規約を守って利用ください。くれぐれもご注意ください。
- 環境
- ライブラリのインストール
- 動画の情報取得
- stream の確認
- stream のフィルタリング
- stream を指定して動画の情報取得
- Playlist の情報取得
- Chanel の情報取得
- Youtube の検索結果の取得
- 感想
環境
- macOS 12.5
- python3.9
- pytube 12.1
ライブラリのインストール
- pip
pip install pytube
- poetry
poetry install pytube
動画の情報取得
使い方、以下のような形で情報を取得することができます。
from pytube import YouTube YouTube("Youtube URL").streams.first()
first()で streams(再生設定の種類)の最初のものを指定して、情報を取得しています。
stream の確認
取得可能なストリートを確認します。
from pytube import YouTube streams = YouTube( "Youtube URL" ).streams for stream in streams: print(stream)
上記で、指定した Youtube 動画のストリームが確認でき、前節での first()は表示されたリストの最初のものを示しています。
first()の代わりに last()を利用すると、最後に表示されるストリームを指定することができます。
stream のフィルタリング
filter()を使って、オプションを1つ以上指定することで Stream をフィルタリングすることができます。
from pytube import YouTube streams = YouTube("Youtube URL").streams print("all stream") for stream in streams: print(stream) print("filter by resolution") for stream in streams.filter(res="1080p"): print(stream) print("filter by fps") for stream in streams.filter(res="24fps"): print(stream) print("filter by audio type") for stream in streams.filter(only_audio=True): print(stream) print("filter by mime_type") for stream in streams.filter(mime_type="video/mp4"): print(stream) print("filter by adaptive(DASH stream)") for stream in streams.filter(adaptive=True): print(stream)
フィルターの種類はいろいろありますが、ソースコードを見るのが一番はやいです。
stream を指定して動画の情報取得
ストリームの詳細を表示すると、各ストリームに itag が振られています。
get_by_itag に int 型で引数を与えると、個別ストリームを取り出すことができます。
from pytube import YouTube streams = YouTube("Youtube URL").streams stream = streams.get_by_itag(22) print(stream)
Playlist の情報取得
play list に登録されている動画情報を取得できます。
from pytube import Playlist play_list = Playlist("Youtube Play List") for video in play_list.videos: print(f"title: {video.title} URL: {video.watch_url}")
上では、プレイリストの各動画のタイトルと URL を表示しています。
Chanel の情報取得
channel に登録されている動画の情報を取得できます。
from pytube import Channel channel = Channel("https://www.youtube.com/c/ProgrammingKnowledge") print(f"チャンネルタイトル: {channel.title}") for video in channel.videos: print(f"title: {video.title} URL: {video.watch_url}")
上ではチャンネルの動画すべてのタイトルとURLを表示しています。
Youtube の検索結果の取得
Search クラスを利用して検索結果の取得ができます。
from pytube import Search search = Search("検索ワード") print(len(search.results)) videos, next_continuation = search.fetch_and_parse() for video in videos: print(video.watch_url)
next_continuation
を指定することで、次の検索結果を fetch できます。
感想
今回 pytube についてご紹介しました。
動画情報収集をこのライブラリのみでできるのでデータ収集には非常に便利かもしれません。
ダウンロード機能もありますが、法律や利用規約に触れるため今回は紹介しませんでした。
youtubeの規約や動画の著作権がありますので、利用する場合はご注意ください。
ではでは、また次回。