feat(api): add Bilibili WBI signature support and enhance user video API#505
feat(api): add Bilibili WBI signature support and enhance user video API#505AiraNadih wants to merge 10 commits into
Conversation
|
wiliwili/wiliwili/source/api/danmaku_live.cpp Lines 18 to 22 in 14583a4 你好,get danmuku info 的接口近期也增加了wbi签名认证,如果可以,请你添加一个 commit 修改上述的函数调用,更换为你新添加的函数 getResultWithWbiAsync,这正好也能解决 #517 。我刚测试更改后正常调用该接口 |
Originally posted by @AiraNadih in #351 在解决上述请求导致 403 错误之前,不建议合并此 PR。 |
|
@AiraNadih 接口报403是因为b站在搜索接口添加了jwt认证,这个参数去年b站添加过一次,我刚在浏览器查看,b站又将这个参数添加回来了: |
|
问题已解决。 接下来,可以考虑增加按特定方式排序用户投稿视频的功能,以及搜索功能。 更新: |
|
我已经尝试修正合集视频相关的解析逻辑,目前仍存在一些问题:
{
"comment": 48,
"typeid": 17,
"play": 17728,
"pic": "http://i0.hdslb.com/bfs/archive/266ce05dfa3174f6084c5673f11e41ce38ef7bbb.jpg",
"subtitle": "",
"description": "给初次玩这个游戏得萌新简绍下玩法(虽然我也才玩了10个小时哈哈哈),8人联机的4V4互拆局,各种武器陷阱欢乐无限,老六模拟器~",
"copyright": "1",
"title": "《家有恶邻》给萌新简单介绍下基本玩法和一些需要注意事项,附上刚打的两盘速拆局!(第二局的队友还是上一局被我速拆的对手)",
"review": 0,
"author": "手残党老杰",
"mid": 42891453,
"created": 1742635627,
"length": "19:44",
"video_review": 26,
"aid": 114205344734388,
"bvid": "BV1NHXsYnECT",
"hide_click": false,
"is_pay": 0,
"is_union_video": 0,
"is_steins_gate": 0,
"is_live_playback": 0,
"is_lesson_video": 0,
"is_lesson_finished": 0,
"lesson_update_info": "",
"jump_url": "",
"meta": {
"id": 5056071,
"title": "《家有恶邻》游戏实况,8人联机4V4拆房大乱斗!",
"cover": "https://archive.biliimg.com/bfs/archive/35b950bb131e365593186a5bd20c5dcd1e794cdc.jpg",
"mid": 42891453,
"intro": "记录些有趣片段~",
"sign_state": 0,
"attribute": 156,
"stat": {
"season_id": 5056071,
"view": 120522,
"danmaku": 107,
"reply": 275,
"favorite": 417,
"coin": 73,
"share": 425,
"like": 1436,
"mtime": 1749933371,
"vt": 0,
"vv": 0
},
"ep_count": 12,
"first_aid": 114205344734388,
"ptime": 1746342624,
"ep_num": 12
},
"is_avoided": 1,
"season_id": 5056071,
"attribute": 16768,
"is_charging_arc": false,
"elec_arc_type": 0,
"elec_arc_badge": "",
"vt": 0,
"enable_vt": 0,
"vt_display": "",
"playback_position": 0,
"is_self_view": false
}可以看出,19:44 这个值仅代表该合集视频中最新视频的时长,而非整个合集的总时长。 可以看出,标题为 更新 1: 更新 2: |
There was a problem hiding this comment.
您好,非常感谢为这个项目贡献这么多代码,前段时间我的时间不太富裕,这周末终于有时间继续维护这个项目了。
注意到 updateWbiKeys 是直接用 cpr::Get 请求的,这个不做成异步的话会卡住前端页面(和网络速度相关,在一些游戏掌机上会体现的比较明显),我准备今晚先把 http.hpp 和 wbi.hpp 更新了,到时候可能需要rebase一下这个pr了。
There was a problem hiding this comment.
好的,感谢您抽时间维护项目。
关于 rebase,似乎没必要吧?目前这个 PR 和 dev 分支没有差异。您可以直接基于这个 PR 进行修改,然后推送到这个分支,最后再合并就可以了。
There was a problem hiding this comment.
主要是这个pr还涉及到其他的内容了,up主上传的视频支持更多的排序方案这个想法我感觉很好,但是似乎还没完整搞完?我想还是一点点来更新避免一次改太多东西,测试的不充分。
所以我准备待会更改一下wbi相关的内容,改成异步的,这样后续直播还有其他的api就能先进行了。
wbi key我看写成一小时获取一次,其实另外一个简单的办法是只在程序启动时获取一次,不知道这个key更新的频率如何,这个我也搜索看看,如果您那边有研究的话也可以分享一下。
我设想一下up主上传的视频相关的功能,可以做成在程序目前的基础上单独搞个up主个人主页,在up主首页里就支持各种排序方案,您看如何?
up主个人主页这个问题一直都想做来着,一直也没找出大块的时间来实现,希望后面有时间搞好。
There was a problem hiding this comment.
关于 UP 主上传的视频部分,我目前尚未实现的功能包括添加排序交互以及上述提到的 合集视频可能不应显示时长,应该改为显示该合集中包含的视频数量。此外,时长信息有时也不准确,以下是一个示例数据 。
img_key、sub_key全站统一使用,观测知应为每日更替,使用时建议做好缓存和刷新处理。
有效期不清楚,蛮久没见到img_key和sub_key有变化。
从上述文档中看,wbi key 相关的 img_key 和 sub_key 似乎是每日更新,不过相关 issues 中又说不确定。我保守地将其设为每 1 小时更新一次了。或许改为每 6 小时更新一次会更为合理。
将其做成 UP 主个人主页是一个不错的想法,不过目前的 UP 主投稿视频列表部分是否打算保持现状?感觉有些重复,因为部分功能有所重叠。或者,可以考虑将其改为仅显示一页结果,例如只显示最近投稿的 20 个视频。
There was a problem hiding this comment.
将其做成 UP 主个人主页是一个不错的想法,不过目前的 UP 主投稿视频列表部分是否打算保持现状?感觉有些重复,因为部分功能有所重叠。或者,可以考虑将其改为仅显示一页结果,例如只显示最近投稿的 20 个视频。
我感觉目前的可以保留着呀,毕竟已经做了自动加载下一页,没必要删掉。删功能的一个麻烦的点在于可能有部分用户已经习惯现有的功能了,如果没有更好的替代品可能会让那部分用户不适应。
There was a problem hiding this comment.
我感觉目前的可以保留着呀,毕竟已经做了自动加载下一页,没必要删掉。删功能的一个麻烦的点在于可能有部分用户已经习惯现有的功能了,如果没有更好的替代品可能会让那部分用户不适应。
如果决定保留的话也没问题,但我添加的针对合集视频的处理逻辑是必要的,否则会导致很多不符合预期的情况发生。
There was a problem hiding this comment.
WBI相关的内容改好了,改成了异步调用的方式,接口还是和这个pr中的接口一样,应该直接删除http.hpp和wbi.hpp的修改就好。
ps 昨晚提交代码的时候忘记署名成你的提交了,这个我稍后去对应的代码页评论一下,昨晚忘记这事了抱歉
Use getResultWithWbiAsync instead of getResultAsync for APIs that require WBI signing




No description provided.