#bilibili #sdk #proto #三方

bilibili_sdk

三方 bilibili sdk

2 releases

0.1.1 Apr 14, 2024
0.1.0 Apr 10, 2024

#2 in #bilibili

Download history 125/week @ 2024-04-07 156/week @ 2024-04-14

281 downloads per month

MIT/Apache

28KB
472 lines

bilibili 开放平台 第三方SDK

说明

该项目由个人维护,如果接口有变更,您可以使用github提交pr,或给我发邮件。我会尽可能的维护该项目

如果你熟悉github和Rust,你应该知道怎么找我

使用方法

参见 examples 文件夹下的两个项目以及测试用例

请求接口部分

pub use bilibili_sdk::{
    ResponseData, // http 整个的响应结构体
    Data, // http 整个的响应结构体里的data字段
    GameInfo, // data里面的game_info字段
    WebsocketInfo, // data里面的websocket_info字段
    AnchorInfo, // data里面的anchor_info字段
    BilibiliSDK, Config // 就是SDK和配置呗
};
use bilibili_sdk::{};
let config: Config = Config {
    access_secret_key: "xxxxxxxxxx".to_owned(), // 替换成你自己的
    access_key_id: "xxxxxxxxxx".to_owned(),// 替换成你自己的
    ..Default::default()
};
let app_id: u64 = 1234567890123;// 替换成你自己的
let code: String = "xxxxxxxxx".to_owned();// 替换成你自己的
let sdk = BilibiliSDK::new(config);
let game_id = "abc".to_string();
async {
    let result = sdk.start(code, app_id).await; // 开始接口
    let result = sdk.heartbeat(game_id.clone()).await; // 心跳接口
    let result = sdk.batch_heartbeat(vec![game_id.clone()]).await; // 批量心跳接口
    let result = sdk.end(app_id, game_id.clone()).await; // 结束接口
};

proto 解析


use bilibili_sdk::{
    Proto, // Proto 解析
    Operation, // Proto里的operation的枚举
    num_2_operation // 将整型转换为枚举的函数,应该用不上
};

// 这是解析长链接消息需要的结构体
use bilibili_sdk::{
    LiveEventData, // webscoket里面的完整结构体
    DM, // DM 结构体
    SendGift, // 礼物消息的结构体
    SuperChat, // 醒目留言消息的结构体
    SuperChatDelete, // 醒目留言删除事件消息的结构体
    Guard, // 大航海消息的结构体
    Like, // 点赞消息的结构体
    ComboInfo, // 礼物连击消息的结构体
    LiveCmd, // CMD的枚举 根据枚举匹配对应的解析
    MatchedData, // 匹配到的数据枚举{"cmd":"xx","data":"就是这里的部分,用枚举表示了"}
    msg_parser // 一个解析消息的助手函数
};

// 打包心跳包
let heartbeat = Proto::pack(None,Operation::Heartbeat,vec![]);

// 打包鉴权包
let auth = Proto::pack(None,Operation::Auth,vec![]);

// 解析proto消息
let data : Vec<u8> = vec![0, 0, 0, 21, 0, 16, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 104, 101, 108, 108, 111].to_vec();
let proto = Proto::unpack(None, data); // String::from_utf8(proto.body) 输出 "hello"

Dependencies

~10–22MB
~425K SLoC