LittleNyima / honkai-starrail-toolkit

《崩坏:星穹铁道》工具箱,支持抽卡分析、帧率解锁等功能
https://pypi.org/project/starrail-toolkit/
GNU General Public License v3.0
125 stars 4 forks source link

导出的抽卡记录只有前五条 #2

Closed voidzhakul closed 1 year ago

voidzhakul commented 1 year ago

抽卡记录是通过参数end_idsize来检索,而不是通过page,你的请求只改动page是没用的。你用postman测一下大概就明白我说的什么意思了。

LittleNyima commented 1 year ago

感谢反馈,实际上在每次请求之后,end_id 是被替换为上次的最后一个 id 的,并不是只改动了 page。只有前五条的问题我这里暂时没有遇到(从仓库 README 里的截图也可以看出来,请求到的不只有前 5 条数据),可能你本地的版本是之前的版本,建议更新一下再试试。如果更新后还有问题,欢迎反馈给我,我再检查一下哪里有问题。

voidzhakul commented 1 year ago

多谢大佬,换了新版本后问题已解决,之前是直接pip从清华源装的,大概是清华源上的版本太老。 另外建议加个调整请求速度的选项,在服务器跑时上经常因为请求太快被ban掉。 image

LittleNyima commented 1 year ago

多谢大佬,换了新版本后问题已解决,之前是直接pip从清华源装的,大概是清华源上的版本太老。 另外建议加个调整请求速度的选项,在服务器跑时上经常因为请求太快被ban掉。

好的,下个版本会加上请求速度限制。

voidzhakul commented 1 year ago

不好意思,重新开一下这个issue 我知道问题出在哪了,和上面说的版本原因无关。

问题原因:部分链接携带begin_id参数

如图就是一个带有begin_id的请求 (出现原因大概是因为向上翻页 bp

存在begin_id参数时,返回此id上方size个抽卡数据 存在end_id参数时,返回此id下方size个抽卡数据 当两个参数同时存在时,返回数据是他们的交集

但是由于你end_id参数是直接拼在后面的,并且不对begin_id进行处理,所以当你end_id的值在begin_id下方时,返回了空数据,程序直接判断当前卡池抽卡记录已经被读完了,但实际并没有。

建议处理URL时判断下begin_id,处理一下。 大佬加油hhhh

LittleNyima commented 1 year ago

oh,我明白你的意思了。当时开发的时候只测试了用第一页的 URL 请求的情况,没注意到这个参数,我再多试试然后改一下。

LittleNyima commented 1 year ago

现在这个问题已经修复,当参数中存在 begin_id,在构造 api_template 的时候会把这个参数删掉。不过最新的版本没有推送到 pypi,你可以先从源代码安装来解决这个问题。