Closed pskdje closed 1 month ago
ANCHOR_LOT_CHECKSTATUS
在运行时出现异常。
经分析,由于当前的数据包与之前相比,少了一些结构,而少了的结构对当前的处理来说是必须的,因此出现了异常。
异常信息:
Traceback (most recent call last):
File "/storage/emulated/0/bili/blm/bili_live_ws.py", line 432, in pacs
pac(pack,o)
File "/storage/emulated/0/bili/blm/bili_live_ws.py", line 389, in pac
l_anchor_lot_checkstatus(pack["data"])
File "/storage/emulated/0/bili/blm/cmd_handle.py", line 294, in l_anchor_lot_checkstatus
p("天选时刻","状态更新",f"id:{d['id']},status:{d['status']},uid:{d['uid']}",f"reject_danmu:{repr(d['reject_danmu'])} reject_reason:{repr(d['reject_reason'])}")
~^^^^^^^^^^^^^^^^
KeyError: 'reject_danmu'
数据包:
{
"cmd": "ANCHOR_LOT_CHECKSTATUS",
"data": {
"id": 6383396,
"status": 4,
"uid": 23730666
}
}
由于未登录时发送弹幕的用户UID被设置为0
,导致未获取到主播UID时使用默认值0
。
该问题主要出现在顶层执行环境不存在ls_uid
变量时。因此,从bili_live_msg.py开始运行不会出现问题,而从bili_live_ws.py开始运行会出现问题。
修改ls_uid
的默认值,建议负数。
不使用默认提供的color_cmd_handle.py
或者等待下一个提交。
DM_INTERACTION
出现新的需要处理的类型这个数据包新增了各类信息合并,数据结构无法兼容。
因此,获得点赞信息时会出现错误。
从原先的“弹幕合并”变为“交互合并”。
弹幕合并:
{
"cmd": "DM_INTERACTION",
"data": {
"data": "{\"combo\":[{\"id\":33547079461888,\"status\":4,\"content\":\"晚上好\",\"cnt\":43,\"guide\":\"他们都在说:\",\"left_duration\":12000,\"fade_duration\":10000,\"prefix_icon\":\"\"}],\"merge_interval\":1000,\"card_appear_interval\":1000,\"send_interval\":1000,\"reset_cnt\":-1,\"display_flag\":0}",
"dmscore": 36,
"id": 33547079461888,
"status": 4,
"type": 102
}
}
点赞合并:
{
"cmd": "DM_INTERACTION",
"data": {
"data": "{\"fade_duration\":10000,\"cnt\":6,\"card_appear_interval\":0,\"suffix_text\":\"人正在点赞\",\"reset_cnt\":1,\"display_flag\":1}",
"dmscore": 36,
"id": 33547152878080,
"status": 4,
"type": 106
}
}
分享合并:
{
"cmd": "DM_INTERACTION",
"data": {
"data": "{\"fade_duration\":10000,\"cnt\":1,\"card_appear_interval\":0,\"suffix_text\":\"人分享了直播间\",\"reset_cnt\":0,\"display_flag\":1}",
"dmscore": 36,
"id": 33550028033536,
"status": 4,
"type": 105
}
}
礼物合并:
{
"cmd": "DM_INTERACTION",
"data": {
"data": "{\"fade_duration\":10000,\"cnt\":4,\"card_appear_interval\":0,\"suffix_text\":\"人在投喂\",\"reset_cnt\":0,\"display_flag\":1,\"gift_id\":33988,\"gift_alert_message\":\"投喂一个%s支持主播\"}",
"dmscore": 36,
"id": 33550353114112,
"status": 5,
"type": 104
}
}
关注合并:
{
"cmd": "DM_INTERACTION",
"data": {
"data": "{\"fade_duration\":10000,\"cnt\":3,\"card_appear_interval\":0,\"suffix_text\":\"人关注了主播\",\"reset_cnt\":0,\"display_flag\":1}",
"dmscore": 36,
"id": 33576462619648,
"status": 4,
"type": 103
}
}
可能还有更多的信息被合并。
GUARD_HONOR_THOUSAND
这个包很早就存在了,但是一直在纠结一些细节。现在决定不纠结了。
基本结构:
{
"cmd":"GHT",
"data":{
"add":[],
"del":[]
}
}
这个数据包经常成对出现。add
完了就del
,或者反过来。
add
和del
数组内都是用户uid数字。
对部分uid对应的直播间进行访问,大航海数量几乎都在1k以上
{
"cmd": "GUARD_HONOR_THOUSAND",
"data": {
"add": [],
"del": [
1259447274,
480680646,
399815233,
226102317,
194484313,
13164144,
8739477,
3821157,
391445,
249118,
114866
]
}
}
{
"cmd": "GUARD_HONOR_THOUSAND",
"data": {
"add": [
1259447274,
480680646,
399815233,
226102317,
194484313,
13164144,
8739477,
3821157,
391445,
249118,
114866
],
"del": []
}
}
由于color_cmd_handle的代码是从bili_live_ws中直接复制过来,并进行了一些颜色上的修改。
在这过程中,没有审查好变量,导致变量名称重复。
受影响的cmd:
ROOM_BLOCK_MSG
CUT_OFF
ROOM_LOCK
ROOM_ADMINS
PK结束部分
SYS_MSG
潜在受影响的cmd:
LIVE
PREPARING
提交915edfc5661521c0141394104ff103f06608fa47存在的问题较多,统一收集在此。
目前代码量较多,计划移除一些在bili_live_ws.py里没有用处的cmd支持。相关支持将由cmd处理实现。