ordinaryroad-bilibili-live
使用 Netty 来连接 B 站直播间的弹幕信息流 WebSocket 接口
⚠️⚠️⚠️ 项目已重构(API 不变,v0.0.9 为最后一个版本),已支持 Bilibili、Douyu,传送门:ordinaryroad-live-chat-client,有问题欢迎提交 issuse,觉得有用的话可以点个小星星 ⭐️ 鼓励一下,感谢
- Feature 0: Netty
- Feature 1: 消息中的未知属性统一放到单独的 MAP 中
- Feature 2: 支持房间短 id
- Feature 3: 支持自动重连
- Feature 4: 支持 Cookie
- Feature 5: 支持同时监听多个直播间
☑️ ✅ ToDo
List: https://github.com/users/1962247851/projects/1/views/1?filterQuery=repo%3A%22OrdinaryRoad-Project%2Fordinaryroad-bilibili-live%22
1. 引入依赖
<dependency> <groupId>tech.ordinaryroad.bilibili.live</groupId> <artifactId>ordinaryroad-bilibili-live</artifactId> <!-- 参考github release版本,不需要前缀`v` --> <version>${ordinaryroad-bilibili-live.version}</version> </dependency>
2. 开始使用
Spring Boot 3 示例项目:https://github.com/OrdinaryRoad-Project/ordinaryroad-bilibili-live-example
2.1 Client 模式
参考
BilibiliLiveChatClientTest
测试类
String cookie = System.getenv("cookie"); BilibiliLiveChatClientConfig config = BilibiliLiveChatClientConfig.builder() // TODO 浏览器Cookie .cookie(cookie) .roomId(7777) .build(); client = new BilibiliLiveChatClient(config, new IBilibiliSendSmsReplyMsgListener() { @Override public void onDanmuMsg(SendSmsReplyMsg msg) { JsonNode info = msg.getInfo(); JsonNode jsonNode1 = info.get(1); String danmuText = jsonNode1.asText(); JsonNode jsonNode2 = info.get(2); Long uid = jsonNode2.get(0).asLong(); String uname = jsonNode2.get(1).asText(); log.info("收到弹幕 {}({}):{}", uname, uid, danmuText); } }); client.connect();
2.2 高级模式
参考
BilibiliBinaryFrameHandlerTest
测试类
重写 IBilibiliSendSmsReplyMsgListener
中的方法,进行处理业务逻辑(耗时操作可能需要异步)
修改相关参数后,运行查看效果
// TODO 修改房间ID long roomId = 7777; // TODO 设置浏览器Cookie String cookie = System.getenv("cookie"); // TODO 修改版本 ProtoverEnum protover = ProtoverEnum.NORMAL_BROTLI;
控制台输出示例
CmdEnum 可能不全,需要根据控制台信息手动补(不影响运行)
相关链接
- B 站直播数据包分析连载(2018-12-11 更新)_weixin_34009794 的博客-CSDN 博客
- 获取 bilibili 直播弹幕的 WebSocket 协议_炒鸡嗨客协管徐的博客-CSDN 博客
- GitHub - SocialSisterYi/bilibili-API-collect: 哔哩哔哩-API 收集整理【不断更新中....】
- GitHub - LiQing-Code/BLiveDanmu: 用于获取哔哩哔哩直播间弹幕数据
- Java 使用 zlib 压缩和解压字符_、Pacific 的博客-CSDN 博客_java zlib
- https://s1.hdslb.com/bfs/blive-engineer/live-web-player/room-player.min.js
- 哔哩哔哩直播开放平台 (bilibili.com)
- 哔哩哔哩开放平台 (bilibili.com)
- 哔哩哔哩直播开放文档 (bilibili.com) 长连 CMD 说明
- bilibili 直播间接收监听和发送弹幕 api_b 站弹幕 api_NPC_P 的博客-CSDN 博客
- 感谢大佬,B 站弹幕也能抓取啦~ - 51Testing 软件测试网-软件测试人的精神家园
- Bilibili-Live-API/API.WebSocket.md at master · lovelyyoshino/Bilibili-Live-API · GitHub