lkeme / BiliHelper-personal

哔哩哔哩(Bilibili)助手 - PHP 版(Personal)
MIT License
992 stars 241 forks source link

[功能建议] 关于抽奖的功能建议 #187

Closed MoeHero closed 1 year ago

MoeHero commented 2 years ago

直播预约抽奖和动态抽奖其实都共用一个Id和接口 我简单看了一下 应该可以通过穷举Id的方式去实现 如果可以的话我可以提供相关Api或者我写一下然后提交Pr

lkeme commented 2 years ago

可以的,动态穷举注意一下频率,预约要写的话保留一下模式。

MoeHero commented 2 years ago

频率目前按照我的设想是每1-3小时最大400个 其实也就最多前12个小时会有问题 遍历到最新的Id之后就应该没几个了 预约保留模式是指? 我当前设想的是可以选择是否开启动态转发或者开启直播预约或者两个都开 然后之前的预约抽奖我觉得也可以保留

lkeme commented 2 years ago

如果同时要动预约抽奖的话,也保留 手动设置mids 模式,与穷举模式不冲突。
另外动态与预约有什么重叠的数据 可以使用缓存。

MoeHero commented 2 years ago

我目前设想是通过了一个简易算法得出最大值 我简单算了一下 目前Id是110000多 第二个抽奖的中奖时间是2018年5月,所以平均每天70个抽奖 然后再加一点80*自2018年5月1日以来经过的天数来得到目前可能的最大抽奖Id 如果这个Id也已经使用了 就计算出来的值+10000 直到找到未使用的id 然后再用这个值-10000去找到已经使用的id作为最小值 然后二分法查找精确的当前最后一次的Id 再用最后一次的Id-2400 作为基础的值开始遍历直到最新 每小时400的话 最坏的情况下需要12个小时才可以到最新的

MoeHero commented 2 years ago

如果同时要动预约抽奖的话,也保留 手动设置mids 模式,与穷举模式不冲突。 另外动态与预约有什么重叠的数据 可以使用缓存。

原本的预约不做修改,新添加一个模块去做这个。只是因为预约和动态都是公用Id和接口的 所以都可以一起实现

lkeme commented 2 years ago

这部分可以参考https://github.com/lkeme/BiliHelper-personal/blob/ff8d4594e65472e26c2b99bb541297479f02811b/plugin/LiveGoldBox/LiveGoldBox.php#L240 应该是写过这么个查找算法。

MoeHero commented 2 years ago

这样抽奖相比1.x.x的转发动态要好一些 现在我使用的话有些bug而且貌似无法自动取关和删除动态。使用官方抽奖就没问题了

MoeHero commented 2 years ago

这部分可以参考

https://github.com/lkeme/BiliHelper-personal/blob/ff8d4594e65472e26c2b99bb541297479f02811b/plugin/LiveGoldBox/LiveGoldBox.php#L240

应该是写过这么个查找算法。

是的 就是看了你这个代码我才想到可以这样子去查找

MoeHero commented 2 years ago

不知是否有其他联系方式,我晚上回家可以吧简易的分析结果放上来 另外有个问题1.x.x的小bug现在还修复吗

lkeme commented 2 years ago

首页Group,1.x.x影响运行的BUG有空会修,更新迭代不会。
当然你如果愿意维护的也可以,

MoeHero commented 2 years ago

那我晚点提个pr 一个bug修复+一个功能更新