2020年12月22日火曜日

Youtube のライブ中のコメントを curl でサクっと取得する方法

概要

Youtube Data API v3 と Youtube Live Streaming API を使います
コメントではなくチャットを取得します
コメントは動画の下に表示される非同期のメッセージでチャットはライブ中に右に表示されるリアルタイムのメッセージになります

当然ですが今回取得する方法はライブ中でなければ取得できないので注意してください

環境

  • macOS 11.1
  • Youtube Data API v3
  • Youtube Live Streaming API

事前準備: Youtube API Key の取得

こちらの方法で取得しましょう
GCP の登録が必須です

事前準備: Youtube Data API v3 の有効化

こちらの方法で有効化してください

Youtube Data API v3 を使って activeLiveChatId を取得する

curl \
  'https://youtube.googleapis.com/youtube/v3/videos?part=liveStreamingDetails&id=xxxxxxxxxxx&key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Accept: application/json' \
  --compressed

id はライブ配信中の動画 ID になります
ブラウザアクセスして URL バーに表示される ID になります
レスポンス内の JSON に含まれる activeLiveChatId をメモしておきます

なおライブ配信中でないと activeLiveChatId は含まれないので activeLiveChatId がない場合はライブ配信中になっているか確認しましょう

Youtube Streaming API と activeLiveChatId を使ってチャット情報を取得する

curl \
  'https://youtube.googleapis.com/youtube/v3/liveChat/messages?liveChatId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&part=authorDetails%2Csnippet&key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Accept: application/json' \
  --compressed

part は authorDetailssnippet をカンマ区切りで指定しましょう
これで

トラブルシューティング: quotaExceeded になる場合は

なぜか quota を超えていないのに quotaExceeded になる場合があります
自分は新規でプロジェクトを作成し直してキーを作成しました

おまけ: API Explorer を活用しよう

今回紹介した curl コマンドは API Explorer を使えば簡単に作成できます
curl 以外にも Python や Java のコードも作成できるのでプログラムとして使うこともできます

Youtube Data API v3: Videos: list
https://developers.google.com/youtube/v3/docs/videos/list

Youtube Live Streaming API: LiveChatMessages: list
https://developers.google.com/youtube/v3/live/docs/liveChatMessages/list?hl=en

最後に

コードに落とす前に curl で手動で動作確認しておくとプログラミングするときに流れを理解した状態で書けるので結果的に書きやすくなると思います

SDK があれば SDK を使っても良いと思います

参考サイト

0 件のコメント:

コメントを投稿