1
1

More than 3 years have passed since last update.

Twicasのチャット取得

Posted at

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

ユーザの配信URL

  • https://twitcasting.tv/{ユーザID}
    • 例: https://twitcasting.tv/pasta04

手順

  1. ユーザIDを元に、動画ID(movieID)を取得

    • リクエスト
      • GET https://frontendapi.twitcasting.tv/users/{ユーザID}/latest-movie
    • レスポンス
      {
          "update_interval_sec": 4,
          "movie": {
             "id": {movieID},
             "is_on_live": true  // 配信中かどうか
           }
      }
    
  2. 動画IDを元に、チャットのURLを取得

    • リクエスト
      • POST https://twitcasting.tv/eventpubsuburl.php
      • body(form-data)
        • movie_id: {movieID}
    • レスポンス
      {
         "url": "wss://s202218134036.twitcasting.tv/event.pubsub/v1/streams/{movieID}/events?token={なんやかんや}&n={なんやかんや}"
      }
    
  3. チャットURLにWebSocketで接続する

1メッセージで複数コメントが取得できることがある。
ただの空配列が受信できることもある。
WebSocketでpingメッセージを送る必要は無さそう。

受信できるメッセージは以下の型。

  • コメント
{
    "type": "comment",
    /** コメントのIDっぽい */
    "id": number,
    /** コメント */
    "message": string,
    "createdAt": number,
    /** 投稿ユーザ情報 */
    "author": {
        /** Twicas内でのIDっぽい。乱数みたいなので見てもしょうがない。 */
        "id": string,
        /** ユーザの表示名 */
        "name": string,
        /** TwitterアカウントのScreenName */
        "screenName": string,
        /** アイコン画像のURL */
        "profileImage": string,
        "grade": number
    },
    "numComments": number
}[]
  • ギフト
{
    "type": "gift",
    "message": "",
    "item": {
        /** アイテム名。お茶とか */
        "name": string,
        /** アイテム画像URL */
        "image": string,
        "effectCommand": ""
    },
    /** コメントのauthorと同じ */
    "sender": {
        "id": string,
        "name": string,
        "screenName": string,
        "profileImage": string,
        "grade": number
    }
}[]
1
1
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
1
1