Bilibili直播信息流:连接方法与数据解析
如今,市面上已经有不少开源项目可以用于连接 B 站直播 WebSocket 获取信息流。
但在实际使用中,常常发现它们并不能完全满足个性化需求。
为了更好地适配自己的业务场景,我决定自己动手实现一套连接方案。
因此,我整理了整个实现过程的一些关键步骤和注意事项,希望能够对有相似需求的朋友们有所帮助
接入前准备
获取直播间真实ID
网页版 直播间URL 携带的房间号可能是短号,并不保证一定为真实地址,因此建议调用该接口以确保房间号无误
请求方式:GET
参数名 | 类型 | 内容 |
---|---|---|
room_id | int | 直播间 ID |
请求响应示例与字段说明
展开查看
1 | curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \ |
1 | { |
获取信息流认证秘钥
该接口可以获取到对应直播间信息流的链接地址,以及建立链接需要认证的token信息
注意: B 站更新了隐私政策, 连接建立 5 分钟左右, 若该连接认证时传入信息来自未登录用户, 会提示 为保护用户隐私,未注册登陆用户将无法查看他人昵称, 随后所有发送弹幕的用户 id 都为 0, 用户名部分也使用 * 保护,因此调用本接口时需要传递 ** cookie **
注意: ws 与 wss 连接地址带有路径 /sub, 如 wss://tx-sh-live-comet-08.chat.bilibili.com:443/sub
请求方式:GET
请求地址:https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo
参数名 | 类型 | 内容 |
---|---|---|
id | int | 直播间真实id |
请求响应示例与字段说明
展开查看
1 | curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \ |
1 | { |
信息流接入
数据包为MQ(Message Queue,消息队列)使用 Websocket 或 TCP 连接作为通道,具体格式为 弹幕协议 + 正文数据
操作流程:
连接信息流服务器节点 -> 发送认证包 -> 接收认证包回应 -> 接收普通包&(每30秒发送心跳包 -> 接收心跳回应)
- Packet Length:整个Packet的长度,包含Header
- Header Length:Header的长度,固定为16
- Version:协议版本
- Operation:操作码
- Sequence ID:保留字段,可以忽略
- Body:消息体,客户端解析Body之前请先解析Version字段
Version 说明:
0 - 普通包正文不使用压缩
1 - 心跳及认证包正文不使用压缩
2 - 普通包(zlib压缩)
3 - 普通包(brotli压缩)
Operation 说明:
2 - 客户端发送的心跳包(30秒发送一次)
3 - 服务器收到心跳包的回复
5 - 服务器推送的弹幕消息包
7 - 客户端发送的鉴权包(客户端发送的第一个包)
8 - 服务器收到鉴权包后的回复
注意:B站最近加强了风控,建议在建立连接时携带好用户的cookie以避免风控限流
认证包构建
注意: 认证包需要在握手成功 5 秒内发送, 否则强制断开连接
认证包头部信息基于上述协议格式不再赘述,仅说明 Body 如何构建
字段 | 类型 | 说明 |
---|---|---|
uid | int | 用户uid |
roomid | int | 主播房间id |
protover | int | 协议版本,决定了后续数据包的 Version |
buvid | string | 用户buvid3,可在cookie中获得 |
platform | string | 平台,传web即可 |
type | int | 不确定用途,目前B站网页版传2,照着传即可 |
key | string | 获取信息流认证秘钥接口提供的token |
protover 说明:
2 - 后续正文以 zlib 方式返回
3 - 后续正文以 brotli 方式返回
示例:
1 | 00000000: 0000 0152 0010 0001 0000 0007 0000 0001 ...R............ |
命令列表
- SEND_GIFT:赠送礼物
- DANMU_MSG:弹幕信息
- GUARD_BUY:开通舰长
- GUARD_LOTTERY_START:千舰推送
- USER_TOAST_MSG:上舰抽奖消息推送
- SUPER_CHAT_MESSAGE:醒目留言
- ENTRY_EFFECT:舰长进入直播间(进入直播间特效)
- INTERACT_WORD:直播间互动
- PK_BATTLE_PRE_NEW:PK即将开始
命令说明
赠送礼物:SEND_GIFT
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.action | string | 行为,一般都是投喂 |
data.bag_gift | array | 从背包中赠送礼物时会出现 |
data.bag_gift.price_for_show | int | 礼品单价(电池) |
data.bag_gift.show_price | int | 赠送数量 |
data.batch_combo_id | string | 连击ID |
data.batch_combo_send | array | 连击信息 |
data.batch_combo_send.action | string | 行为,一般都是投喂 |
data.batch_combo_send.batch_combo_id | string | 连击ID |
data.batch_combo_send.batch_combo_num | int | 当前连击数 |
data.batch_combo_send.blind_gift | array | 相关礼物信息 |
data.batch_combo_send.blind_gift.blind_gift_config_id | int | 赠送盲盒时存在数据,疑似是盲盒的配置 |
data.batch_combo_send.blind_gift.from | int | 不确定用途,观测到 blind_gift_config_id 存在时为0,其余情况无数据 |
data.batch_combo_send.blind_gift.gift_action | string | 赠送盲盒时为爆出,其余无数据 |
data.batch_combo_send.blind_gift.gift_tip_price | int | 赠送盲盒时为爆出的礼物价格,其余无数据 |
data.batch_combo_send.blind_gift.original_gift_id | int | 赠送盲盒时为盲盒的 gift_id,其余无数据 |
data.batch_combo_send.blind_gift.original_gift_name | string | 赠送盲盒时为盲盒的名称,其余无数据 |
data.batch_combo_send.blind_gift.original_gift_price | int | 赠送盲盒时为盲盒的价格,其余无数据 |
data.batch_combo_send.gift_id | int | 礼物id,如果是盲盒则为盲盒爆出的礼物id |
data.batch_combo_send.gift_name | string | 礼物名称,如果是盲盒则为盲盒爆出的礼物名称 |
data.batch_combo_send.gift_num | int | 赠送数量 |
data.batch_combo_send.send_master | string | 不清楚用途 |
data.batch_combo_send.uid | string | 赠送人uid |
data.batch_combo_send.uname | string | 赠送人名称 |
data.beatId | int | 暂不确定用途,观测到多是空或者0 |
data.biz_source | string | 暂不确定用途,观测到多是 Live 跟 live |
data.blind_gift | array | 相关礼物信息 |
data.blind_gift.blind_gift_config_id | int | 赠送盲盒时存在数据,疑似是盲盒的配置 |
data.blind_gift.from | int | 不确定用途,观测到 blind_gift_config_id 存在时为0,其余情况无数据 |
data.blind_gift.gift_action | string | 赠送盲盒时为爆出,其余无数据 |
data.blind_gift.gift_tip_price | int | 赠送盲盒时为爆出的礼物价格,其余无数据 |
data.blind_gift.original_gift_id | int | 赠送盲盒时为盲盒的 gift_id |
data.blind_gift.original_gift_name | string | 赠送盲盒时为盲盒的名称,其余无数据 |
data.blind_gift.original_gift_price | int | 赠送盲盒时为盲盒的价格,其余无数据 |
data.broadcast_id | int | 广播ID,疑似赠送大礼物触发广播时与其绑定 |
data.coin_type | string | 硬币类型,目前观测到非付费礼物为silver ,付费礼物为gold |
data.combo_resources_id | int | 待观测,通常是 0 或 1 |
data.combo_send | array | 连击信息 |
data.combo_send.action | string | 行为,一般都是投喂 |
data.combo_send.combo_id | string | 连击ID |
data.combo_send.combo_num | int | 当前连击数 |
data.combo_send.gift_id | int | 礼物id (盲盒为实际爆出礼物) |
data.combo_send.gift_name | string | 礼物名称(盲盒为实际爆出礼物) |
data.combo_send.gift_num | int | 数量 |
data.combo_send.send_master | string | 未观测到有效数据 |
data.combo_send.uid | int | 赠送人uid |
data.combo_send.uname | string | 赠送人名称 |
data.combo_stay_time | int | 连击有效间隔时间 |
data.combo_total_coin | int | 连击总费用 |
data.crit_prob | int | 待观测,全是0 |
data.demarcation | int | 待观测,数据一般是1,2,3,应该是分类,看起来数字越大越贵 |
data.discount_price | int | 折扣价格,比如不要钱的粉丝团灯牌 |
data.dmscore | int | 某种评分?待观测 |
data.draw | int | 待观测 |
data.effect | int | 待观测 |
data.effect_block | int | 待观测 |
data.face | string | 用户头像URL |
data.face_effect_id | int | 待观测 |
data.face_effect_type | int | 待观测 |
data.face_effect_v2 | array | 待观测 |
data.face_effect_v2.id | int | 待观测 |
data.face_effect_v2.type | int | 待观测 |
data.float_sc_resource_id | int | 待观测 |
data.giftId | int | 礼物ID |
data.giftName | string | 礼物名称 |
data.giftType | int | 礼物类型,枚举,目前发现值 5 疑似免费礼物或背包礼物,其他含义待观测 |
data.gift_info | array | 礼物详细信息 |
data.gift_info.effect_id | int | 某种ID,目前看好像只有盲盒礼物有,其余为0 |
data.gift_info.gif | string | 礼物GIF图 |
data.gift_info.has_imaged_gift | int | 某种枚举,effect_id非0时为1,其余为0 |
data.gift_info.img_basic | string | 礼物PNG图 |
data.gift_info.webp | string | 礼物webp图 |
data.gift_tag | array | 礼物标签? |
data.gift_tag.0 | int | 标签相关,待观测 |
data.gold | int | 待观测 |
data.group_medal | int | 套票相关?不确定,待观测 |
data.guard_level | int | 牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.is_first | bool | 待观测,应该是标记本场直播是否是第一次赠送 |
data.is_join_receiver | bool | 待观测 |
data.is_naming | bool | 待观测 |
data.is_special_batch | int | 待观测 |
data.magnification | int | 待观测 |
data.medal_info | array | 牌子信息 |
data.medal_info.anchor_roomid | int | 房间号,目前疑似并未使用 |
data.medal_info.anchor_uname | string | 主播名称,目前疑似并未使用 |
data.medal_info.guard_level | int | 牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.medal_info.icon_id | int | 应该是某ID相关,待观测,目前全是0 |
data.medal_info.is_lighted | int | 牌子是否点亮 ,1=是,0=否 |
data.medal_info.medal_color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_level | int | 牌子等级 |
data.medal_info.medal_name | string | 牌子名称 |
data.medal_info.special | - | 估计是用来区分特殊牌子的,待观测 |
data.medal_info.target_id | int | 牌子所属主播uid |
data.name_color | string | 用户名颜色 |
data.num | int | 赠送数量 |
data.original_gift_name | string | 待观测 |
data.price | int | 礼物价格 |
data.rcost | int | 待观测 |
data.receive_user_info | array | 收礼人信息(主播) |
data.receive_user_info.uid | int | 主播uid |
data.receive_user_info.uname | string | 主播名称 |
data.receiver_uinfo | array | 收礼人信息(主播)(估计是新版本) |
data.receiver_uinfo.base | array | 收礼人(主播)基本信息 |
data.receiver_uinfo.base.face | string | 头像 |
data.receiver_uinfo.base.is_mystery | bool | 不确定含义,待观测 |
data.receiver_uinfo.base.name | string | 名称 |
data.receiver_uinfo.base.name_color | int | 待观测,估计是名字颜色十进制数字 |
data.receiver_uinfo.base.name_color_str | string | 待观测,估计是名字颜色十六进制代码 |
data.receiver_uinfo.base.official_info | array | 待观测,估计是官方相关 |
data.receiver_uinfo.base.official_info.desc | string | ?说明? |
data.receiver_uinfo.base.official_info.role | int | ?角色? |
data.receiver_uinfo.base.official_info.title | string | ?官方title? |
data.receiver_uinfo.base.official_info.type | int | ?类型 |
data.receiver_uinfo.base.origin_info | array | 待观测,目前看到的都是主播个人信息 |
data.receiver_uinfo.base.origin_info.face | string | 头像 |
data.receiver_uinfo.base.origin_info.name | string | 名称 |
data.receiver_uinfo.base.risk_ctrl_info | array | 待观测,目前看到的都是主播个人信息 |
data.receiver_uinfo.base.risk_ctrl_info.face | string | 头像 |
data.receiver_uinfo.base.risk_ctrl_info.name | string | 名称 |
data.receiver_uinfo.guard | - | 待观测,当前未观测到数据 |
data.receiver_uinfo.guard_leader | - | 待观测,当前未观测到数据 |
data.receiver_uinfo.medal | - | 待观测,当前未观测到数据 |
data.receiver_uinfo.title | - | 待观测,当前未观测到数据 |
data.receiver_uinfo.uhead_frame | - | 待观测,当前未观测到数据 |
data.receiver_uinfo.uid | int | uid |
data.receiver_uinfo.wealth | - | 待观测,当前未观测到数据 |
data.remain | int | 待观测 |
data.rnd | string | 待观测 |
data.send_master | string | 待观测 |
data.sender_uinfo | array | 送礼人信息 |
data.sender_uinfo.base | array | 送礼人(用户)基本信息 |
data.sender_uinfo.base.face | string | 头像 |
data.sender_uinfo.base.is_mystery | bool | 不确定含义,待观测 |
data.sender_uinfo.base.name | string | 名称 |
data.sender_uinfo.base.name_color | int | 待观测,估计是名字颜色十进制数字 |
data.sender_uinfo.base.name_color_str | string | 待观测,估计是名字颜色十六进制代码 |
data.sender_uinfo.base.official_info | array | 待观测,估计是官方相关 |
data.sender_uinfo.base.official_info.desc | string | ?说明? |
data.sender_uinfo.base.official_info.role | int | ?角色? |
data.sender_uinfo.base.official_info.title | string | ?官方title? |
data.sender_uinfo.base.official_info.type | int | ?类型 |
data.sender_uinfo.base.origin_info | array | 待观测,目前看到的都是送礼人个人信息 |
data.sender_uinfo.base.origin_info.face | string | 头像 |
data.sender_uinfo.base.origin_info.name | string | 名称 |
data.sender_uinfo.base.risk_ctrl_info | array | 待观测,目前看到的都是送礼人个人信息 |
data.sender_uinfo.base.risk_ctrl_info.face | string | 头像 |
data.sender_uinfo.base.risk_ctrl_info.name | string | 名称 |
data.sender_uinfo.guard | - | 待观测,目前未观察到数据 |
data.sender_uinfo.guard_leader | - | 待观测,目前未观察到数据 |
data.sender_uinfo.medal | array | 牌子信息 |
data.sender_uinfo.medal.color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.sender_uinfo.medal.color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.sender_uinfo.medal.color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.sender_uinfo.medal.color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.sender_uinfo.medal.guard_icon | string | 大航海图标 |
data.sender_uinfo.medal.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.sender_uinfo.medal.honor_icon | - | 待观测,目前无数据 |
data.sender_uinfo.medal.id | int | 待观测,目前都是0 |
data.sender_uinfo.medal.is_light | int | 牌子是否点亮 ,1=是,0=否 |
data.sender_uinfo.medal.level | int | 牌子等级 |
data.sender_uinfo.medal.name | string | 牌子名称 |
data.sender_uinfo.medal.ruid | int | 牌子所属主播uid |
data.sender_uinfo.medal.score | int | 某种评分?待观测 |
data.sender_uinfo.medal.typ | int | 待观测,目前都是0 |
data.sender_uinfo.medal.user_receive_count | int | 待观测,目前都是0 |
data.sender_uinfo.medal.v2_medal_color_border | string | v2版本牌子边框颜色 |
data.sender_uinfo.medal.v2_medal_color_end | string | v2版本牌子右侧颜色(渐变) |
data.sender_uinfo.medal.v2_medal_color_level | int | v2版本牌子等级颜色 |
data.sender_uinfo.medal.v2_medal_color_start | string | v2版本牌子左侧颜色(渐变) |
data.sender_uinfo.medal.v2_medal_color_text | string | v2版本牌子内容颜色 |
data.sender_uinfo.title | - | 待观测,目前无数据 |
data.sender_uinfo.uhead_frame | - | 待观测,目前无数据 |
data.sender_uinfo.uid | int | uid |
data.sender_uinfo.wealth | int | 待观测,目前都是0 |
data.silver | int | 待观测,目前都是0 |
data.super | int | 待观测,目前都是0 |
data.super_batch_gift_num | int | 待观测,与赠送数量相关 |
data.super_gift_num | int | 待观测,与赠送数量相关 |
data.svga_block | int | 待观测,目前都是0 |
data.switch | bool | 待观测,目前都是TRUE |
data.tag_image | - | 待观测,目前无数据 |
data.tid | string | 待观测 |
data.timestamp | int | 礼物赠送时间(秒级时间戳) |
data.top_list | - | 待观测,目前无数据 |
data.total_coin | int | 礼物总价,连击时累加 |
data.uid | int | 赠送人uid |
data.uname | string | 赠送人名称 |
data.wealth_level | int | 荣耀等级 |
msg_id | string | 待观测,感觉跟消息绑定了 |
p_is_ack | bool | 无数据或者TRUE,仍需观测 |
p_msg_type | int | 无数据或者1,仍需观测 |
send_time | int | 毫秒级时间戳,有时会没数据,待观测 |
点击查看数据示例
1 | { |
弹幕信息:DANMU_MSG
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 命令 |
dm_v2 | - | 待观察 |
info | array | 数据信息 |
info.0 | array | 弹幕信息 |
info.0.0 | int | 待观测,目前全是0 |
info.0.1 | int | 弹幕的 mode 字段 |
info.0.2 | int | 弹幕的 fontsize 字段 |
info.0.3 | int | 弹幕颜色(十进制数据,需要自己转十六进制颜色代码) |
info.0.4 | int | 发送时的 UNIX 毫秒时间戳 |
info.0.5 | int | 待观测 |
info.0.6 | int | 待观测,目前全是0 |
info.0.7 | string | 一个十六进制数,待观测,可能是颜色 |
info.0.8 | int | 待观测,目前全是0 |
info.0.9 | int | 待观测,目前全是0 |
info.0.10 | int | 待观测,疑似某种类型 |
info.0.11 | string | 待观测,通常为空字符串,info.0.10 == 5 返回一组十六进制颜色代码 |
info.0.12 | int | 消息中是否携带表情,1=是,0=否 |
info.0.13 | string或array | 表情信息,info.0.12 == 1 时为array,其余时候为字符串 |
info.0.13.bulge_display | int | 某种枚举,待观测 |
info.0.13.emoticon_unique | string | 表情符号,类似表情ID性质 |
info.0.13.height | int | 表情高度 |
info.0.13.in_player_area | int | 某种枚举,待观测 |
info.0.13.is_dynamic | int | 是否是动态表情,0=否,1=是 |
info.0.13.url | string | 表情URL图片地址 |
info.0.13.width | int | 表情宽度 |
info.0.14 | string | 字符串表示的 JSON Object,目前未观测到数据 |
info.0.15 | array | 弹幕补充信息,大部分数据都可以在里面获取 |
info.0.15.extra | string | 补充信息,json字符串,需要自行转换为对象 |
info.0.15.extra.send_from_me | bool | 是否是自己发送 |
info.0.15.extra.mode | int | 弹幕模式 (等同于info[0][1]) |
info.0.15.extra.color | int | 弹幕颜色 (等同于info[0][3]) |
info.0.15.extra.dm_type | int | 某种枚举,待观测 |
info.0.15.extra.font_size | int | 字体大小(等同于info[0][2]) |
info.0.15.extra.player_mode | int | 某种枚举,待观测 |
info.0.15.extra.show_player_type | int | 某种枚举,待观测 |
info.0.15.extra.content | string | 弹幕文本信息(等同于info[1]) |
info.0.15.extra.user_hash | string | 待观测 |
info.0.15.extra.emoticon_unique | string | 待观测 |
info.0.15.extra.bulge_display | int | 待观测 |
info.0.15.extra.recommend_score | int | 待观测 |
info.0.15.extra.main_state_dm_color | string | 待观测 |
info.0.15.extra.objective_state_dm_color | string | 待观测 |
info.0.15.extra.direction | int | 待观测 |
info.0.15.extra.pk_direction | int | 待观测 |
info.0.15.extra.quartet_direction | int | 待观测 |
info.0.15.extra.anniversary_crowd | int | 待观测 |
info.0.15.extra.yeah_space_type | string | 待观测 |
info.0.15.extra.yeah_space_url | string | 待观测 |
info.0.15.extra.jump_to_url | string | 待观测 |
info.0.15.extra.space_type | string | 待观测 |
info.0.15.extra.space_url | string | 待观测 |
info.0.15.extra.animation | array | 待观测,目前未观测到数据 |
info.0.15.extra.emots | array | 文本中使用过的表情信息,对象类型,key为表情,例如:[藏狐] |
info.0.15.extra.emots.[藏狐].count | int | 文本中出现的数量 |
info.0.15.extra.emots.[藏狐].descript | string | 描述 |
info.0.15.extra.emots.[藏狐].emoji | string | 描述 |
info.0.15.extra.emots.[藏狐].emoticon_id | int | 待观测 |
info.0.15.extra.emots.[藏狐].emoji | string | 待观测 |
info.0.15.extra.emots.[藏狐].height | int | 图片高度 |
info.0.15.extra.emots.[藏狐].url | string | 图片url |
info.0.15.extra.emots.[藏狐].width | int | 图片宽度 |
info.0.15.extra.is_audited | bool | 待观测 |
info.0.15.extra.id_str | string | 待观测 |
info.0.15.extra.icon | - | 待观测 |
info.0.15.extra.show_reply | bool | 是否允许回复 |
info.0.15.extra.reply_mid | int | 回复消息发送人uid |
info.0.15.extra.reply_uname | string | 回复消息发送人名称 |
info.0.15.extra.reply_uname_color | string | 回复消息发送人名字颜色 |
info.0.15.extra.reply_is_mystery | bool | 待观测 |
info.0.15.extra.reply_type_enum | int | 待观测,某种枚举 |
info.0.15.extra.hit_combo | int | 待观测,疑似是一些重内容连续发送的连击数 |
info.0.15.extra.esports_jump_url | string | 待观测 |
info.0.15.mode | int | 某种枚举,待观测 |
info.0.15.show_player_type | int | 某种枚举,待观测 |
info.0.15.user | array | 弹幕发送人信息 |
info.0.15.user.base | array | 发送人基本信息 |
info.0.15.user.base.face | string | 头像 |
info.0.15.user.base.is_mystery | bool | 不确定含义,待观测 |
info.0.15.user.base.name | string | 名称 |
info.0.15.user.base.name_color | int | 待观测,估计是名字颜色十进制数字 |
info.0.15.user.base.name_color_str | string | 待观测,估计是名字颜色十六进制代码 |
info.0.15.user.base.official_info | array | 待观测,估计是官方相关 |
info.0.15.user.base.official_info.desc | string | ?说明? |
info.0.15.user.base.official_info.role | int | ?角色? |
info.0.15.user.base.official_info.title | string | ?官方title? |
info.0.15.user.base.official_info.type | int | ?类型 |
info.0.15.user.base.origin_info | array | 待观测,目前看到的都是发送人个人信息 |
info.0.15.user.base.origin_info.face | string | 头像 |
info.0.15.user.base.origin_info.name | string | 名称 |
info.0.15.user.base.risk_ctrl_info | array | 待观测,目前看到的都是发送人个人信息 |
info.0.15.user.base.risk_ctrl_info.face | string | 头像 |
info.0.15.user.base.risk_ctrl_info.name | string | 名称 |
info.0.15.user.guard | - | 待观测,怀疑可能跟超管有关 |
info.0.15.user.guard_leader | array | 待观测,怀疑可能跟超管有关 |
info.0.15.user.guard_leader.is_guard_leader | bool | 待观测,怀疑可能跟超管有关 |
info.0.15.user.medal | array | 牌子信息 |
info.0.15.user.medal.color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
info.0.15.user.medal.color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
info.0.15.user.medal.color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
info.0.15.user.medal.color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
info.0.15.user.medal.guard_icon | string | 大航海图标 |
info.0.15.user.medal.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
info.0.15.user.medal.honor_icon | - | 待观测,目前无数据 |
info.0.15.user.medal.id | int | 待观测,目前都是0 |
info.0.15.user.medal.is_light | int | 牌子是否点亮 ,1=是,0=否 |
info.0.15.user.medal.level | int | 牌子等级 |
info.0.15.user.medal.name | string | 牌子名称 |
info.0.15.user.medal.ruid | int | 牌子所属主播uid |
info.0.15.user.medal.score | int | 某种评分?待观测 |
info.0.15.user.medal.typ | int | 待观测,目前都是0 |
info.0.15.user.medal.user_receive_count | int | 待观测,目前都是0 |
info.0.15.user.medal.v2_medal_color_border | string | v2版本牌子边框颜色 |
info.0.15.user.medal.v2_medal_color_end | string | v2版本牌子右侧颜色(渐变) |
info.0.15.user.medal.v2_medal_color_level | int | v2版本牌子等级颜色 |
info.0.15.user.medal.v2_medal_color_start | string | v2版本牌子左侧颜色(渐变) |
info.0.15.user.medal.v2_medal_color_text | string | v2版本牌子内容颜色 |
info.0.15.user.title | array | 待观测 |
info.0.15.user.title.title_css_id | string | 待观测 |
info.0.15.user.title.old_title_css_id | string | 待观测 |
info.0.15.user.uhead_frame | - | 待观测,目前无数据 |
info.0.15.user.uid | int | uid |
info.0.15.user.wealth | int | 待观测,目前都是0 |
info.0.16 | array | 疑似活动信息,待观测 |
info.0.16.activity_identity | string | 待观测 |
info.0.16.activity_source | int | 待观测 |
info.0.16.not_show | int | 待观测 |
info.0.17 | int | 待观测 |
info.1 | string | 弹幕信息 |
info.2 | array | 用户信息 |
info.2.0 | int | 用户uid |
info.2.1 | string | 用户名称 |
info.2.2 | int | 待观测 |
info.2.3 | int | 待观测 |
info.2.4 | int | 待观测 |
info.2.5 | int | 待观测 |
info.2.6 | int | 待观测 |
info.2.7 | string | 待观测,某种颜色信息,有时为空 |
info.3 | array | 牌子信息 |
info.3.0 | int | 牌子等级 |
info.3.1 | string | 牌子名称 |
info.3.2 | string | 牌子所属主播名称 |
info.3.3 | int | 牌子所属直播间房间号 |
info.3.4 | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
info.3.5 | string | 待观测,一直是空 |
info.3.6 | int | 待观测,一直是0 |
info.3.7 | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
info.3.8 | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
info.3.9 | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
info.3.10 | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
info.3.11 | int | 牌子是否点亮 ,1=是,0=否 |
info.3.12 | int | 牌子所属主播uid |
info.4 | array | 疑似什么等级信息 |
info.4.0 | int | 疑似什么等级 |
info.4.0 | int | 待观测,目前都是0 |
info.4.0 | int | 颜色(十进制数据,需要自己转十六进制颜色代码) |
info.4.0 | string | 待观测,疑似当前什么等级经验值 |
info.4.0 | int | 待观测,某种枚举 |
info.5 | array | 待观测 |
info.5.0 | string | 待观测,大部分为空串,少部分存在数据,不确定用途 |
info.5.1 | string | 待观测,大部分为空串,少部分存在数据,不确定用途 |
info.6 | int | 待观测,一直都是0 |
info.7 | int | 疑似大航海类型 |
info.8 | - | 待观测,一直都是空 |
info.9 | array | 发送时间戳 |
info.9.ct | string | 待观测,某十六进制数据 |
info.9.ts | int | 秒级时间戳,应该是发送时间 |
info.10 | int | 待观测,一直都是0 |
info.11 | int | 待观测,一直都是0 |
info.12 | - | 待观测,一直都是空 |
info.13 | - | 待观测,一直都是空 |
info.14 | int | 待观测,一直都是0 |
info.15 | int | 待观测 |
info.16 | array | 待观测,疑似某种等级信息 |
info.16.0 | int | 待观测,疑似某种等级信息 |
点击查看数据示例
1 | { |
开通大航海:GUARD_BUY
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.uid | int | 用户uid |
data.username | string | 用户名 |
data.guard_level | int | 开通类型,1=总督,2=提督,3=舰长 |
data.num | int | 开通数量 |
data.price | int | 价值(电池*100) |
data.gift_id | int | 礼物ID |
data.gift_name | int | 礼物名称 |
data.start_time | int | 上舰时间 |
data.end_time | int | 上舰时间 |
点击查看数据示例
1 | { |
千舰推送:GUARD_LOTTERY_START
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.add | array | 新增千舰主播uid数组 |
data.del | array | 退出千舰主播uid数组 |
点击查看数据示例
1 | { |
上舰抽奖消息推送:USER_TOAST_MSG
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.anchor_show | bool | 待观测,疑似是否在直播间展示,通常为true |
data.color | string | 某种颜色值 |
data.dmscore | int | 待观测 |
data.effect_id | int | 待观测 |
data.end_time | int | 结束时间(秒级时间戳),与开始时间相同 |
data.face_effect_id | int | 待观测 |
data.gift_id | int | 礼物ID |
data.group_name | int | 待观测 |
data.group_op_type | int | 待观测 |
data.group_role_name | int | 待观测 |
data.guard_level | int | 开通大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.is_group | int | 待观测 |
data.is_show | int | 待观测 |
data.num | int | 开通数量 |
data.op_type | int | 待观测 |
data.payflow_id | string | 待观测 |
data.price | int | 大航海价格(电池*100) |
data.role_name | string | 身份名称 |
data.room_effect_id | int | 待观测 |
data.room_gift_effect_id | int | 待观测 |
data.room_group_effect_id | int | 待观测 |
data.source | int | 待观测 |
data.start_time | int | 开始时间(秒级时间戳),与开始时间相同 |
data.svga_block | int | 待观测 |
data.target_guard_count | int | 待观测 |
data.toast_msg | string | 在直播间中发送的文字内容 |
data.uid | int | 开通用户uid |
data.unit | string | 开通单位 |
data.user_show | bool | 跟显示相关?待观测 |
data.username | string | 开通用户名称 |
点击查看数据示例
1 | { |
醒目留言:SUPER_CHAT_MESSAGE
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.background_bottom_color | string | 底部正文区域背景色 |
data.background_color | string | 底部正文文字颜色 |
data.background_color_end | string | 牌子右侧颜色(渐变) |
data.background_color_start | string | 牌子左侧颜色(渐变) |
data.background_icon | string | ?背景图标? |
data.background_image | string | ?背景图片? |
data.background_price_color | string | ?价格背景颜色? |
data.color_point | int | 待观测 |
data.dmscore | int | 待观测 |
data.end_time | int | 醒目留言结束时间(秒级时间戳) |
data.gift | array | 礼物信息 |
data.gift.gift_id | int | 礼物 ID |
data.gift.gift_name | string | 礼物名称 |
data.gift.num | int | 赠送数量 |
data.group_medal | array | 待观测,疑似套票 |
data.group_medal.is_lighted | int | 疑似套票是否点亮,1=是,0=否 |
data.group_medal.medal_id | int | 疑似套票id |
data.group_medal.name | string | 疑似套票名称 |
data.id | int | 疑似醒目留言ID |
data.is_mystery | bool | 待观测 |
data.is_ranked | int | 待观测 |
data.is_send_audit | int | 待观测 |
data.medal_info | array | 牌子信息 |
data.medal_info.anchor_roomid | int | 房间号 |
data.medal_info.anchor_uname | string | 主播名称 |
data.medal_info.guard_level | int | 牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.medal_info.icon_id | int | 应该是某ID相关,待观测,目前全是0 |
data.medal_info.is_lighted | int | 牌子是否点亮 ,1=是,0=否 |
data.medal_info.medal_color | string | 牌子颜色(十六进制颜色代码) |
data.medal_info.medal_color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.medal_info.medal_level | int | 牌子等级 |
data.medal_info.medal_name | string | 牌子名称 |
data.medal_info.special | - | 估计是用来区分特殊牌子的,待观测 |
data.medal_info.target_id | int | 牌子所属主播uid |
data.message | string | 醒目留言内容 |
data.message_font_color | string | 醒目留言颜色 |
data.message_trans | string | 日语信息 |
data.price | int | 单价?电池/10 |
data.rate | int | 待观测,会不会是用来计算价格的?比如 price * rate = 电池*100 |
data.start_time | int | 醒目留言开始时间(秒级时间戳) |
data.time | int | 醒目留言持续时间 |
data.token | string | 待观测 |
data.trans_mark | int | 待观测 |
data.ts | int | 醒目留言开始时间(秒级时间戳) |
data.uid | int | 发送用户uid |
data.uinfo | array | 发送用户信息 |
data.uinfo.base | array | 收礼人(主播)基本信息 |
data.uinfo.base.face | string | 头像 |
data.uinfo.base.is_mystery | bool | 不确定含义,待观测 |
data.uinfo.base.name | string | 名称 |
data.uinfo.base.name_color | int | 待观测,估计是名字颜色十进制数字 |
data.uinfo.base.name_color_str | string | 待观测,估计是名字颜色十六进制代码 |
data.uinfo.base.official_info | array | 待观测,估计是官方相关 |
data.uinfo.base.official_info.desc | string | ?说明? |
data.uinfo.base.official_info.role | int | ?角色? |
data.uinfo.base.official_info.title | string | ?官方title? |
data.uinfo.base.official_info.type | int | ?类型 |
data.uinfo.base.origin_info | array | 待观测,目前看到的都是主播个人信息 |
data.uinfo.base.origin_info.face | string | 头像 |
data.uinfo.base.origin_info.name | string | 名称 |
data.uinfo.base.risk_ctrl_info | array | 待观测,目前看到的都是主播个人信息 |
data.uinfo.base.risk_ctrl_info.face | string | 头像 |
data.uinfo.base.risk_ctrl_info.name | string | 名称 |
data.uinfo.guard | array | 大航海应该是,如果不是大航海就是null |
data.uinfo.guard.expired_str | string | 到期时间? |
data.uinfo.guard.level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.guard_leader | - | 待观测,当前未观测到数据 |
data.uinfo.medal | array | 牌子信息 |
data.uinfo.medal.color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.guard_icon | string | 大航海图标 |
data.uinfo.medal.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.medal.honor_icon | - | 待观测,目前无数据 |
data.uinfo.medal.id | int | 待观测,目前都是0 |
data.uinfo.medal.is_light | int | 牌子是否点亮 ,1=是,0=否 |
data.uinfo.medal.level | int | 牌子等级 |
data.uinfo.medal.name | string | 牌子名称 |
data.uinfo.medal.ruid | int | 牌子所属主播uid |
data.uinfo.medal.score | int | 某种评分?待观测 |
data.uinfo.medal.typ | int | 待观测,目前都是0 |
data.uinfo.medal.user_receive_count | int | 待观测,目前都是0 |
data.uinfo.medal.v2_medal_color_border | string | v2版本牌子边框颜色 |
data.uinfo.medal.v2_medal_color_end | string | v2版本牌子右侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_level | int | v2版本牌子等级颜色 |
data.uinfo.medal.v2_medal_color_start | string | v2版本牌子左侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_text | string | v2版本牌子内容颜色 |
data.uinfo.title | array | 待观测,当前未观测到数据 |
data.uinfo.title.old_title_css_id | string | 待观测,当前未观测到数据 |
data.uinfo.title.title_css_id | string | 待观测,当前未观测到数据 |
data.uinfo.uhead_frame | - | 待观测,当前未观测到数据 |
data.uinfo.uid | int | uid |
data.uinfo.wealth | - | 待观测,当前未观测到数据 |
data.user_info | array | 也是用户信息 |
data.user_info.face | string | 用户头像 |
data.user_info.face_frame | string | 用户头像框 |
data.user_info.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.user_info.is_main_vip | int | 待观测,看起来是是否是某种,1=是,0=否 |
data.user_info.is_svip | int | 待观测,看起来是是否是某种,1=是,0=否 |
data.user_info.is_vip | int | 待观测,看起来是是否是某种,1=是,0=否 |
data.user_info.level_color | string | 用户等级颜色 |
data.user_info.manager | int | 待观测 |
data.user_info.name_color | string | 用户名字颜色 |
data.user_info.title | string | 待观测,当前未观测到数据 |
data.user_info.uname | string | 用户名 |
data.user_info.user_level | int | 用户等级 |
点击查看数据示例
1 | { |
舰长进入直播间:ENTRY_EFFECT
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.basemap_url | string | 欢迎进入时的背景图 |
data.business | int | 待观测,像是区分了欢迎背景图的类型 |
data.copy_color | string | 文字颜色 |
data.copy_writing | string | 网页中出现的欢迎文案 |
data.copy_writing_v2 | string | 网页中出现的欢迎文案 |
data.effect_silent_time | int | 待观测 |
data.effective_time | int | 有效时间,单位应该是秒 |
data.effective_time_new | int | 待观测 |
data.face | string | 用户头像 |
data.full_cartoon_id | int | 待观测 |
data.highlight_color | string | 文字突出颜色 |
data.icon_list | array | 待观测 |
data.icon_list.0 | - | 待观测 |
data.id | int | id |
data.identities | int | 待观测 |
data.is_mystery | bool | 待观测 |
data.max_delay_time | int | 疑似最长停留时间? |
data.mobile_dynamic_url_webp | int | 待观测 |
data.mock_effect | int | 待观测 |
data.new_style | int | 待观测 |
data.priority | int | 优先级,应该是数字越大越靠前 |
data.priority_level | xxxxx | xxxxx |
data.privilege_type | int | 特权类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.show_avatar | int | 是否显示头像,0=否,1=是 |
data.target_id | int | 主播uid |
data.trigger_time | int | 待观测 |
data.uid | int | 用户uid |
data.uinfo | array | 用户信息 |
data.uinfo.base | array | 基本信息 |
data.uinfo.base.face | string | 头像 |
data.uinfo.base.is_mystery | bool | 待观测 |
data.uinfo.base.name | string | 名称 |
data.uinfo.base.name_color | int | 待观测 |
data.uinfo.base.name_color_str | string | 名字颜色? |
data.uinfo.base.official_info | - | 待观测 |
data.uinfo.base.origin_info | - | 待观测 |
data.uinfo.base.risk_ctrl_info | - | 待观测 |
data.uinfo.guard | array | 大航海信息 |
data.uinfo.guard.expired_str | string | 到期日期 |
data.uinfo.guard.level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.guard_leader | - | 待观测 |
data.uinfo.medal | array | 牌子信息 |
data.uinfo.medal.color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.guard_icon | string | 大航海图标URL |
data.uinfo.medal.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.medal.honor_icon | string | 待观测,目前无数据 |
data.uinfo.medal.id | int | 待观测 |
data.uinfo.medal.is_light | int | 牌子是否点亮 ,1=是,0=否 |
data.uinfo.medal.level | int | 牌子等级 |
data.uinfo.medal.name | int | 牌子名称 |
data.uinfo.medal.ruid | int | 主播uid |
data.uinfo.medal.score | int | 某种评分?待观测 |
data.uinfo.medal.typ | int | 待观测,目前都是0 |
data.uinfo.medal.user_receive_count | int | 待观测,目前都是0 |
data.uinfo.medal.v2_medal_color_border | string | v2版本牌子边框颜色 |
data.uinfo.medal.v2_medal_color_end | string | v2版本牌子右侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_level | string | v2版本牌子等级颜色 |
data.uinfo.medal.v2_medal_color_start | string | v2版本牌子左侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_text | string | v2版本牌子内容颜色 |
data.uinfo.title | - | 待观测 |
data.uinfo.uhead_frame | array | 待观测 |
data.uinfo.uhead_frame.frame_img | string | 待观测 |
data.uinfo.uhead_frame.id | int | 待观测 |
data.uinfo.uid | int | 用户uid |
data.uinfo.wealth | array | 荣耀等级 |
data.uinfo.wealth.dm_icon_key | int | 荣耀等级 |
data.uinfo.wealth.level | string | 待观测 |
data.wealth_style_info | array | 荣耀等级图片 |
data.wealth_style_info.url | string | 荣耀等级图片URL |
data.wealthy_info | array | 荣耀等级信息 |
data.wealthy_info.cur_score | int | 待观测 |
data.wealthy_info.dm_icon_key | int | 待观测 |
data.wealthy_info.level | int | 荣耀等级 |
data.wealthy_info.level_total_score | int | 待观测 |
data.wealthy_info.status | int | 待观测 |
data.wealthy_info.uid | int | 待观测 |
data.wealthy_info.upgrade_need_score | int | 待观测 |
data.web_basemap_url | string | web版欢迎进入时的背景图 |
data.web_close_time | int | 待观测 |
data.web_dynamic_url_apng | int | 待观测 |
data.web_dynamic_url_webp | int | 待观测 |
data.web_effect_close | int | 待观测 |
data.web_effective_time | int | web版有效时间,单位应该是秒 |
点击查看数据示例
1 | { |
直播间互动:INTERACT_WORD
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.contribution | array | ?贡献? |
data.contribution.grade | int | 待观测,看起来都是0 |
data.contribution_v2 | array | ?贡献V2版本? |
data.contribution_v2.grade | int | 待观测,看起来都是0 |
data.contribution_v2.rank_type | string | 待观测,看起来都是空字符串 |
data.contribution_v2.text | string | 待观测,看起来都是空字符串 |
data.core_user_type | int | 某种用户类型,等待观测 |
data.dmscore | int | 待观测 |
data.fans_medal | array | 牌子信息 |
data.fans_medal.anchor_roomid | int | 牌子主播房间号 |
data.fans_medal.guard_level | int | 大航海类型 |
data.fans_medal.icon_id | int | 待观测,某种ID |
data.fans_medal.is_lighted | int | 是否点亮,1=是,0=否 |
data.fans_medal.medal_color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.fans_medal.medal_color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.fans_medal.medal_color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.fans_medal.medal_color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.fans_medal.medal_level | int | 牌子等级 |
data.fans_medal.medal_name | string | 牌子名称 |
data.fans_medal.score | int | 待观测,某种分数 |
data.fans_medal.special | string | 待观测 |
data.fans_medal.target_id | int | 牌子主播id |
data.group_medal | array | 套票信息 |
data.group_medal.is_lighted | int | 是否点亮 |
data.group_medal.medal_id | int | 套票id |
data.group_medal.name | string | 套票名称 |
data.identities | array | 待观测,?某种身份? |
data.is_mystery | bool | 待观测,疑似是否是未登陆用户 |
data.is_spread | int | 是否是推广用户,1=是,0=否 |
data.msg_type | int | 消息类型,1=进入直播间,2=关注,3=分享直播间 |
data.privilege_type | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.relation_tail | array | 尾部说明 |
data.relation_tail.tail_guide_text | string | 指导文本 |
data.relation_tail.tail_icon | string | 指导图标 |
data.relation_tail.tail_type | int | 内容类型 |
data.roomid | int | 直播间房间号 |
data.score | int | 待观测 |
data.spread_desc | string | 推广来源 |
data.spread_info | string | 展示推广来源文字颜色 |
data.tail_icon | int | 待观测 |
data.tail_text | string | 待观测 |
data.timestamp | int | 互动时间(秒级时间戳) |
data.trigger_time | int | 待观测 |
data.uid | int | 用户uid |
data.uinfo | array | 用户信息 |
data.uinfo.base | array | 基本信息 |
data.uinfo.base.face | string | 用户头像 |
data.uinfo.base.is_mystery | bool | 待观测,疑似是否是未登陆用户 |
data.uinfo.base.name | string | 名称 |
data.uinfo.base.name_color | int | 名字颜色十进制数字 |
data.uinfo.base.name_color_str | string | 名字颜色十六进制代码 |
data.uinfo.base.official_info | array | 待观测,估计是官方相关 |
data.uinfo.base.official_info.desc | string | ?说明? |
data.uinfo.base.official_info.role | int | ?角色? |
data.uinfo.base.official_info.title | string | ?官方title? |
data.uinfo.base.official_info.type | int | ?类型? |
data.uinfo.base.origin_info | array | 待观测,目前看到的都是用户个人信息 |
data.uinfo.base.origin_info.face | string | 头像 |
data.uinfo.base.origin_info.name | string | 名称 |
data.uinfo.base.risk_ctrl_info | array | 待观测,目前看到的都是用户个人信息 |
data.uinfo.base.risk_ctrl_info.face | string | 头像 |
data.uinfo.base.risk_ctrl_info.name | string | 名称 |
data.uinfo.guard | array | 大航海信息 |
data.uinfo.guard.expired_str | string | 到期日期 |
data.uinfo.guard.level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.guard_leader | - | 待观测 |
data.uinfo.medal | array | 牌子信息 |
data.uinfo.medal.color | int | 牌子颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_border | int | 牌子边框颜色(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_end | int | 牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.color_start | int | 牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码) |
data.uinfo.medal.guard_icon | string | 大航海图标 |
data.uinfo.medal.guard_level | int | 大航海类型,0=普通用户,1=总督,2=提督,3=舰长 |
data.uinfo.medal.honor_icon | string | 待观测,目前无数据 |
data.uinfo.medal.id | int | 待观测,目前都是0 |
data.uinfo.medal.is_light | int | 牌子是否点亮,1=是,0=否 |
data.uinfo.medal.level | int | 牌子等级 |
data.uinfo.medal.name | string | 牌子名称 |
data.uinfo.medal.ruid | int | 牌子所属主播uid |
data.uinfo.medal.score | int | 某种评分?待观测 |
data.uinfo.medal.typ | int | 待观测,目前都是0 |
data.uinfo.medal.user_receive_count | int | 待观测,目前都是0 |
data.uinfo.medal.v2_medal_color_border | string | v2版本牌子边框颜色 |
data.uinfo.medal.v2_medal_color_end | string | v2版本牌子右侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_level | string | v2版本牌子等级颜色 |
data.uinfo.medal.v2_medal_color_start | string | v2版本牌子左侧颜色(渐变) |
data.uinfo.medal.v2_medal_color_text | string | v2版本牌子内容颜色 |
data.uinfo.title | - | 待观测 |
data.uinfo.uhead_frame | array | 头像框信息 |
data.uinfo.uhead_frame.frame_img | string | 头像框URL |
data.uinfo.uhead_frame.id | int | 头像框ID |
data.uinfo.uid | int | 用户uid |
data.uinfo.wealth | array | 待观测 |
data.uinfo.wealth.dm_icon_key | string | 待观测 |
data.uinfo.wealth.level | int | 待观测 |
data.uname | string | 用户名 |
data.uname_color | string | 用户名颜色 |
点击查看数据示例
1 | { |
PK即将开始:PK_BATTLE_PRE_NEW
点击查看字段说明
字段 | 字段类型 | 字段说明 |
---|---|---|
cmd | string | 固定命令 |
data | array | 数据信息 |
data.battle_sub_type | int | 待观测 |
data.battle_type | int | pk类型 |
data.end_win_task | - | 待观测 |
data.face | string | pk对象的头像 |
data.is_followed | int | 待观测 |
data.match_type | int | 待观测 |
data.pk_votes_name | string | pk得分名称 |
data.pre_timer | int | 前置定时器(10秒后开始pk) |
data.room_id | int | pk对象的房间号 |
data.season_id | int | 待观测 |
data.uid | int | pk对象的uid |
data.uname | string | pk对象的名称 |
pk_id | int | PKID |
pk_status | int | pk状态,代表值待观察 |
status_msg | string | pk状态文字说明 |
template_id | string | 待观测 |
timestamp | int | 时间 |
点击查看数据示例
1 | { |
有用的命令
几个比较实用的状态,持续更新中…
赠送礼物
点击查看应用场景
盲盒亏损
通过判断 data.blind_gift 的数据来取得,当 data.blind_gift 存在数据时,则可判断礼物是盲盒礼物
- data.blind_gift.original_gift_price:盲盒的价格(电池*100)
- data.blind_gift.gift_tip_price:爆出礼物的价格(电池*100)
- data.blind_gift.original_gift_id:盲盒的ID
- data.blind_gift.original_gift_name:盲盒的名称
通过盲盒ID或名称分类可以记录没种盲盒的盈亏
更进一步通过 data.uid 字段分类可记录每个用户&每种盲盒的盈亏
感谢礼物
接收到数据即为有人赠送了礼物
如果有需要,可以通过判断 data.coin_type == gold 或者 data.giftType != 5 来过滤免费礼物
礼物总价可以通过 data.price * data.num 获得
B站发言有频率限制,建议发送消息的逻辑单做一条队列,每3秒执行一条发送
进阶:建议将 感谢礼物事件 封装成队列,每当有需要感谢的礼物出现时加入队列,同一个用户赠送数据合并,当 消息发送队列 无更高优先级任务时取一条进行感谢,可以避免同一用户短时间大量赠送带来的问题
- data.uid:送礼人uid
- data.uname:送礼人名称
- data.coin_type:礼物是否是免费礼物
- data.giftId:礼物ID
- data.giftName:礼物名称
- data.price:礼物单价
- data.num:赠送数量
- receiver_uinfo.uid:收礼人uid(主播的id)
- sender_uinfo.medal.ruid:用户携带的牌子归属主播的uid(可以根据
receiver_uinfo.uid == sender_uinfo.medal.ruid
来确认送礼人携带的当前主播的牌子) - sender_uinfo.medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
- sender_uinfo.medal.level:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)
理论上可以连击信息来判断在连击结束之后所有的礼物一起感谢,但因工作比较忙还没有时间去观测对应的数据,后续补全
弹幕信息
点击查看应用场景
自动回复
通过检查弹幕信息,可以为关键词匹配自动回复
建议留足配置空间,以便拓展,例如:
- 多关键词配置,命中一个就触发或全部命中才触发
- 黑名单配置,某些用户的发言不触发自动回复
- 多禁词配置,与关键词相同,命中一个就不触发自动回复或全部命中就不触发自动回复
- 多回复项,可以配置多个回复项在触发自动回复时随机触发一条
- info.1:文本信息
- info.2.0:发送人uid
- info.2.1:发送人用户名
- info.3.3:牌子所属房间号(可以通过该字段与链接的房间号匹配判断携带的当前主播的牌子)
- info.3.10:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
- info.3.0:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)
弹幕信息事件可以做的事情非常多,类似抽奖一类的与弹幕互动的功能均可实现,拓展性极强
开通舰长
舰长进入直播间
点击查看应用场景
进房欢迎
对来到直播间的用户进行欢迎
建议在进房量少时再启用,或根据牌子进行过滤,否则大量进房信息积压会导致机器人欢迎不及时
- data.uinfo.medal.ruid:用户携带的牌子归属主播的uid(目前看来可以根据
data.target_id == data.uinfo.medal.ruid
来判断用户携带的是否是主播自己的牌子) - data.uinfo.medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
- data.uinfo.medal.level:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)
- data.uinfo.base.name:用户名
- data.uinfo.uid:用户ID
直播间互动
点击查看应用场景
进房欢迎 & 感谢关注 & 感谢分享
三个消息都由一个推送进行,通过 data.msg_type 进行区分
建议在进房量少时再启用,或根据牌子进行过滤,否则大量进房信息积压会导致机器人欢迎不及时
- data.fans_medal.anchor_roomid:牌子主播房间号(目前看来可以根据
data.fans_medal.anchor_roomid == 直播间房间号
来判断用户携带的是否是主播自己的牌子) - data.fans_medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
- data.uid:用户uid
- data.uname:用户名称
- data.msg_type:消息类型,1=进入直播间,2=关注,3=分享直播间
PK即将开始
- 感谢您的赞赏