コメントビューア用。
OAuthが要るようなAPIは使わず、未登録で取得できるコメントを取得。
あくまで執筆時点の情報です。仕様が変わる可能性もあるのであしからず。
ユーザのチャンネルURL
https://live.line.me/channels/{ユーザID}
手順
- 動画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として取得
-
チャットの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}/{配信ごとの英字。乱数っぽい}
- チャットのURLは以下のような感じ
-
チャット受信
- 取得したチャット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
}