pskdje / pskdcerepo

方便使用
0 stars 0 forks source link

收集提交915edfc5661521c0141394104ff103f06608fa47所存在的问题 #5

Closed pskdje closed 1 month ago

pskdje commented 5 months ago

提交915edfc5661521c0141394104ff103f06608fa47存在的问题较多,统一收集在此。

目前代码量较多,计划移除一些在bili_live_ws.py里没有用处的cmd支持。相关支持将由cmd处理实现。

pskdje commented 5 months ago

cmd 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
    }
}
pskdje commented 5 months ago

cmd_handle.py 会在未登录时对所有用户添加主播标记

由于未登录时发送弹幕的用户UID被设置为0,导致未获取到主播UID时使用默认值0

该问题主要出现在顶层执行环境不存在ls_uid变量时。因此,从bili_live_msg.py开始运行不会出现问题,而从bili_live_ws.py开始运行会出现问题。

解决方案

或者等待下一个提交。

pskdje commented 4 months ago

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
    }
}

可能还有更多的信息被合并。

pskdje commented 4 months ago

决定支持 cmd GUARD_HONOR_THOUSAND

这个包很早就存在了,但是一直在纠结一些细节。现在决定不纠结了。

基本结构:

{
    "cmd":"GHT",
    "data":{
        "add":[],
        "del":[]
    }
}

这个数据包经常成对出现。add完了就del,或者反过来。

adddel数组内都是用户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": []
    }
}
pskdje commented 3 months ago

color_cmd_handle的部分cmd可能会报错

由于color_cmd_handle的代码是从bili_live_ws中直接复制过来,并进行了一些颜色上的修改。

在这过程中,没有审查好变量,导致变量名称重复。

受影响的cmd:

潜在受影响的cmd: