1- # douyudanmu
2- 实时获取斗鱼弹幕
1+ # douyudm
32
3+ 基于websocket实时获取斗鱼弹幕
44
55<a href =" https://npmcharts.com/compare/vue?minimal=true " ><img src =" https://img.shields.io/npm/dm/douyudm.svg?sanitize=true " alt =" Downloads " /></a >
66<a href =" https://www.npmjs.com/package/douyudm " ><img src =" https://img.shields.io/npm/v/douyudm.svg?sanitize=true " alt =" Version " /></a >
77<a href =" https://www.npmjs.com/package/douyudm " ><img src =" https://img.shields.io/npm/l/douyudm.svg?sanitize=true " alt =" License " /></a >
88
9- > \> = 1.1.1 支持所有消息输出到文件
9+ > \> = 2.0.0 不再支持 ** WEB ** 引用
1010
1111## 安装(命令行)
12+
1213``` shell
1314npm i -g douyudm
1415or
1516yarn global add douyudm
1617```
1718
1819## 使用(命令行)
20+
1921通过命令行监听,默认显示,` --debug ` 开启输出到文件,默认保存当前运行目录
22+
2023``` shell
2124douyudm -i 房间号
2225```
23- 更多命令查看 ` douyudm --help `
2426
25- ## 安装(WEB)
26- 建议在html顶部位置引入js文件
27- ```
28- <script src="https://flxxyz.github.io/douyudm/dist/douyudanmaku.min.js"></script>
29- ```
30-
31- ## 使用(WEB)
32- 挂载在window下,可通过 ` douyudanmaku ` , ` danmaku ` 调用
33- ```
34- <script>
35- window.onload = function() {
36- var room = new danmaku(roomId, {
37- debug: false, //存储到indexedDB
38- })
39- //系统事件
40- room.on('connect', function() {
41- console.log('[connect] roomId=%s', this.roomId)
42- })
43- room.on('disconnect', function() {
44- console.log('[disconnect] roomId=%s', this.roomId)
45- })
46- room.on('error', function(err) {
47- console.log('[error] roomId=%s', this.roomId)
48- })
49- //消息事件
50- room.on('chatmsg', function(res) {
51- console.log('[chatmsg]', `<lv ${res.level}> [${res.nn}] ${res.txt}`)
52- })
53- room.on('loginres', function(res) {
54- console.log('[loginres]', '登录成功')
55- })
56- room.on('uenter', function(res) {
57- console.log('[uenter]', `${res.nn}进入房间`)
58- })
59- //开始监听
60- room.run()
61-
62- //导出日志(不传入房间号默认为所有)
63- room.logger.export(房间号)
64-
65- //清除日志(不传入房间号默认为所有)
66- room.logger.clear(房间号)
67- }
68- </script>
69- ```
27+ 更多命令查看 ` douyudm --help `
7028
7129## 安装(API)
30+
7231``` shell
7332npm i douyudm
7433or
7534yarn add douyudm
7635```
7736
7837## 使用(API)
38+
7939通过库调用自行封装
40+
8041``` javascript
8142// 引入类库
8243const douyu = require (' douyudm' )
8344
8445// 设置房间号,初始化
8546const roomId = 102965
8647const opts = {
87- debug: false ,
88- logfile: ` /自定义路径/${ roomId} .log` , // 默认保存到当前运行目录,格式: 房间号.log
48+ debug: true , // 默认关闭 false
8949}
9050const room = new douyu (roomId, opts)
9151
@@ -116,6 +76,7 @@ room.run()
11676```
11777
11878## 事件列表
79+
11980| 系统事件 | 描述 |
12081| :----------:| :--------:|
12182| connect | 连接 |
@@ -167,7 +128,6 @@ room.run()
167128| configscreen | 估计是全屏广播显示礼物 |
168129| rnewbc | 未知的消息事件 |
169130
170-
171131## 斗鱼STT序列化反序列化库
172132
173133STT序列化规定如下:
@@ -186,12 +146,13 @@ yarn test:stt
186146```
187147
188148## 后话
149+
189150坑太多了,github上的库大部分都是不能使用的,如果近期更新的可以判断使用的新接口,review了几乎所有相关的库,都是依据斗鱼自己官方平台的方法发起tcp连接?但根本连不上,一直拒绝...
190151
191152看了下能使用的库,都是通过websocket建立的连接,立马修改,不出片刻撸完,发现发送数据的格式有点难搞,虽说示意图挺清楚的,但是用Buffer传输死活没有相应的消息,调试太磨人心性了,玛德,直接去把斗鱼网页上的方法扒下来。
192153
193154通过webpack打包混淆代码乍一眼看去很混乱,其实仔细观察还是有规律寻找的。
194155
195- 文档中编码的几个固定参数均为数字,在webpack中数字的混淆我还没见过,按这个思路精准的找到这段代码。经过我十几分钟的理解,提取出 [ ** bufferCoder.js** ] ( src /bufferCoder.js)
156+ 文档中编码的几个固定参数均为数字,在webpack中数字的混淆我还没见过,按这个思路精准的找到这段代码。经过我十几分钟的理解,提取出 [ ** bufferCoder.js** ] ( test/old /bufferCoder.js)
196157
197158斗鱼自有的序列化,反序列化方法可以查看 [ ** stt.js** ] ( src/stt.js )
0 commit comments