B站直播API
B站直播相关API的Go语言实现
目前仅支持直播间弹幕相关API
支持
- 礼物
- 超级留言
- 弹幕
- 其他 websocket 事件
详见dto/
目录下的文件
快速开始
安装
go get github.com/botplayerneo/bili-live-api
使用
package main
import (
"fmt"
api "github.com/botplayerneo/bili-live-api"
"github.com/botplayerneo/bili-live-api/dto"
"github.com/botplayerneo/bili-live-api/log"
"github.com/botplayerneo/bili-live-api/websocket"
)
func main() {
// 设置内部 logger 打印日志等级
// 或通过 log.ReplaceDefault(customLogger) 来使用自定义 logger
log.SetLogLevel(log.LevelWarn)
// 参数为房间号
l := api.NewLive(510)
// 内部通过 type switch 来判断 handler 类型
// handler 类型定义在 websocket 包中
err := l.RegisterHandlers(
danmakuHandler(),
giftHandler(),
guardHandler(),
superChatHandler(),
)
if err != nil {
panic(err)
}
l.Start()
}
func danmakuHandler() websocket.DanmakuHandler {
return func(danmaku *dto.Danmaku) {
fmt.Printf("%s:%s\n", danmaku.Uname, danmaku.Content)
}
}
func giftHandler() websocket.GiftHandler {
return func(gift *dto.Gift) {
fmt.Printf("%s 赠送 [礼物%.1f¥]%s x %d\n", gift.Uname, float64(gift.Price)/1000, gift.GiftName, gift.Num)
}
}
func guardHandler() websocket.GuardHandler {
return func(guard *dto.Guard) {
fmt.Printf("%s 开通舰长,级别%d", guard.Username, guard.GuardLevel)
}
}
func superChatHandler() websocket.SuperChatHandler {
return func(superChat *dto.SuperChat) {
fmt.Printf("[%d¥SC]%s:%s\n", superChat.Price, superChat.UserInfo.Uname, superChat.Message)
}
}
相关
项目组织结构参考: botgo