3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

REALITYチャット取得

Last updated at Posted at 2021-08-23

コメントビューア用。
OAuthが要るようなAPIは使わず、未登録で取得できるコメントを取得。
あくまで執筆時点の情報です。仕様が変わる可能性もあるのであしからず。


1. 配信IDを確認する

https://reality.app/viewer/{media_id}

  • 現状はブラウザから見る手段が無さそうなので、URLをツイートして共有するなどが必要です。
  • 少なくともこのIDさえわかればOK

2. WebSocketでコメントサーバに接続する

wss://comment.reality.app/?media_id={media_id}

繋ぐだけで取得できる。
接続直後、それまでのコメントがドバッと送られてくる。
以降は適宜来る。

メッセージ定義

{
  /**
   * 配信ID
   */
  "media_id": number,
  /**
   * 26桁のランダムな英数字(大文字や記号は今のところなし)なので、ユーザIDっぽい。システムの場合は空文字。
   */
  "vlive_id": string,
  /**
   * ユーザ名
   */
  "nickname": string,
  /**
   * アイコンURL
   * @example "https://reality-public.akamaized.net/viewer/img/user_icon/system_default_64.png"
   */
  "icon_url": string,
  /** 
   * コメント日時
   * @example "2021-08-23T17:30:21Z"
   */
  "created_at": string,
  /**
   * メッセージ種別。
   * - 1: 通常のコメント
   * - 2: いいねしたよ
   * - 6: ギフト(?)
   * - 8: 入室メッセージ
   * - 9: システムメッセージ
   */
  "content_type": number,
  /**
   * メッセージ
   * @example "おはよう"
   * @example "xxxさんがいいねしたよ"
   * @example "640,アイマスク,100,アイマスクをあげました"
   * @example "配信時間が15分を突破したよ!" 
   */
  "content": "配信時間が15分を突破したよ!",
  /**
   * 不明。だいたい0
   */
  "deco": number,
  /**
   * 配信者コメントか否か(未確認)
   */
  "is_self": boolean
}

とりあえずNode.jsで動かす

const ws = require('ws');
const media_id = 配信IDをここに;

const soc = new ws('wss://comment.reality.app/?media_id=' + media_id);

soc.onmessage = (event) => {
  const json = JSON.parse(event.data);
  console.log(json.content);
};
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?