0
1

More than 3 years have passed since last update.

LINE LIVEのチャット取得

Posted at

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

ユーザのチャンネルURL

  • https://live.line.me/channels/{ユーザID}

手順

  1. 動画IDの取得

    • GET https://live-api.line-apps.com/web/v4.0/channel/{ユーザID}
    • レスポンス
    {
        /** ステータスコード。正常時200が返ってくるっぽい。 */
        "apistatusCode": number,
        /** ユーザID */
        "id": number,
        /** タイトル */
        "title":string,
        /** 配信してたらtrue */
        "isBroadcastingNow": boolean,
        "liveBroadcasts": {
            "hasNextPage": boolean,
            /** 配信してたら要素がある。してなかったら空配列。  */
            "rows": {
              /** ステータスコード。正常時200が返ってくるっぽい。 */
              "apistatusCode": number,
              /** ユーザID */
              "channelId": number,
              /** 動画ID */
              "id": number,
              /** 配信中なら"LIVE" */
              "liveStatus": string,
              // 省略
            }[],
            /** ステータスコード。正常時200が返ってくるっぽい。 */
            "apistatusCode": number
        },
        /** ステータスコード。正常時200が返ってくるっぽい。 */
        "status": number,
        // 省略
    }
    
    • 細かくチェックするなら各階層のステータスコードチェックが要るが、正常系だけ作るなら無視でOK
    • isBroadcastingNowがtrueかチェック
    • liveBroadcasts.rows[0].idを動画IDとして取得
  2. チャットのURLを取得

    https://live-api.line-apps.com/web/v4.0/channel/{ユーザID}/broadcast/{動画ID}

    {
        "chat": {
            /** チャットのWebSocketURL */
            "url": string,
            /** 配信中ならnull。たぶんstringになる。 */
            "archiveURL": any,
            /** 配信者コメントのWebSocketURL */
            "ownerMessageURL": string
        },
        "status": 200,
        // 省略
    }
    
    • チャットのURLは以下のような感じ
      • wss://cast-chat-{数値}.line-apps.com/chat/app/{動画ID}/{配信ごとの英字。乱数っぽい}
  3. チャット受信

    • 取得したチャットURLでWebSocket接続する。レスポンスの種類はいっぱいあるので必要なもの以外は無視する。
    • メッセージの共通の型は以下。
{
  "type": string,
  "data": object
}
  • typeの種類(確認できたもの)
type 内容
entranceAnnouncement 入場した
followStart フォローした
pokeReceive (謎)
gift ギフト
giftMessage (giftとセットで飛んでくる)
love
guideMessage
systemMessage
bulk
message コメント
  • type: messageのdata
{
    /** コメント */
    "message": string,
    /** コメントしたユーザ */
    "sender": {
        "id": number,
        "hashedId": string,
        /** ユーザ表示名 */
        "displayName": string,
        /** アイコン画像のURL */
        "iconUrl": string,
        "hashedIconId": string,
        "isGuest": boolean,
        "isBlocked": boolean,
        "isPremiumMember": boolean
    },
    "sentAt": number,
    "isNGMessage": boolean,
    "key": string,
    "roomId": string
}
0
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
0
1