Bilibili评论区第三方抽奖工具(WEB)
本项目是上一年写的WPF应用BiliCommentLottery的升级版,尽管当时使用的SDK是DotNet Core 3.1,但由于WPF是Windows操作系统的专用UI框架,无法跨平台,给许多使用者带来些许不便,所以这次重构了老项目,将其由WPF应用改为WEB应用,后端使用DotNet 5.0开发WebAPI,前端界面使用LayUI搭建,这次在诸多平台上都可以使用了!(直接访问这个repo的github-pages就可以)
- PC端、移动端均可使用(B/S)
- 支持视频稿件、专栏稿件、动态的AV号/BV号/CV号/动态号
- 支持视频稿件、专栏稿件、动态的URL
- 支持移动端复制的分享短链接
- 根据开始时间、截止时间筛选评论列表
- 根据评论内容筛选评论列表
- 可根据UID对评论去重
- 可复制评论网址方便访问
- 展示目标作品、作者的各项数据
主要说明在开始页面输入的“ID/URL”的规则。
-
ID
目前支持视频稿件、专栏稿件、动态的ID
-
视频稿件的ID分为AV号(旧版,如
av10001
)和BV号(新版,如BV1bx411c7us
) -
专栏稿件的ID为CV号(如
cv7030871
) -
动态ID是跟随在动态链接之后的一串数字,如:
某个动态的URL为:
https://t.bilibili.com/495388103523775735
,那么动态ID就是495388103523775735
-
-
URL
目前支持视频稿件、专栏稿件、动态的网页URL和移动端分享URL
-
视频稿件的URL类型是:
https://www.bilibili.com/video/av10001
https://www.bilibili.com/video/BV1bx411c7us
-
专栏稿件的URL类型是:
https://www.bilibili.com/read/cv7030871
-
动态的URL类型是:
https://t.bilibili.com/495388103523775735
-
移动端分享URL的类型是:
https://b23.tv/Qzqqj9
-
负责获取评论列表的网络通讯逻辑由以前的“分散在每个客户端”变成现在的“集中在一个服务器”,并且从某个时间开始,Bilibili对评论接口的访问频率做出限制,所以一段时间内较高频率不间断地请求评论接口可能会使目前部署后端的服务器被短时间封禁。为了避免服务器老被官方封禁,我在网络请求上接入了国内代理池,由于代理池中可用代理数量有限且切换代理有一定的时间延迟,所以可能在使用过程中增加等待时间。
2021-06-19更新后,将原有的全量抽奖机制修改为非全量修改机制,抽奖的时间随设定中奖数改变,最坏情况下退化为全量抽奖。
2021-06-20更新后,移除原有的最大评论页数阈值,改为请求B站接口最大次数阈值,增加可用性。
2021-08-07更新后,评论数多(大于500)的稿件使用非全量抽奖,评论数少(不大于500)的稿件使用全量抽奖,尽可能避免重复评论导致的抽奖概率失衡。
- 后端WebAPI: DotNet 5.0
- 前端UI: LayUI 2.5.7
docker run -d -it --name {name} -p IP:Port:5000 -e corsTarget={Front-end Domain} injectrl/biliclonline:x.x.x
由nginx作为代理转发https请求至运行后端WebAPI-Server的Docker容器
基于DotNet 5.0的WebAPI-Server只响应http请求,所有https请求由nginx负责转发