一款基于Node.js的可扩展的弹幕获取器
现暂时仅支持biilibili直播
npm install danmaku-fetcher --save-dev
首先先将插件中的构造函数引入
let {Fetcher, Manager, IPlugin} = require('danmaku-fetcher')
设置获取器
let fetcher = new Fetcher ({
url: 'https://api.live.bilibili.com/ajax/msg', // b站弹幕获取接口
type: 'bilibili', // 获取类型为b站
data: {
'roomid': 30034, // 房间号
'token': '', //其他不需要的留空
'csrf_token': '',
'data_source_id': ''
},
time: 5000 // 调用接口的间隔时间
})
设置自定义的插件
let plugin1 = new IPlugin ('p1', function (fetcher) { // arg1: 指令前缀, arg2: 插件回调
fetcher.work() // 抓取器开始工作
setInterval(() => { // 开始消费内容,500毫秒轮询一次
let result = fetcher.produce(this) // 取得一条队列中的弹幕
if (result) { // 如果能取到
console.log(result.command) // 获取命令
}
}, 500)
})
通过管理器将获取器和插件进行注册
Manager.regist(fetcher, plugin1)
let fetcher = new Fetcher(data) data 参数:
名称 | 描述 | 类型 |
---|---|---|
type | 设置弹幕获取类型 | string |
url | 设置弹幕接口 | string |
data | 设置接口数据 | object |
time | 设置轮询时间 | number |
fetcher.work()
获取器开始工作
fetcher.stop()
获取器停止工作
let result = fetcher.produce(this)
返回在队列中一条弹幕信息,需将插件本身当作参数传入(即this)
若result为undefined,则可能由于无人发送新弹幕或无人发送符合前缀规则的弹幕
构造函数:
let plugin1 = new IPlugin (name, callback)
名称 | 描述 | 类型 |
---|---|---|
name | 设置插件名称(即指令前缀), 传入default为无前缀 | string |
callback | 设置插件主运行函数 | function |
功能方法:
Manager.regist(fetcher, plugin)
将获取器和Plugin绑定
若添加有带前缀的插件
用户就可以通过 [插件名][空格][指令]的方式进行控制
例如:
addmusic 论理空军
若添加无前缀的插件
用户无论发送何种弹幕都会被获取到并添加进队列中