From c066a5a8c453588ed12b6ca485ea9f9b1758d6c2 Mon Sep 17 00:00:00 2001 From: xys20071111 Date: Fri, 16 Dec 2022 21:32:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0B=E7=AB=99=E7=9A=84api?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DanmakuReceiver.ts | 15 +++++++++------ src/Main.ts | 5 ++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/DanmakuReceiver.ts b/src/DanmakuReceiver.ts index c1aab38..3de75d6 100644 --- a/src/DanmakuReceiver.ts +++ b/src/DanmakuReceiver.ts @@ -32,19 +32,21 @@ export class DanmakuReceiver extends EventEmitter { } public async connect() { const roomConfig = await (await fetch( - `https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id=${this.roomId}&platform=pc&player=web`, + `https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?id=${this.roomId}&type=0`, { headers: { - cookie, - "user-agent": + Cookie: cookie, + "User-Agent": "Mozilla/5.0 (X11 Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36", - host: "api.live.bilibili.com", + Host: "api.live.bilibili.com", + Origin: 'https://live.bilibili.com', + Referer: `https://live.bilibili.com/${this.roomId}?broadcast_type=0` }, }, )).json() this.ws = new WebSocket( - `wss://${roomConfig.data.host_server_list[0].host}:${ - roomConfig.data.host_server_list[0].wss_port + `wss://${roomConfig.data.host_list[0].host}:${ + roomConfig.data.host_list[0].wss_port }/sub`, ) this.ws.onopen = () => { @@ -54,6 +56,7 @@ export class DanmakuReceiver extends EventEmitter { platform: "web", uid: config.verify.uid, key: roomConfig.data.token, + type: 2 }) this.ws!.send(this.generatePacket( 1, diff --git a/src/Main.ts b/src/Main.ts index 6b16553..0c309ac 100644 --- a/src/Main.ts +++ b/src/Main.ts @@ -22,7 +22,10 @@ if (!config.disable_super_chat_action) { globalThis.onunload = () => { printLog('主程序', '退出') } -danmakuReceiver.on('closed', () => danmakuReceiver.connect()) +danmakuReceiver.on('closed', () => { + printLog('主程序', '掉线了') + danmakuReceiver.connect() +}) danmakuReceiver.on('LIVE', onLiveStart) danmakuReceiver.on('PREPARING', onLiveEnd) danmakuReceiver.on('DANMU_MSG', receiveDanmaku)