YouTubeで再生リストに含まれる動画を一覧で取得する方法【YouTube Data API x Pythonスクリプト解説】
クラスメソッドのYouTubeチャンネルは、おかげさまで1.3万人以上のチャンネル登録数をいただいてます。
チャンネルでは、AWS等の技術を動画で紹介するのはもちろん、開催したイベントの動画も上がっており、延べ800本を超えます。
YouTubeをさらに使いやすくして、もっと観てもらいたい!
と思うものの、YouTube上のデータを管理画面上のエクスポートだと解析データが主になるため、一覧情報のようなものは取得しにくいようです。そこで今回は、YouTube Data APIを使って、チャンネルの再生リストとその中にある動画を自動で取得し、CSVファイルに出力する方法をご紹介します。
プログラミングに慣れていなくても、このスクリプトを使えば簡単に再生リストと動画の情報をまとめることができるので、ぜひやってみてください。
YouTube Data APIって何?
YouTube Data API は、YouTubeのデータにアクセスできるツールのようなものです。APIを使うことで、動画の情報、再生リスト、チャンネルに関するデータなどをプログラムで取得できます。手動で行うよりも効率的にデータを扱うことができるので、特に動画が多いチャンネルでは役立ちます。
事前準備1. チャンネルIDを取得する
まず、再生リストを取得するには、対象のYouTubeチャンネルのチャンネルIDが必要です。次の手順で簡単にチャンネルIDを確認できます。
- YouTubeにアクセスし、チャンネルのページを開きます。
- URLの末尾が
/channel/
に続く文字列(例:UCxxxxxxxxx
)がチャンネルIDです。 - URLが
/c/
や/user/
で終わっている場合は、次の手順でIDを確認できます。- チャンネルページの空白部分で右クリックし、「ページのソースを表示」を選択。
- ページソースの表示画面で「Ctrl + F」(Macでは「Cmd + F」)を押して「channelId」を検索。
channelId
に続く文字列が、そのチャンネルのIDです。
事前準備2. APIキーを取得する
APIを使うためには、APIキーを取得する必要があります。手順は次の通りです。
- Google Cloud Consoleにアクセスして、新しいプロジェクトを作成します。
- 左側のメニューから「APIとサービス」を選択し、「ライブラリ」に移動します。
- 「YouTube Data API v3」を検索し、有効化します。
- 「認証情報」タブから、APIキーを作成します。これがAPIにアクセスするための鍵となります。
事前準備3. 必要なライブラリをインストールする
今回利用するPythonのスクリプトでは、requests
というライブラリが必要です。以下のコマンドでインストールしてください。
pip install requests
Pythonスクリプトの流れ
今回のスクリプトは以下のステップで進みます。
- 再生リストを取得:チャンネルにある再生リストを全部取得します。
- 再生リスト内の動画を取得:再生リストごとの動画を取得して、タイトルとURLを取り出します。
- CSV出力:すべての情報をCSVファイルに書き出します。
これにより、再生リストとその中にある動画の一覧がまとめられます。
再生リストと動画を取得するPythonスクリプト
以下のスクリプトを実行するだけで、再生リストとその中の動画をCSVに出力できます。チャンネルIDとAPIキーを正しく設定すれば、すぐに使えるのでぜひ試してみてください。
以下をコピペして youtube_playlists_and_videos.py という名前で保存してください。
import csv
import requests
CHANNEL_ID = 'YOUR_CHANNEL_ID' # チャンネルID
API_KEY = 'YOUR_API_KEY' # あなたのAPIキー
PLAYLIST_URL = 'https://www.googleapis.com/youtube/v3/playlists'
PLAYLIST_ITEMS_URL = 'https://www.googleapis.com/youtube/v3/playlistItems'
VIDEO_URL_TEMPLATE = 'https://www.youtube.com/watch?v={video_id}'
CSV_FILE_PATH = 'youtube_playlists_and_videos.csv' # 保存するCSVファイル名
def get_playlists(page_token=None):
""" チャンネルの再生リストを取得 """
params = {
'part': 'snippet',
'channelId': CHANNEL_ID,
'maxResults': 50,
'key': API_KEY,
'pageToken': page_token
}
response = requests.get(PLAYLIST_URL, params=params)
data = response.json()
return data.get('items', []), data.get('nextPageToken')
def get_playlist_items(playlist_id, page_token=None):
""" 再生リスト内の動画を取得 """
params = {
'part': 'snippet',
'playlistId': playlist_id,
'maxResults': 50,
'key': API_KEY,
'pageToken': page_token
}
response = requests.get(PLAYLIST_ITEMS_URL, params=params)
data = response.json()
return data.get('items', []), data.get('nextPageToken')
def main():
with open(CSV_FILE_PATH, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Playlist Title', 'Video Title', 'Video URL']) # CSVヘッダー
page_token = None
while True:
# 再生リストの取得
playlists, next_page_token = get_playlists(page_token)
if not playlists:
break
for playlist in playlists:
playlist_title = playlist['snippet']['title']
playlist_id = playlist['id']
# 再生リスト内の動画を取得
playlist_page_token = None
while True:
playlist_items, playlist_next_page_token = get_playlist_items(playlist_id, playlist_page_token)
if not playlist_items:
break
for item in playlist_items:
video_title = item['snippet']['title']
video_id = item['snippet']['resourceId']['videoId']
video_url = VIDEO_URL_TEMPLATE.format(video_id=video_id)
# CSVに書き込む
writer.writerow([playlist_title, video_title, video_url])
if not playlist_next_page_token:
break
playlist_page_token = playlist_next_page_token
if not next_page_token:
break
page_token = next_page_token
if __name__ == '__main__':
main()
スクリプトの使い方
-
チャンネルIDの設定:
YOUR_CHANNEL_ID
の部分に、取得したチャンネルIDを設定してください。 -
APIキーの設定:
YOUR_API_KEY
の部分に、取得したAPIキーを設定してください。 -
スクリプトの実行:
ターミナルやコマンドプロンプトでスクリプトを実行します。python youtube_playlists_and_videos.py
-
結果の確認:
スクリプトが正常に実行されると、youtube_playlists_and_videos.csv
というファイルが生成され、再生リストとその中の動画のタイトル、URLが保存されます。
出力サンプル
Playlist Title | Video Title | Video URL |
---|---|---|
Hibiya.Tech | Hibiya Tech #6 CM Odyssey re:Cap プラットフォームエンジニアリング編 | https://www.youtube.com/watch?v=VDo-lLSGtAY |
クラスメソッド福岡オフィス | エンジニアはなぜ福岡に行くのか?移住のリアルを語る #DevIOラジオ部 | https://www.youtube.com/watch?v=xcQoMh3dmKw |
Microsoft Azure | Azure アーキテクチャセンターから Microsoft Azure の基本構成を学ぼう#cm_odyssey | https://www.youtube.com/watch?v=jcEOJANytx8 |
コールセンター | Amazon Connectのベストプラクティス - 効果的な設計と運用の秘訣 #cm_odyssey | https://www.youtube.com/watch?v=bQfU5PB2ccU |
コールセンター | Amazon Connect を利用した CloudWatch Alarm 電話通知 #cm_odyssey | https://www.youtube.com/watch?v=3wiqrDBxn30 |
まとめ
YouTube Data APIを使えば、再生リストや動画の情報を簡単に管理できます。この方法を使うことで、手動でリストを確認する手間が省け、効率的にデータを管理できます。チャンネル運営者にとって、こうしたスクリプトは大きな助けになるはずです。ぜひ、実際に試してみてください!