youtubeliveのアーカイブで取得できるコメント(チャット)情報について
皆さんくそお久しぶりです。ここのところ学校生活が忙しかったりなんだったりして長らく更新が停滞していましたが、今日から少しずつ更新できたらいいかなと思っています。
そんなお久しぶり一発目はyoutubeliveのアーカイブで取得できるコメントについてです。 今、ブログのネタ用に作るプログラムの下準備をしていて、そのためにアーカイブのコメントを取得する必要があったのですが、この情報が多すぎてなかなか全体を把握しづらい。誰かが取得できる情報をまとめてないかなと思ったのですが、数秒検索して出てこなかったので(短気)まとめておきます。
今回コメントを取得する上で参考にさせていただいたのはこちら
例
上のコードで取得すると全て辞書形式になるので
- key1
- value1
- key2
- value2
- value3
という風に書いていきます。 値を赤、辞書のキーを青で色付けするので、欲しいデータを赤から探して、上にさかのぼる間に出てきた青色の単語を辞書のキーとして使っていくことで、所望のデータを取ってくることができるはずです。
取れる値早見表
クリックで飛べます
内容 |
---|
クライアントID |
その人のメンバー歴 |
メンバーアイコンのURL |
コメントした人のユーザ名 |
ユーザアイコンの諸要素 |
操作の種類 |
絵文字の諸要素 |
コメント文 |
コメントされたときの時間 |
取れる値について
- replayChatItemAction(key,string)
- actions(key, string)(以下リスト)
- index0
- addChatitemAction(key, string)
- clientId(key, string)
- value(string): クライアントのID
- item(key, string)
- liveChatTextMessageRenderer(key, string)
- authorBadges(key, string)(以下リスト)
- index0
- liveChatAuthorBadgeRenderer(key, string)
- accessibility(key, string)
- accessibilityData(key, string)
- label(key, string)
- value(string): その人がメンバーになってどれくらい経ったか(例:'メンバー(7 か月)')
- label(key, string)
- accessibilityData(key, string)
- customThumbnail(key, string)
- thumbnails(key, string)(以下リスト)
- index0
- url(key, string)
- value(string): メンバーアイコンのurl。index0に16×16のサイズが、index1に32×32が入っている?
- url(key, string)
- index0
- thumbnails(key, string)(以下リスト)
- tooltip(key, string)
- value(string): その人がメンバーになってどれくらい経ったか(例:'メンバー(7 か月)')
- accessibility(key, string)
- liveChatAuthorBadgeRenderer(key, string)
- index0
- authorExternalChannnelId(key, string)
- value(string): なんかのID
- authorName(key, string)
- simpleText(key, string)
- value(string): ユーザ名
- simpleText(key, string)
- authorPhoto(key, string)
- contextMenuAccessibility(key, string)
- accessibilityData(key, string)
- label(key, string)
- value(string): 操作の種類(多分)。(例:'コメントの操作')
- label(key, string)
- accessibilityData(key, string)
- contextMenuEndpoint(key, string)
- id(key, string)
- value(string): 不明。なんかのid
- message(key, string)
- runs(key, string)(以下リスト)
- index0
- index1
- text(key, string)
- value(string): コメント内容
- text(key, string)
- runs(key, string)(以下リスト)
- timestampText(key, string)
- simpleText(key, string)
- value(string): コメントされたときの動画時間(H:MM:SS)。マイナスもある
- simpleText(key, string)
- timestampUsec(key, string)
- value(string): コメントされたときの動画時間(マイクロ秒表記?)
- authorBadges(key, string)(以下リスト)
- liveChatTextMessageRenderer(key, string)
- clientId(key, string)
- addChatitemAction(key, string)
- index0
- videoOffsetTimeMsec(key, string)
- value(string): 不明
- actions(key, string)(以下リスト)
注意点
なんか不明データばっかでごめんなさい。自分が使いそうなところ以外は注視してないので、後は自分で読み取ってもらえれば...
コメントにあたる、message[runs]について
コメントは1つの連続した文字列は1つのインデックスを、絵文字は1つのインデックスを使用します。どういうことかというと、
絵文字を3つだけ使ったコメントの場合
インデックスは2まであります文字だけでコメントした場合
インデックスは0のみです文字でコメントした後、絵文字を使った場合。(例:うおおおおお(emoji))
インデックスは1まであります
という感じです。コメントの文字部分だけ抽出したい場合はキーがemojiとなっている部分を省いてください。
スパチャやメンバー通知について
構造が普通のコメントと違うので注意が必要です。まず、双方ともキー'message'がありません。スパチャにはキー'liveChatTickerPaidMessageItemRenderer'が'message'に代わるようにして存在します。メンバー通知は上でまとめた辞書が丸ごと2つで1セットみたいで、まず、'message'キーが'liveChatMembershipItemRenderer'に代わったもの、次に'liveChatTickerSpnsorItemRenderer'に代わったものが来ます。
また、スパチャも日本円と海外通貨で処理が違うみたいで、日本円は先ほど述べた通りなのですが、海外通貨の場合、メンバー通知のように2つの辞書で1セットらしく、1つ目は'liveChatPaidMessageRenderer'、2つ目が'liveChatTickerPaidMessageItemRenderer'が'message'と入れ替わっています。
自分がこれからしようとしていることに、ここら辺の情報はさほど重要ではないので、その下にどんな情報が入っているのかまでは調べていません。
終わりに
以上がyoutubeliveのアーカイブから取得できるコメント情報でした。かなりの量の情報を取得できますね。いろいろできそうです。
これからアーカイブコメントから何かをしようとしている人の助けになれれば幸いです。