xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.03k stars 146 forks source link

直播弹幕失效 #239

Closed xfangfang closed 8 months ago

xfangfang commented 8 months ago

@maye174 是这里对info的长度判断导致的问题,现在获取到的长度是18,是不是用个不等号来判断比较好呢?

比如 info.size() < 17

https://github.com/xfangfang/wiliwili/blob/52888bde1582393cef7496fb764d05a1c7fa316e/wiliwili/source/api/util/extract_messages.cpp#L105

还有关于直播的另外一个可能导致软件崩溃的bug:描述在:https://github.com/xfangfang/wiliwili/pull/232#issuecomment-1808463170

如果你对这两个修改没有意见的话,我可以直接修改一下,避免你再花时间了,如果你有自己的想法也可以等你有时间提交PR。

lanytcc commented 8 months ago

我刚去看了一下接收到的消息,跟原来一样还是17个,你更改完之后弹幕就正常了?

lanytcc commented 8 months ago

关于另一个更改#232,可以的,那样的话写在connect里面的异步就不必要了吧

xfangfang commented 8 months ago

关于另一个更改#232,可以的,那样的话写在connect里面的异步就不必要了吧

对的,就不必要了。

我刚去看了一下接收到的消息,跟原来一样还是17个,你更改完之后弹幕就正常了?

我这边刚才测试所有直播间都是18了,改了之后就能正常看到弹幕。

```json { "cmd":"DANMU_MSG", "info":[ [ 0, 1, 25, 5816798, 1699952917692, -1206702573, 0, "f737c758", 0, 0, 0, "", 0, "{}", "{}", { "mode":0, "show_player_type":0, "extra":"{\"send_from_me\":false,\"mode\":0,\"color\":5816798,\"dm_type\":0,\"font_size\":25,\"player_mode\":1,\"show_player_type\":0,\"content\":\"哈哈哈哈哈哈\",\"user_hash\":\"4147627864\",\"emoticon_unique\":\"\",\"bulge_display\":0,\"recommend_score\":6,\"main_state_dm_color\":\"\",\"objective_state_dm_color\":\"\",\"direction\":0,\"pk_direction\":0,\"quartet_direction\":0,\"anniversary_crowd\":0,\"yeah_space_type\":\"\",\"yeah_space_url\":\"\",\"jump_to_url\":\"\",\"space_type\":\"\",\"space_url\":\"\",\"animation\":{},\"emots\":null,\"is_audited\":false,\"id_str\":\"31d110ff3350c2e415f4574d5965533939\",\"icon\":null,\"show_reply\":true,\"reply_mid\":0,\"reply_uname\":\"\",\"reply_uname_color\":\"\",\"hit_combo\":0}" }, { "activity_identity":"", "activity_source":0, "not_show":0 }, 0 ], "哈哈哈哈哈哈", [ 39333916, "浅笑笙笙", 0, 0, 0, 10000, 1, "" ], [ 18, "狗雨", "狗狗狗雨", 5279, 13081892, "", 0, 13081892, 13081892, 13081892, 0, 1, 110631 ], [ 24, 0, 5805790, "\u003e50000", 0 ], [ "", "" ], 0, 0, null, { "ts":1699952917, "ct":"A4849832" }, 0, 0, null, null, 0, 63, [ 0 ], null ], "dm_v2":"" } ```
lanytcc commented 8 months ago

应该是对应的网页端改了,你在加入请求的那个json里面添加{"clientver", "2.6.3"}的话会给到旧版的弹幕消息

lanytcc commented 8 months ago

https://github.com/xfangfang/wiliwili/blob/52888bde1582393cef7496fb764d05a1c7fa316e/wiliwili/source/api/danmaku_live.cpp#L197 在这个地方

xfangfang commented 8 months ago

我测试了一下,没有效果,返回的还是18

lanytcc commented 8 months ago

我测试了一下,没有效果,返回的还是18

那你先改成18吧,使用<17的话感觉好一些,只要b站改的时候是向后兼容的。

xfangfang commented 8 months ago

我感觉b站做的话应该也是只会在后面加字段不会往前面加的,那我就先修改一下啦~

xfangfang commented 8 months ago

修改在这里:https://github.com/xfangfang/wiliwili/commit/b209f01a160cee82f939f80e6893d0e4285cb185

整体上是之前说的思路,没有其他的修改,不过将 get_live_danmaku_info 的实现还是依旧放在了 danmaku_live.cpp 里,方便后面维护。