YouTube Live で放送中のチャット取得の手法
今日はYouTube Live のAPIについて調べたよ.
効率的に取得できるようになったらYouTube liveのコメント利用して何かしたいよ..
YouTube Live で放送中のチャット取得の手法
基本的には, メモ帳 | Youtube LiveStreaming APIで配信のコメントを取得する の記事を読めばできると思う. ただしchatidの取得で少しつまづいたのでここに記録しておく.
(後々, Youtube Live 放送終了後の動画でチャットを見たかったが Youtube API を使っても見れない - star__hoshi's diary を読んだ. まさに同じことがやりたかったけどできないぽい..)
本当はやりたいこと: 放送終了後YouTubeのチャットのリプレイを取得したい → 多分無理
なので, まずはリアルタイムで放送しているYouTube liveのコメント取得について書く.
まず,https://www.googleapis.com/youtube/v3/videos?part=liveStreamingDetails&id=xxxxxx
を叩いて
liveStreamingDetails.activeLiveChatIdからChatIdを取得する.
この際にリアルタイムで行われている場合には, activeLiveChatIdというChatIdが取得できる.
[{'etag': '"XI7nbFXulYBIpL0ayR_gDh3eu1k/lg5PCSBfPU3oLaHomBP10wW4Z1U"', 'id': 'T-EKwzauGyk', 'kind': 'youtube#video', 'liveStreamingDetails': {'activeLiveChatId': 'Cg0KC1QtRUt3emF1R3lr', 'actualStartTime': '2018-08-27T05:58:52.298Z', 'concurrentViewers': '2913', 'scheduledStartTime': '2018-08-27T06:00:00.000Z'}}]
一方で, すでに放送が終わっている場合には, actualEndTimeが返ってくる.
[{'etag': '"XI7nbFXulYBIpL0ayR_gDh3eu1k/pbvrzUQdCep-jOC90vteJxSDJGw"', 'id': 'JnrlKBWY2Lo', 'kind': 'youtube#video', 'liveStreamingDetails': {'actualEndTime': '2018-07-05T10:29:47.000Z', 'actualStartTime': '2018-07-05T10:00:55.000Z', 'scheduledStartTime': '2018-07-05T10:00:00.000Z'}}]
ちなみに, 動画(≠アーカイブ)の場合には以下のような結果が返ってくる
[{'etag': '"XI7nbFXulYBIpL0ayR_gDh3eu1k/lBlb0E3FUGTfvTWXg04QHRMVkRw"', 'id': 'M8MzPSYuDlo', 'kind': 'youtube#video'}]
次に先ほど取得したactiveLiveChatIdを含めて
https://www.googleapis.com/youtube/v3/liveChat/messages?part=snippet,authorDetails&liveChatId=xxxxxx
を叩くとチャットを取得できるぜ.
放送終了後のチャットを取得できるかについて
まさにやりたいことはここから..
APIで取得できない..
リプレイの場合, webで確認してみると get_live_chat_replay?continuation=xxxxxxxxxxx.json
で一定間隔でチャットを取得してることがわかった.
ここでcontinuationを知る方法について調査なう.
videoIdから一番初めのcontinuationの値を知ることができたらあとは芋づる式に取得することができる.
get_live_chat_replay?continuation=xxxxxxxxxxx.json
には次に取得するcontinuationの値が含まれているから...