Bili-API 是一个用于与 Bilibili 开放平台交互的 Go 语言库,提供了以下核心功能:
appId、appKey、appSecret)确保已安装 Go 1.24.6+,然后通过以下命令安装依赖:
go get cnb.cool/xqitw/bili-api
package main
import (
"fmt"
"cnb.cool/xqitw/bili-api/api"
)
func main() {
// 初始化 API 实例
apiInstance := api.NewApi()
// 可选:设置 UID
apiInstance = api.NewApiWithOptions(api.WithUid(123456))
}
// 生成登录二维码
qrRes := apiInstance.Auth.QrcodeGenerate()
if !qrRes.IsSuccess {
fmt.Println("生成二维码失败:", qrRes.Message)
return
}
fmt.Println("请扫描以下二维码登录:")
fmt.Println(qrRes.Data.Base64Image)
// 扫码登录
loginRes := apiInstance.Auth.QrcodeLogin(qrRes.Data.QrcodeKey)
if !loginRes.IsSuccess {
fmt.Println("登录失败:", loginRes.Message)
return
}
fmt.Println("登录成功!")
// 从环境变量加载配置
client := apiInstance.Client.SetConfigFromEnv()
// 或手动设置配置
client := apiInstance.Client.SetConfig(123456, "your_app_key", "your_app_secret")
详见测试用例 : api/client_test.go
package api
import (
"os"
"testing"
)
func TestAppStartEnd(t *testing.T) {
client := NewApi().Client.SetConfigFromEnv()
res := client.AppStart(os.Getenv("BILI_APP_CODE"))
if !res.IsSuccess {
t.Fatal(res.Message)
return
}
println("游戏启动成功:", res.Data.AnchorInfo.Uname)
gameId := res.Data.GameInfo.GameId
heartbeat := client.AppBatchHeartbeat([]string{gameId})
if !heartbeat.IsSuccess {
t.Fatal(heartbeat.Message)
return
}
println("批量心跳成功:", len(heartbeat.Data.FailedGameIds))
endRes := client.AppEnd(gameId)
if !endRes.IsSuccess {
t.Fatal(endRes.Message)
}
println("游戏停止成功:", gameId)
}
// 定义消息处理器
handler := &ws.MsgHandler{
DmLiveOpenPlatformDm: func(handler *ws.MsgHandler, data *danmaku.LiveOpenPlatformDm) error {
fmt.Println("收到弹幕:", data.Content)
return nil
},
}
// 处理 WebSocket 消息
err := handler.Handler(messageBytes)
if err != nil {
fmt.Println("处理消息失败:", err)
}
Api: 核心入口,管理认证、客户端、直播等功能。Auth: 处理用户认证(扫码登录)。Client: 封装 Bilibili 开放平台接口(如启动、停止、心跳等)。Live: 直播相关功能(待扩展)。Room: 房间相关功能(待扩展)。User: 用户相关功能(待扩展)。MsgHandler: 处理 WebSocket 消息,支持弹幕、礼物、点赞等消息的分发。以下环境变量可用于配置客户端:
BILI_APP_ID: 应用 ID。BILI_APP_KEY: 应用 Key。BILI_APP_SECRET: 应用 Secret。Cookie 持久化:
./bili_cookies/ 目录下,文件名为 bili_cookie_{uid}.json。WithLoadCookiesFunc 和 WithDumpCookiesFunc 自定义加载和保存逻辑。安全性:
appKey 和 appSecret 不被泄露。错误处理:
BliBilRes 结构体,包含 IsSuccess、Code 和 Message 字段,便于错误处理。具体使用参考测试用例,了解各接口的具体用法。