File: README.md
BiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个贴心小助手,按照我们预先吩咐它的命令,在指定频率、时间范围内帮助我们完成计划的任务。
BiliTool is an automated task execution tool that acts as a helpful assistant, following pre-configured commands to complete planned tasks within specified frequencies and timeframes when we forget to do them.
主要功能如下:
- 扫码登录,自动更新cookie
- 每日获取满额升级经验(登录、投币、点赞、分享视频)(支持指定up主)
- 直播间挂机
- 每天漫画签到
- 每天直播签到
- 直播中心银瓜子兑换为硬币
- 每月领取大会员赠送的 5 张 B 币券和福利(忘记或者不领就浪费了哦)
- 每月领取大会员漫画福利
- 月底在 B 币券过期前进行充电(支持指定想要支持的up主,如果没有喜欢的up,也可以为自己充个电啊,做个用爱为自己发电的人~)
- 直播中心天选时刻自动参与抽奖
- 批量取关
- 大会员大积分任务
- 支持多账号
- 理论上支持所有远端的日志推送(默认支持推送到Telegram、企业微信、钉钉、PushPlus、Server酱、酷推,另外也支持自定义推送到任意api)
[目录]
Github 仓库地址:RayWangQvQ/BiliBiliToolPro
注意:
- 本应用仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!
- 所有代码都是开源且透明的,任何人均可查看,程序不会保存或滥用任何用户的个人信息
- 应用内几乎所有功能都开放了配置(如任务开关、日期、id等),详细信息可阅读配置文档
运行图示:
1. 如何使用
BiliTool 实现自动完成任务的原理,是通过调用一系列开放的api实现的。
要使用 BiliTool,很简单,按照下面教程部署完成,运行后扫码登录即可。
1.1. 部署 BiliTool
支持多种部署方式,以下选择任一适合自己的方式即可。
1.1.1. 方案一:免费在线容器
有很多平台会提供一定免费额度的在线容器,基于官方镜像,部署 BiliTool 很容易。
以下以 ClawCloud 为例,其他平台操作类似:
1.1.2. 方式二:青龙
1.1.3. 方式三:Docker 或 Podman 运行
1.1.4. 方式四:下载程序包到本地或服务器运行
1.1.5. 方式五:Chart部署
1.2. 消息推送(可选)
如果配置了推送,执行成功后,指定的接收端会收到推送消息,推送效果如下所示:
目前默认支持Telegram推送、PushPlus推送、企业微信应用推送、企业微信推送、钉钉推送、Microsoft Teams推送、Server酱推送和酷推QQ推送(以上顺序即为个人推荐的排序),如果需要推送到其他端,也可以配置为任意的可以接受消息的Api地址,关于如何配置推送请详见下面的个性化自定义配置章节。
推送配置见:confifuration
2. 功能任务说明
这里的任务是指一组功能的集合,是工具每次运行的最小单位。
任务列表如下:
| 任务名 | Code | 功能 | 推荐运行频率 |
|---|---|---|---|
| 扫码登录 | Login | 使用app扫码登录,用于第一次运行时初始化cookie,或cookie过期时的更新。不同平台会将cookie存储到不同地方 | 手动 |
| 每日任务 | Daily | 完成每日任务获取满额65点经验(登录、观看视频、分享视频、投币),快速升级Lv6 | 每天一次 |
| 天选时刻抽奖 | LiveLottery | 直播中心天选时刻抽奖,大部分抽奖都需要关注主播,介意的不要开启 | 每天0-4次 |
| 批量取关 | UnfollowBatched | 批量取关指定分组下的所有关注(主要用于清理天选抽奖而产生的关注) | 手动运行 |
| 大会员大积分 | VipBigPoint | 大会员大积分任务(签到、浏览、观看) | 每天一次,建议凌晨 |
| 直播间挂机 | LiveFansMedal | 直播间挂机 | 每天一次 |
| 漫画任务 | Manga | 漫画签到、阅读 | 每天一次 |
| 领取大会员漫画权益 | MangaPrivilege | 领取大会员的漫画权益 | 每天一次 |
| 银瓜子兑换硬币 | Silver2Coin | 使用银瓜子换取硬币 | 每天一次 |
| 免费B币券充电 | Charge | 大会员每31天可免费领取一张5B币券,可用于给除自己以外的UP充电 | 每天一次 |
| 领取大会员福利 | VipPrivilege | 领取大会员福利 | 每天一次 |
| 测试Cookie | Test | 测试Cookie是否正常 | 手动运行 |
3. 个性化自定义配置
4. 多账号支持
部署成功后,直接去运行扫码登录任务,扫码成功后,应用会自动更新或添加cookie。
青龙平台会添加环境变量里,Key 为 Ray_BiliBiliCookies__0、Ray_BiliBiliCookies__1、Ray_BiliBiliCookies__2...
其他平台默认会添加到名为cookies.json的账号配置文件中:
{
"BiliBiliCookies": [
"cookie1",
"cookie2",
"...",
],
}5. 常见问题
Issues(议题)板块可以用来提交Bug和建议;
Discussions(讨论)板块可以用来提问和讨论。
大部分问题其实都可以在文档、议题和讨论中找到答案。
所以如果你有疑问,
- 请先确认是否可以通过升级到最新版本解决
- 然后搜索文档(特别是配置说明文档和常见问题文档)、议题和讨论,查看是否已有其他人遇到相同问题、是否已有解决方案
如果确认还未解决,可以自己提交 Issue,或发布 Discussions 与大家一起探讨,我会尽快确认并解决。
(关于如何正确的提交Issue,请详见常见问题文档)。
6. 版本发布及更新
当前正处于稳定的迭代开发中,详细待更新和计划内容可参见 Projects 和 Issues 。
想要有重要更新时收到通知的话,可以把仓库右上角的Star按钮点亮。
7. 成为开源贡献成员
7.1. 贡献代码
如果你有好的想法,欢迎向仓库贡献你的代码,贡献步骤:
- 搜索查看 Issue,确定是否已有人提过同类问题
- 对于不确定的主题,为避免code结束后PR不被接受,可以先新建 Issue,描述问题或建议,讨论清楚后再动手编码
- 如果确认自己可以解决,请 Fork 仓库后,在develop 分支进行编码开发,完成后提交 PR 到 develop 分支
我会尽快进行代码审核,测试成功后会合并入 main 主分支,提前感谢您的贡献。
7.2. 贡献文档
文档部分由于我个人精力有限(写文档比写代码累多了),所以有些地方写的很简略,甚至有遗漏和错别字,不能贡献代码的朋友也欢迎来一起维护文档,欢迎 PR 来纠正我,一样都算是对开源做贡献了。
8. 捐赠支持
个人维护开源不易
如果觉得我写的程序对你小有帮助
或者,就是单纯的想集资给我买瓶霸王增发液
那么下面的赞赏码可以扫一扫啦
(赞赏时记得留下【昵称】和【留言】~ 另外我发现很多留言想要进群或者加好友的,一定一定要记得留下微信号哈,微信赞赏页面是看不到微信号的)
☟☟☟ 扫码自动赞赏 1 元:☟☟☟
项目中的优先支持的UP主的配置项,默认是作者的 UpId (只是作为了 JSON 配置文件的默认值,代码是干净的),需要更改的话,直接修改相应配置即可(secrets或环境变量等各种方式都行)。
当然,不改的话,也算是另一种捐赠支持作者的方式啦。
感谢支持~
9. 其他
API参考:
❤️Thanks to JetBrains for the free certificate support:
❤️Thanks to YxVM & NodeSeekDev for sponsoring the server for testing support:
❤️Thanks to DartNode for sponsoring the server for testing support:
❤️Thank you for your star to this project:
File: docker/README.md
Docker 使用说明
- 1. 前期工作
- 2. 方式一:一键脚本(推荐)
- 3. 方式二:手动 Docker Compose
- 4. 方式三:手动Docker指令
- 5. 登录
- 6. 添加 Bili 账号
- 7. 自己构建镜像(非必须)
- 8. 其他
1. 前期工作
apt-get update
apt-get install curl2. 方式一:一键脚本(推荐)
bash <(curl -sSL https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/install.sh)3. 方式二:手动 Docker Compose
3.1. 启动
# 创建目录
mkdir bili_tool_web && cd bili_tool_web
# 下载
wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/sample/docker-compose.yml
mkdir -p config
cd ./config
wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/sample/config/cookies.json
cd ..
# 启动
docker compose up -d
# 查看启动日志
docker logs -f bili_tool_web最终文件结构如下:
bili_tool_web
├── Logs
├── config
├──── cookies.json
└── docker-compose.yml3.2. 其他命令参考
# 启动 docker-compose
docker compose up -d
# 停止 docker-compose
docker compose stop
# 查看实时日志
docker logs -f bili_tool_web
# 进入容器
docker exec -it bili_tool_web /bin/bash
# 手动更新容器
docker compose pull && docker compose up -d4. 方式三:手动Docker指令
4.1. Docker启动
# 创建目录
mkdir bili_tool_web && cd bili_tool_web
# 生成并运行容器
docker pull ghcr.io/raywangqvq/bili_tool_web
docker run -d --name="bili_tool_web" \
-p 22330:8080 \
-e TZ=Asia/Shanghai \
-v ./Logs:/app/Logs \
-v ./config:/app/config \
ghcr.io/raywangqvq/bili_tool_web
# 查看实时日志
docker logs -f bili_tool_web其中,cookie需要替换为自己真实的cookie字符串
4.2. 其他指令参考
# 启动容器
docker start bili_tool_web
# 停止容器
docker stop bili_tool_web
# 重启容器
docker restart bili_tool_web
# 删除容器
docker rm bili_tool_web
# 进入容器
docker exec -it bili_tool_web /bin/bash4.3. 使用Watchtower更新容器
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once --cleanup \
bili_tool_web5. 登录
- 默认用户:
admin - 默认密码:
BiliTool@2233
首次登陆后,请到Admin页面修改密码。
6. 添加 Bili 账号
扫码进行账号添加。
7. 自己构建镜像(非必须)
目前我提供和维护的镜像:
- DockerHub:
[zai7lou/bili_tool_web](https://hub.docker.com/repository/docker/zai7lou/bili_tool_web) - GitHub:
[bili_tool_web](https://github.com/RayWangQvQ/BiliBiliToolPro/pkgs/container/bili_tool_web)
如果有需要(大部分都不需要),可以使用源码自己构建镜像,如下:
在有项目的Dockerfile的目录运行
docker build -t TARGET_NAME .
TARGET_NAME为镜像名称和版本,可以自己起个名字
8. 其他
代码编译和发布环境: mcr.microsoft.com/dotnet/sdk:8.0
代码运行环境: mcr.microsoft.com/dotnet/aspnet:8.0
如果下载github资源有问题,可以尝试添加加速器。
File: docs/claw-cloud.md
Claw免费容器部署
教程
点击 https://console.run.claw.cloud/signin 注册账号,选择使用 GitHub 账号注册并登录。
成功后,每个月会赠送 $5 额度,跑 BiliTool 绰绰有余。
左上角可以选择一个区域,然后点击 App Store。
搜索BiliTool并点击如下搜索结果。
点击Deploy App按钮一键部署。
等待半分钟左右,进入容器 Detail 页面,点击如下链接即可访问站点:
消息推送
建议使用环境变量配置:
配置值见:confifuration
费用
官方模板默认配置为 0.25C 512M,每天 $0.06,一个月 30 * 0.06 = $1.8,每月赠送是 $5,还很富裕。
其他
账号
- 默认用户名:admin
- 默认密码:BiliTool@2233
首次登陆后,请立即修改账号和密码!
速度
不同区域速度可能有差异,可自己切换尝试。
如果速度慢可能会导致页面短时无响应,可稍作等待,或手动刷新。
更新
右上角Update进行版本更新,如果更新后启动异常,请尝试Pause然后再Restart。
File: docs/configuration.md
配置说明
[目录]
- 1. 配置方式
- 2. 优先级
- 3. 详细配置说明
1. 配置方式
1.1. 方式一:修改配置文件
推荐使用Release包在本地运行的朋友使用,直接打开文件,将对应的配置值填入,保存即可生效。
默认有3个配置文件:appsettings.json、appsettings.Development.json、appsettings.Production.json,分别对应默认、开发与生产环境。
对于不是开发人员的大部分人来说,只需要关注appsettings.Production.json即可。
1.2. 方式二:命令启动时通过命令行参数配置
在使用命令行启动时,可使用-key=value的形式附加配置,所有可用的命令行参数均在 命令行参数映射表 中。
- 使用跨平台的依赖包
各个系统只要安装了net5环境,均可使用dotnet命令启动,命令样例:
dotnet Ray.BiliBiliTool.Console.dll -cookieStr=abc -numberOfCoins=5- Windows系统
使用自包含包(win-x86-x64.zip),命令样例:
Ray.BiliBiliTool.Console.exe -cookieStr=abc -numberOfCoins=5- Linux系统
使用自包含包(linux.zip),命令样例:
Ray.BiliBiliTool.Console -cookieStr=abc -numberOfCoins=5如映射文件所展示,支持使用命令行配置的配置项并不多,也不建议大量地使用该种方式进行配置。使用包运行的朋友,除了改配置文件和命令行参数配置外,还可以使用环境变量进行配置,这也是推荐的做法,如下。
1.3. 方式三:添加环境变量(推荐)
所有的配置项均可以通过添加环境变量来进行配置。如:
Linux下运行Web:
# 添加环境变量作为配置:
export RunTasks="Daily"
export BiliBiliCookies__1="abc"
export BiliBiliCookies__2="efg"
export DailyTaskConfig__NumberOfCoins="3"
# 开始运行程序:
dotnet BiliBiliTool.Web.dllLinux下运行Console:
# 添加环境变量作为配置:
export Ray_RunTasks="Daily"
export Ray_BiliBiliCookies__1="abc"
export Ray_BiliBiliCookies__2="efg"
export Ray_DailyTaskConfig__NumberOfCoins="3"
# 开始运行程序:
dotnet Ray.BiliBiliTool.Console.dll注意Console需要添加Ray_前缀,win系统使用set关键字代替export。
1.4. 方式四:托管在青龙面板上,使用面板的环境变量页或配置文件页进行配置
青龙面板配置,其本质还是通过环境变量进行配置,有如下两种方式。
- 环境变量页[推荐]
例如:
名称:Ray_BiliBiliCookies__1
值:abcde
- 配置文件页
例如,配置Cookie和推送:
export Ray_BiliBiliCookies__1="_uuid=abc..."
export Ray_Serilog__WriteTo__9__Args__token="abcde"配置文件页添加、修改配置,需要重启青龙容器使之生效,环境变量页则可以立即生效,所以推荐使用环境变量页配置。
2. 优先级
以上 4 种配置源,其优先级由低到高依次是:json文件 < 环境变量 < 命令行。
高优先级的配置会覆盖低优先级的配置。
3. 详细配置说明
Console项目(青龙)的环境变量需要添加Ray_前缀,其他不用。
比如,原始配置Key为BiliBiliCookies__1,Console则为Ray_BiliBiliCookies__1。
3.1. Cookie字符串
必填,数组,可以多个。
| TITLE | CONTENT | 示例 |
|---|---|---|
| 配置Key | BiliBiliCookies__1 |
|
| 值域 | 字符串,英文分号分隔,来自浏览器抓取 | export BiliBiliCookies__1=abc=123;def=456; |
| 默认值 | 空 |
| TITLE | CONTENT | 示例 |
|---|---|---|
| 配置Key | BiliBiliCookies__2 |
|
| 值域 | 字符串,英文分号分隔,来自浏览器抓取 | export BiliBiliCookies__1=abc=123;def=456; |
| 默认值 | 空 |
3.2. 安全相关的配置
3.2.1. 是否跳过执行任务
用于特殊情况下,通过配置灵活的开启和关闭整个应用。
配置为关闭后,程序会跳过所有任务,不会调用B站任何接口。
| TITLE | CONTENT | 示例 |
|---|---|---|
| 配置Key | Security__IsSkipDailyTask |
|
| 值域 | [true,false] | export Security__IsSkipDailyTask=true |
| 默认值 | false |
3.2.2. 随机睡眠的最大时长
用于设置程序启动后,随机睡眠时间的最大上限值,单位为分钟。
这样可以避免程序每天准点地在同一时间运行太像机器。
配置为0则不进行睡眠。
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__RandomSleepMaxMin |
| 值域 | 数字 |
| 默认值 | 20 |
3.2.3. 两次调用B站Api之间的间隔秒数
用于设置两次Api请求之间的最短时间间隔,避免程序在1到2秒内连续调用B站的Api过快。
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__IntervalSecondsBetweenRequestApi |
| 值域 | [0,+] |
| 默认值 | 20 |
3.2.4. 间隔秒数所针对的HttpMethod
间隔秒数所针对的HttpMethod类型,服务于上一个配置。服务器一般对GET请求不是很敏感,建议只针对POST请求做间隔就可以了。
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__IntervalMethodTypes |
| 值域 | [GET,POST],多个以英文逗号分隔 |
| 默认值 | POST |
3.2.5. 请求B站接口时头部传递的User-Agent
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__UserAgent |
| 值域 | 字符串,可以F12从自己的浏览器获取 |
| 默认值 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41 |
获取浏览器中自己的UA的方法见下图:
3.2.6. App请求B站接口时头部传递的User-Agent
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__UserAgentApp |
| 值域 | 字符串,可以F12从自己的浏览器获取 |
| 默认值 | Mozilla/5.0 (Linux; Android 12; SM-S9080 Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36 os/android model/SM-S9080 build/7760700 osVer/12 sdkInt/32 network/2 BiliApp/7760700 mobi_app/android channel/bili innerVer/7760710 c_locale/zh_CN s_locale/zh_CN disable_rcmd/0 7.76.0 os/android model/SM-S9080 mobi_app/android build/7760700 channel/bili innerVer/7760710 osVer/12 network/2 |
获取浏览器中自己的UA的方法见下图:
3.2.7. WebProxy(代理)
支持需要账户密码的代理。
| TITLE | CONTENT |
|---|---|
| 配置Key | Security__WebProxy |
| 值域 | 字符串,形如:user:password@host:port |
| 默认值 | 无 |
3.3. 每日任务相关
3.3.1. 是否开启观看视频任务
当该配置被设置为false时会导致大积分任务中的签到领额外10点经验的任务不能自动完成。
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__IsWatchVideo |
| 值域 | [true,false] |
| 默认值 | true |
3.3.2. 是否开启分享视频任务
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__IsShareVideo |
| 值域 | [true,false] |
| 默认值 | true |
3.3.3. 每日投币数量
每天投币的总目标数量,因为投币获取经验只与次数有关,所以程序每次投币只会投1个,也就是说该配置也表示每日投币次数。
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__NumberOfCoins |
| 值域 | [0,5],为安全考虑,程序内部还会做验证,最大不能超过5 |
| 默认值 | 5 |
3.3.4. 投币时是否同时点赞
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__SelectLike |
| 值域 | [true,false] |
| 默认值 | false |
3.3.5. 优先选择支持的up主Id集合
通过填入自己选择的up主ID,以后观看、分享和投币,都会优先从配置的up主下面挑选视频,如果没有找到,则会去你的特别关注列表中随机再获取,再然后会去普通关注列表中随机获取,最后会去排行榜中随机获取。
注意:该配置的默认值是作者的upId,如需换掉的话,直接更改即可。
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__SupportUpIds |
| 值域 | up主ID,多个用英文逗号分隔,默认是作者本人的UpId,如需删除可以配置为空格字符串或"-1",也可以配置为其他人的UpId |
| 默认值 | 作者的upId |
获取UP主的Id方法:打开bilibili,进入欲要选择的UP主主页,在url中和简介中,都可获得该UP主的Id,如下图所示:
3.3.6. 每月几号自动领取会员权益
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__DayOfReceiveVipPrivilege |
| 值域 | [-1,31],-1表示不指定,默认每月1号;0表示不领取 |
| 默认值 | 1 |
3.3.7. 每月几号进行直播中心银瓜子兑换硬币
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__DayOfExchangeSilver2Coin |
| 值域 | [-1,31],-1表示不指定,默认每月最后一天;-2表示每天;0表示不进行兑换 |
| 默认值 | -1 |
3.3.8. Lv6后开启硬币白嫖模式
| TITLE | CONTENT |
|---|---|
| 配置Key | DailyTaskConfig__SaveCoinsWhenLv6 |
| 值域 | [true,false],true表示开启,Lv6的账号不会投币 |
| 默认值 | false |
3.3.9. 是否开启专栏投币
| TITLE | CONTENT | |
|---|---|---|
| 配置Key | DailyTaskConfig__IsDonateCoinForArticle |
|
| 值域 | [true,false] | |
| 默认值 | false |
3.4. 天选时刻抽奖相关
3.4.1. 根据关键字排除奖品
| TITLE | CONTENT |
|---|---|
| 配置Key | LiveLotteryTaskConfig__ExcludeAwardNames |
| 值域 | 一串字符串,多个关键字使用|符号隔开 |
| 默认值 | 舰|船|航海|代金券|自拍|照|写真|图 |
3.4.2. 根据关键字指定奖品
| TITLE | CONTENT |
|---|---|
| 配置Key | LiveLotteryTaskConfig__IncludeAwardNames |
| 值域 | 一串字符串,多个关键字使用|符号隔开 |
| 默认值 | 空 |
3.4.3. 天选抽奖后是否自动分组关注的主播
| TITLE | CONTENT |
|---|---|
| 配置Key | LiveLotteryTaskConfig__AutoGroupFollowings |
| 值域 | [true,false] |
| 默认值 | true |
3.4.4. 天选筹抽奖主播Uid黑名单
不想参与抽奖的主播Upid集合,多个用英文逗号分隔,配置后不会参加黑名单中的主播的抽奖活动。默认值是目前已知的中奖后拒绝发奖的Up,后期还会继续补充,也反映反馈。
| TITLE | CONTENT |
|---|---|
| 配置Key | LiveLotteryTaskConfig__DenyUids |
| 值域 | 字符串,如"65566781,1277481241" |
| 默认值 | "65566781,1277481241,1643654862,603676925" |
3.5. 批量取关相关
3.5.1. 想要批量取关的分组名称
| TITLE | CONTENT |
|---|---|
| 配置Key | UnfollowBatchedTaskConfig__GroupName |
| 值域 | 字符串 |
| 默认值 | 天选时刻 |
3.5.2. 批量取关的人数
| TITLE | CONTENT |
|---|---|
| 配置Key | UnfollowBatchedTaskConfig__Count |
| 值域 | 数字,[-1,+],-1表示全部 |
| 默认值 | 5 |
3.5.3. 取关白名单
| TITLE | CONTENT |
|---|---|
| 配置Key | UnfollowBatchedTaskConfig__RetainUids |
| 值域 | 字符串,多个使用英文逗号分隔 |
| 默认值 | 108569350 |
3.6. 大积分相关
3.6.1. 自定义观看番剧
| TITLE | CONTENT |
|---|---|
| 配置Key | VipBigPointConfig__ViewBangumis |
| 值域 | 番剧的ssid(season_id) |
| 默认值 | 33378(名侦探柯南) |
3.7. 免费B币券充电
3.7.1. 充电对象
充电对象的upId,-1表示不指定,默认为自己充电;其他Id则会尝试为配置的UpId充电。
注意:之前可以不配置,默认为自己充电,但后来阿B改了规则,不再允许自己冲自己。。。
建议配置为自己小号(小号需要认证为作者并开启充电),或者也可以配置为 -1,以支持作者~
| TITLE | CONTENT |
|---|---|
| 配置Key | ChargeTaskConfig__AutoChargeUpId |
| 值域 | up的Id字符串 |
| 默认值 | 无 |
3.8. 推送相关
v1.0.x仅支持推送到Server酱,v1.1.x之后重新定义了推送地概念,将推送仅看作不同地日志输出端,与Console、File没有本质区别。
配置多个,多个端均会收到日志消息。推荐Telegram、企业微信、Server酱。
3.8.1. 是否开启每个账号单独推送消息
| TITLE | CONTENT |
|---|---|
| 配置Key | Notification__IsSingleAccountSingleNotify |
| 意义 | 开启后,每个账号会单独推送消息。否则多账号合并只推送一条消息 |
| 值域 | [true,false] |
| 默认值 | true |
3.8.2. Telegram机器人
3.8.2.1. botToken
点击 https://core.telegram.org/api#bot-api 查看如何创建机器人并获取到机器人的botToken。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__3__Args__botToken |
| 意义 | 用于将日志输出到Telegram机器人 |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.2.2. chatId
点击 https://api.telegram.org/bot{TOKEN}/getUpdates 获取到与机器人的chatId(需要用上面获取到的Token替换进链接里的{TOKEN}后访问)
P.S.访问链接需要能访问"外网",有vpn的挂vpn。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__3__Args__chatId |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 | 无 |
3.8.2.3. proxy
使用代理
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__3__Args__proxy |
| 值域 | 一串字符串,格式为user:password@host:port |
| 默认值 | 空 |
| 命令行示范 | 无 |
3.8.3. 企业微信机器人
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
3.8.3.1. webHookUrl
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__4__Args__webHookUrl |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 | 无 |
3.8.4. 钉钉机器人
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
机器人的安全策略,当前不支持加签,请使用关键字策略,推荐关键字:Ray 或 BiliBili
3.8.4.1. webHookUrl
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__5__Args__webHookUrl |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.5. Server酱
官网: http://sc.ftqq.com/9.version
3.8.5.1. TurboScKey(Server酱SCKEY)
获取方式请参考官网。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__6__Args__turboScKey |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.6. 酷推
3.8.6.1. sKey
该平台可能还在完善当中,对接时我发现其接口定义不规范,且机器人容易被封,所以不推荐使用,且不接受提酷推推送相关bug。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__7__Args__sKey |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.7. 推送到自定义Api
这是我简单封装了一个通用的推送接口,可以推送到任意的api地址,如果有自己的机器人或自己的用于接受日志的api,可以根据需要自定义配置。
3.8.7.1. api
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__8__Args__api |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.7.2. placeholder
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__8__Args__placeholder |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.7.3. bodyJsonTemplate
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__8__Args__bodyJsonTemplate |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.8. PushPlus[推荐]
官网: http://www.pushplus.plus/doc/
3.8.8.1. PushPlus的Token
获取方式请参考官网。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__9__Args__token |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.8.2. PushPlus的Topic
获取方式请参考官网。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__9__Args__topic |
| 值域 | 一串字符串 |
| 默认值 | 空 |
3.8.8.3. PushPlus的Channel
获取方式请参考官网。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__9__Args__channel |
| 值域 | 一串字符串,[wechat,webhook,cp,sms,mail] |
| 默认值 | 空 |
3.8.8.4. PushPlus的Webhook
获取方式请参考官网。
webhook编码(不是地址),在官网平台设定,仅在channel使用webhook渠道和CP渠道时需要填写
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__9__Args__webhook |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 |
3.8.9. Microsoft Teams
3.8.9.1. Microsoft Teams的Webhook
webhook的完整地址,在Teams的Channel中获取,详细获取方式请参考官网。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__10__Args__webhook |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 |
3.8.10. 企业微信应用推送
官网: https://developer.work.weixin.qq.com/tutorial/application-message
当corpId、agentId、secret均不为空时,自动开启推送,否则关闭。
toUser、toParty、toTag3个配置非必填,但不可同时为空,默认toUser为@all,向所有用户推送。
3.8.10.1. 企业微信应用推送的corpId
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__11__Args__corpId |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 |
3.8.10.2. 企业微信应用推送的agentId
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__11__Args__agentId |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 |
3.8.10.3. 企业微信应用推送的secret
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__11__Args__secret |
| 值域 | 一串字符串 |
| 默认值 | 空 |
| 命令行示范 |
3.9. 日志相关
3.9.1. 日志输出等级
为了美观, BiliBiliTool 默认只输出最低等级为 Information 的日志,保证只展示最精简的信息。
通过更改等级,可以指定日志输出的详细程度。
BiliBiliTool 使用 Serilog 作为日志组件,所以其值域与 Serilog 的日志等级选项相同,这里只建议在需要调试时改为Debug,应用会输出详细的调试日志信息,包括每次调用B站Api的请求参数与返回数据。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__0__Args__restrictedToMinimumLevel |
| 值域 | [Information,Debug] |
| 默认值 | 1 |
3.9.2. 日志输出样式
这里的日志样式指的是 Console 的等级,即 GitHub Actions 里和微信推送里看到的日志。
通过更改模板样式,可以指定日志输出的样式,比如不输出时间和等级,做到最精简的样式。
BiliBiliTool 使用 Serilog 作为日志组件,所以可以参考 Serilog 的日志样式模板。
| TITLE | CONTENT |
|---|---|
| 配置Key | Serilog__WriteTo__0__Args__outputTemplate |
| 值域 | 字符串 |
| 默认值 | [{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception} |
3.9.3. 定时任务相关
适用于 方式四:docker容器化运行(推荐),用于配置定时任务。
3.9.4. 定时任务
以下环境变量的值应为有效的 cron 表达式。
当被设置时,对应定时任务将开启。
| 环境变量 | 定时任务 |
|---|---|
DailyTaskConfig__Cron |
每日任务 |
LiveLotteryTaskConfig__Cron |
天选时刻抽奖 |
UnfollowBatchedTaskConfig__Cron |
批量取关 |
VipBigPointConfig__Cron |
大会员大积分 |
File: docs/donate-list.md
赞赏
| 赞赏人 | 时间 | 金额 | 方式 | 留言 | 回复 |
|---|---|---|---|---|---|
| Jonty | 2020-11-04 | ¥5 | 微信 | 不知可否加个联系方式,讨论一下b站小公举 | 你没有留微信号啊大兄弟 |
| 春歌 | 2020-11-06 | ¥5 | 微信 | 赞赏一下~ | |
| 雅南 | 2020-11-08 | ¥1 | 微信 | 赞赏一下~ | |
| RainMeter | 2020-11-09 | ¥1 | 微信 | 大佬牛逼 | |
| 1998 | 2020-11-10 | ¥1 | 微信 | 谢谢大佬,但是投币总是失败 | 有问题可以加群讨论 |
| Andy | 2020-11-10 | ¥1 | 微信 | 赞赏一下~ | |
| 不若艳阳 | 2020-11-11 | ¥10 | 微信 | 赞赏一下~ | |
| 努力努力再努力 | 2020-11-11 | ¥1 | 微信 | 赞赏一下~ | |
| Wandering Ghost | 2020-11-12 | ¥1 | 微信 | 好活,当赏 | |
| sadhu | 2020-11-12 | ¥1 | 支付宝 | 加油 | |
| 浮蘭·鳥ドス | 2020-11-12 | ¥1 | 微信 | 加油!在一个微信公众号看到这个 | |
| Ⅶ | 2020-11-12 | ¥1 | 微信 | 太棒啦!支持您! | |
| 舞飞扬 | 2020-11-12 | ¥1 | 支付宝 | 多谢bilibilitool | |
| 王雨桐 | 2020-11-13 | ¥1 | 微信 | 感谢ps借用作者项目完成我开源选修作业——分析一款开源软件 | |
| 郁宁 | 2020-11-13 | ¥5 | 微信 | Godd Job | |
| 半岛 | 2020-11-13 | ¥1 | 支付宝 | 赞赏一下~ | |
| Wenson | 2020-11-19 | ¥10 | 微信 | 搞的不错👍 | |
| xingxing | 2020-11-20 | ¥1 | 支付宝 | 这东西太好用了,点个 | |
| 2020-11-21 | ¥10 | 微信 | 单纯问下,有做成云函数的可行性吗 | 目前没了解过云函数相关,有懂的朋友欢迎PR~ | |
| Gaogao | 2020-11-21 | ¥1 | 支付宝 | 老哥加油加油^0^ | |
| 老狗 | 2020-11-23 | ¥10 | 微信 | 好活当赏吗 | |
| 2020-11-23 | ¥10 | 微信 | |||
| 还输给回忆不成 | 2020-11-23 | ¥1 | 微信 | ||
| Winfor | 2020-11-23 | ¥5 | 微信 | 感谢分享 | |
| 那个冰 | 2020-11-23 | ¥1 | 微信 | 如果一开始努力的方向就是错误的,那么只会越来越忙。感谢 | |
| Luv(sic) part 2 | 2020-11-24 | ¥1 | 微信 | 牛逼嗷,上班划水新技能get | |
| 刘小明 | 2020-11-24 | ¥3 | 微信 | 大佬喝冰阔落 | |
| 青翘 | 2020-11-25 | ¥1 | 支付宝 | 赞赏一下~ | |
| CT | 2020-11-25 | ¥1 | 微信 | 感谢 | |
| Panda | 2020-11-25 | ¥1 | 微信 | 很好用的工具 | |
| Che | 2020-11-25 | ¥1 | 微信 | 微信推送的配置方法能不能说的再详细一点,没用过有点懵 | |
| 张浩 | 2020-11-25 | ¥1 | 微信 | 集资给你买霸王 | 真棒 |
| 骷髅刀皇 | 2020-11-26 | ¥1 | 支付宝 | 外行人第一个再GitHub跑成功的源码 | |
| 2020-11-26 | ¥1 | 微信 | 项目有意思 | ||
| ohh | 2020-11-27 | ¥1 | 微信 | 集资买霸王 duang😏 | 😏 |
| 夏风 | 2020-11-28 | ¥1 | 支付宝 | 赞赏一下~ | |
| 征服神的眼睛 | 2020-11-27 | ¥1 | 微信 | 头发+1 | |
| 长空X | 2020-11-30 | ¥1 | 支付宝 | 加油!我是hjkl950217 | 贡献的代码很棒,欢迎加入 |
| 旧城空梦 | 2020-11-30 | ¥5 | 微信 | 拉我进下微信群,谢谢,我微信*** | 已拉 |
| Mr.华 | 2020-12-01 | ¥1 | 微信 | 白嫖党 今天给你投币来了 | |
| 暮雨 | 2020-12-01 | ¥1 | 微信 | 不多说,好用412还没有解决 | 大于等于1.0.14版本解决啦 |
| 闪电 | 2020-12-01 | ¥1 | 微信 | 欧拉拉 | |
| 山水之间 | 2020-12-01 | ¥1 | 微信 | 加油💪 | 💪 |
| 八八九九 | 2020-12-02 | ¥1 | 微信 | cool | |
| 。 | 2020-12-02 | ¥1 | 微信 | 支持 | |
| Carnina | 2020-12-06 | ¥5 | 微信 | 谢谢大大的bili工具 | |
| 大疼 | 2020-12-07 | ¥1 | 支付宝 | 教程很细致,谢谢 | |
| 2020-12-07 | ¥1 | 微信 | 谢谢大佬B站的项目 | ||
| Nirvana | 2020-12-08 | ¥1 | 微信 | 求进群我的微信*** | 已拉 |
| 2020-12-17 | ¥1 | 微信 | 微信昵称时空白的 | 是的 | |
| aiyΑ | 2020-12-23 | ¥1 | 微信 | ||
| 就这样被作业征服 | 2021-01-02 | ¥1 | 微信 | 太棒了,十分感谢 | |
| けっこ | 2021-01-03 | ¥1 | 微信 | bilibilitools加油! | 加油~ |
| Ruo | 2021-01-05 | ¥1 | 微信 | 加油加油 | 加油~ |
| 2021-01-06 | ¥1 | 微信 | |||
| 199863nothing | 2021-01-06 | ¥1 | 支付宝 | 等俺五级给你买霸王洗发水 | 棒 |
| 小伊 | 2021-01-06 | ¥1 | 支付宝 | 赞赏一下~ | |
| 多喝热水吧你 | 2021-01-07 | ¥10 | 微信 | 感谢作者,支持一下,太辛苦了 | 感谢 |
| YNight-FZQ | 2021-01-08 | ¥5 | 微信 | 2021,要加油哦!感谢作者分享 | 一起加油~ |
| 外比巴卜 | 2021-01-09 | ¥3 | 微信 | 加油^o^~,做的很棒 | 支持开源的你们更棒~ |
| 199863nothing | 2021-01-09 | ¥1 | 微信 | 求拉进群(ง •_•)ง | 你没有留微信号啊大兄弟 |
| 黑影 | 2021-01-10 | ¥5 | 微信 | Mreblack7感谢7楼大大可以加微信群嘛qwq | 你没有留微信号啊大兄弟 |
| 199863nothing | 2021-01-11 | ¥1 | 微信 | 微信号:***,大佬捞一捞我 | 已拉~ |
| . | 2021-01-12 | ¥5 | 微信 | 进群进群,冲冲冲 | 你没有留微信号啊大兄弟 |
个人维护开源不易
如果你觉得我写的东西对你确实有帮助
或者,你就是单纯的想集资给我买瓶霸王增发液
那么下面的赞赏码可以扫一扫啦
(赞赏时记得留下【昵称】和【留言】,上面这么多留言要想要进群或者加好友的,一定一定要记得留微信号哈,微信赞赏页面是看不到微信号的~)
微信扫码自动赞赏1元
支付宝扫码自动赞赏1元
File: docs/questions.md
常见问题
[目录]
- 1. 运行出现异常怎么办?
- 2. 如何提交issue(如何提交Bug或建议)
- 3. Actions定时任务没有每天自动运行
- 4. Actions修改定时任务的执行时间
- 5. 我 Fork 之后怎么同步原作者的更新内容?
- 6. 本地或服务器如何安装.net环境
- 7. 如何关停Actions运行
1. 运行出现异常怎么办?
第一步:根据异常信息,请先仔细阅读文档(特别是 常见问题文档 和 配置说明文档 ),查找相关信息
第二步:如果文档没有找到,请到 issues 下面查找相关问题,看是否有人其他人也遇到类似问题,并确认issue下是否已经有解决方案
第三步:如果仍没有解决,请将日志输出等级配置为Debug,该等级会输出详细的日志信息,修改后请再次运行,并查看详细的日志信息。如何配置请详见 配置说明文档
第四步:拿到详细日志后,如果自己无法根据日志信息确定问题,请将日志信息贴到讨论群里,群里会有大佬及时帮忙解答
第五步:如果根据详细日志信息可以确认是 Bug(缺陷),可以到 issues 下新建一条 issue 。如何新建issue请见下面的常见问题中的如何提交issue,如果是不符合要求的issue,会被关闭,严重的会被删除。
2. 如何提交issue(如何提交Bug或建议)
issues 被 GitHub 译为议题,用来为开源项目反馈 Bug、提出建议、讨论设计与需求等。
首先先提前感谢所有提交议题的朋友们,你们的反馈和建议会让开源程序优化的越来越好。
但为了使 issues 下面的议题便于维护,便于其他人搜索查找历史议题,避免淹没在一堆无用或重复的 issues 里,请大家自觉遵守下面的提交规范:
Ⅰ. 提交前请先确认自己的议题是否是新的议题(是否在文档中已有说明、是否已经有其他人提过类似的议题),重复议题会被标记为重复并关闭,严重的会被删除
Ⅱ. issue标题请填写完整,语义需清晰,以便在不点击进入详情时,仅根据标题就可以定位到该 issue 所反应的问题
Ⅲ. 如果是提交 bug ,请描述清楚问题,标明版本号、环境,并贴上详细日志信息(Debug等级的日志信息)。如果获取Debug等级的日志信息请参见配置说明文档,如果没有日志信息,或日志信息不是Debug等级的日志信息,或在没有日志的情况下描述也不清晰,导致无法复现或无法定位问题,该 issue 会被标记为不清晰的议题,且会被忽略或关闭,严重的会被删除。
3. Actions定时任务没有每天自动运行
Fork的仓库,actions默认是关闭的,需要对仓库进行1次操作才会触发webhook。
可以通过在页面上点击创建wiki来触发,也可以通过任意一次提交推送代码来触发。
4. Actions修改定时任务的执行时间
每日任务执行的时间,由.github/workflows/bilibili-daily-task.yml 中的cron表达式指定,默认为每日的0点整:
schedule:
- cron: '0 16 * * *'
# cron表达式,时区是UTC时间,比我们早8小时,如上所表示的是每天0点0分(24点整)若要修改为自己指定的时间执行,有如下两种方式:
4.1. 方法一:修改yaml文件中的cron表达式
我们可以直接修改上述该文件中的cron表达式,然后提交。
个人不建议这么做,因为以后更新要注意冲突与覆盖问题,建议使用下面的方法二。
4.2. 方法二:添加 GitHub Environments 并设置延时
v1.1.3及之后版本,支持通过添加GitHub Environments来设置延时运行,即在每日0点整触发 Actions 后,会再多执行一个延时操作,延时时长可由我们自己设置。
比如想设置为每天23点执行,只需要将这个延时时常设置为1380分钟(23个小时)即可。方法如下:
- Ⅰ.找到 Production Environments
运行完 bilibili-daily-task.yml 之后,在 Settings ——> Environments 中会自动多出一个名为 Production 的环境,如下图所示:
如果没有,也可以自己手动点击添加。
- Ⅱ.设置延时时长
勾选 Wait timer,并填写延时时长,单位为分钟,如下图所示:
下面给出一些常用的分钟数换算供参考:
| 时间 | 从0点开始计算的分钟数 |
|---|---|
| 6点整 | 360 |
| 8点整 | 480 |
| 9点整 | 540 |
| 12点整 | 720 |
| 14点整 | 840 |
| 18点整 | 1080 |
| 22点整 | 1320 |
| 23点整 | 1380 |
注意,Actions 目前本身是有20分钟左右的延时的,是 GitHub 暂未解决的缺陷,属于正常现象。
设置成功后,再次运行 Actions 会发现触发后会自动进入倒计时状态,等倒计时结束后才会真正运行之后的内容,如下图所示:
5. 我 Fork 之后怎么同步原作者的更新内容?
Fork 被 GitHub 译为复刻,相当于拷贝了一份源作者的代码到自己的 Repository (仓库)里,Fork 后,源作者更新自己的代码内容(比如发新的版本),一般情况下 Fork 的项目并不会自动更新源作者的修改。
BiliBiliTool内置了自动同步的 actions(即下面的方法二),默认情况下,Fork的仓库会在每周一会自动拉取更新源仓库内容,如想要更新请参考方法二。
这里共提供如下4种方法同步更新的方法:
5.1. 方法一:删掉自己的仓库再重新Fork
这是最最最保守的方法,删掉后重新Fork会导致之前配置过的GitHub Secrets和提交的代码更改全部丢掉,只能重新部署。
所以,请把该方法放到保底的位置,即如果你已经尝试了下面所有方法都还不能成功,再保底考虑使用该方法。
5.2. 方法二:使用提供的 Repo Sync 工作流脚本同步
BiliBiliTool提供了一个用于自动同步上游仓库的脚本 repo-sync.yml,执行后,会拉取源仓库最新内容直接覆盖掉自己的代码修改内容。该脚本默认开启,且每周一自动执行一次,如要关闭,可以将yml文件里的schedule使用#号注释掉。
脚本内部需要一个Token参数完成授权,我们要做的共两步:1.获取自己的 Token 并添加到 Secrets 中,2.运行脚本。
详细步骤如下:
Ⅰ. >>点击生成 Token ,将生成的 Token 复制下来。
Token 只显示一次,没复制只能重新生成。更多关于加密机密的说明可以查看 Github 官方文档:加密机密。
Ⅱ. 将上一步生成的 Token 添加到 Github Secrets 中。
| GitHub Secrets | CONTENT |
|---|---|
| Name | PAT |
| Value | 上一步生成的 Token |
Ⅲ. 手动触发 workflow 工作流进行代码同步。
该脚本是在v1.0.12添加的,如果你的版本低于该版本,没有该yaml文件,也可以直接在自己的 Fork 的仓库下面新建一个,然后将我的文件内容拷贝过去,提交文件,剩下的再继续按照上面流程走就可以了。
5.3. 方法三:手动PR同步
由于大量不懂PR的人乱操作,导致每次更新版本,源仓库都收到大量辣鸡无效的PR请求,现删除了方法三。
5.4. 方法四:使用插件 Pull App 同步
需要安装 Pull app 插件。
安装过程中会让你选择要选择那一种方式;
All repositories表示同步已经 frok 的仓库以及未来 fork 的仓库;
Only select repositories表示仅选择要自己需要同步的仓库,其他 fork 的仓库不会被同步。
根据自己需求选择,实在不知道怎么选择,就选 All repositories。
点击 install,完成安装。
Pull App 可以指定是否保留自己已经修改的内容,分为下面两种方式,如果你不知道他们的区别,就请选择方式一;如果你知道他们的区别,并且懂得如何解决 git 冲突,可根据需求自由选择任一方式:
5.4.1. Pull App 方式一: 源作者内容直接覆盖自己内容
该方式会将源作者的内容直接强制覆盖到自己的仓库中,也就是不会保留自己已经修改过的内容。
步骤如下:
Ⅰ. 确认已安装 Pull app 插件。
Ⅱ. 编辑 pull.yml 文件,将第 5 行内容修改为 mergeMethod: hardreset,然后保存提交。
(默认就是hardreset,如果未修改过,可以不用再次提交)
完成后,上游代码更新后 pull 插件会自动发起 PR 更新覆盖自己仓库的代码!
当然也可以立即手动触发同步:https://pull.git.ci/process/${owner}/${repo}
5.4.2. Pull App 方式二: 保留自己内容
该方式会在上游代码更新后,判断上游更新内容和自己分支代码是否存在冲突,如果有冲突则需要自己手动合并解决(也就是不会直接强制直接覆盖)。如果上游代码更新涉及 workflow 里的文件内容改动,这时也需要自己手动合并解决。
步骤如下:
Ⅰ. 确认已安装 Pull app 插件。
Ⅱ. 编辑 pull.yml 文件,将第 5 行内容修改为 mergeMethod: merge,然后保存提交。
完成后,上游代码更新后 pull 插件就会自动发起 PR 更新自己分支代码!只是如果存在冲突,需要自己手动去合并解决冲突。
当然也可以立即手动触发同步:https://pull.git.ci/process/${owner}/${repo}
6. 本地或服务器如何安装.net环境
请见官方文档
7. 如何关停Actions运行
推荐做法有两种:一是使用配置关停应用的每日任务,二是关停Actions。
当然,直接删库也是可以的,但是不推荐,除非是已确认以后都不会再使用的情况。因为删库会让已有配置都丢失,且使自动更新版本的Actions失效。
7.1. 方法一:使用配置关停每日任务
详情见 配置说明文档。
该方法是在应用层面关闭每日任务,即Actions还是会每天运行,只是进入程序后,应用不会去执行每日任务,即不会调用任何接口。如果配置了推送,每天仍能收到推送消息。
7.2. 方法二:关停Actions
点击Actions进入Workflows列表,点击名称为bilibili-daily-task的Workflow,在搜索框右侧有一个三个点的设置按钮,点击按钮后,在弹出的下拉列表里选中Disable workflow项即可,如下图所示:
该方法是直接关闭了Actions,即不会触发每天定时的Actions。
File: docs/runInLocal.md
下载程序包到本地或服务器运行
如果是 DotNet 开发者,直接 Clone 源码,然后 VS 打开解决方案,即可调式和运行。
跑什么任务,可以在Ray.BiliBiliTool.Console项目下的appsettings.json文件里的RunTasks指定。
对于不是开发者的朋友,可以通过下载 BiliBiliTool/release 到本地或任意服务器运行。
1. 任意系统,但已安装`.NET 8.0`
任何操作系统,不管是Win还是Linux还是mac,只要已安装了.NET 8.0 环境,均可通过下载net-dependent.zip运行。
下载解压后,进入应用目录,执行dotnet ./Ray.BiliBiliTool.Console.dll --runTasks=Login
会出现二维码,扫码登录后即可运行各个任务。
P.S.这里的运行环境指的是 .NET Runtime 8.0.0 ,安装方法可详见 常见问题 中的 本地或服务器如何安装.net环境
2. Win
请下载 win-x86-x64.zip,此文件已自包含(self-contained)运行环境。
解压后,在应用目录打开cmd或powershell,执行.\Ray.BiliBiliTool.Console.exe --runTasks=Login,扫码登录。
也可以直接双击Ray.BiliBiliTool.Console.exe来运行,建议使用windows自带的定时任务来执行它
3. Linux:
wget https://github.com/RayWangQvQ/BiliBiliToolPro/releases/download/0.3.1/bilibili-tool-pro-v0.3.1-linux-x64.zip
unzip bilibili-tool-pro-v0.3.1-linux-x64.zip
cd ./linux-x64/
./Ray.BiliBiliTool.Console --runTasks=Login4. macOS
请下载 osx-x64.zip,解压后在应用目录运行./Ray.BiliBiliTool.Console --runTasks=Login
5. 配置
最简单的方式是直接修改应用目录下的appsettings.json,详细方法可参考下面的配置说明章节。
File: gitHubActions/README.md
GitHub Actions 部署
介绍
GA 是微软(巨硬)收购 G 站之后新增的内置 CI/CD 方案,其核心就是一个可以运行脚本的小型服务器。
有了它,我们就可以实现每天线上自动运行我们的应用程序,通过配置还可以实现版本的自动同步更新。
步骤
复刻项目
首先点击本页面右上角的 fork 按钮,复刻本项目到自己的仓库
添加 Secrets 配置
进入自己 fork 的仓库,点击 Settings-> Secrets-> New Secrets, 添加 1 个 Secrets,其名称为COOKIESTR,值为刚才我们保存的 cookie 字符串。它们将作为配置项,在应用启动时传入程序。
测试运行 Actions
刚 Fork 完,所有 Actions 都是默认关闭的,都配置好后,需要手动点击 Enable 开启 Actions。开启后请手动执行一次工作流,验证是否可以正常工作,操作步骤如下图所示:
运行结束后,请查看运行日志:
其他
Actions 的执行策略默认是每天 0 点整触发运行,如要设置为指定的运行时间,请详见下面常见问题章节中的《Actions 如何修改定时任务的执行时间?》
建议每个人都设置下每日执行时间!不要使用默认时间!最好也不要设定在整点,错开峰值,避免 G 站的同一个IP在相同时间去请求 B 站接口,导致 IP 被禁!
应用运行后,会进行0到30分钟的随机睡眠,是为了使每天定时运行时间在范围内波动。刚开始如果需要频繁调试,建议使用empty-task.yml来调试,或者参考下面的个性化自定义配置章节,将睡眠配置为1分钟,避免每次测试都需要等待半小时
File: helm/README.md
BiliBili Tool
BiliBiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个贴心小助手,按照我们预先吩咐它的命令,在指定频率、时间范围内帮助我们完成计划的任务。
TL;DR
在集群中通过chart部署
$ git clone https://github.com/RayWangQvQ/BiliBiliToolPro.git
$ cd ${local_code_repo}/helm/bilibili-tool
[optional]$ vim values.yaml # provides your own settings like cookies
$ helm install <my_release_name> .如果没有在values.yaml中提供cookie,那么需要手动扫描日志中的二维码进行登录
$kubectl logs -f如果在values.yaml中提供了cookie,那么可以不扫描也可以扫描进行登录,上面的步骤可以暂时不执行
Introduction
这个chart通过Helm在Kubernetes集群上拉起一个BiliBiliToolProdeployment
Prerequisites
- Kubernetes
- Helm
或者
- Kind
- Helm
安装Chart
安装Chart并命名为 my-release:
$helm repo add my-repo <my_chart_repo>
$helm install my-release my-repo/bilibili-tool(:1.0.1)上述命令需要用户在values.yaml里提供cookie等必须信息
Parameters 部分列出了所有可供自定义的值
Tip:
helm list可以列出当前已经列出的所有的release
卸载 Chart
卸载 my-release deployment:
$helm delete my-release上述命令卸载掉所有的release相关资源
Parameters
| Name | Description | Value | Required |
|---|---|---|---|
replicaCount |
Deployment Relicas Count | 1 |
true |
namespace |
Deployment and ConfigMap deployed namespace | default |
true |
configmap.name |
ConfigMap name contains the entry files | entry |
true |
image.repository |
Global Dockevr registry | zai7lou/bilibili_tool_pro |
true |
image.tag |
Image Tag | 1.0.1 |
true |
image.pullPolicy |
Image Pull Policy | IfNotPresent |
true |
imagePullSecrets |
Image Pull Secrets | [] |
false |
nameOverride |
Deployment name in the Chart | "" |
false |
fullnameOverride |
Release name when set | "" |
false |
resources.limits |
The resources limits for the BiliBili Tool containers | {} |
true |
resources.limits.memory |
The limited memory for the BiliBili Tool containers | 180Mi |
true |
resources.limits.cpu |
The limited cpu for the BiliBili Tool containers | 100m |
true |
resources.requests |
The resources requests for the BiliBili Tool containers | {} |
true |
resources.requests.memory |
The requested memory for the BiliBili Tool containers | 180Mi |
true |
resources.requests.cpu |
The requested cpu for the BiliBili Tool containers | 100m |
true |
affinity |
Affinity for pod assignment | {} |
false |
nodeSelector |
Node labels for pod assignment | {} |
false |
tolerations |
Tolerations for pod assignment | [] |
false |
env |
Environment variables for the BiliBili Tool container, Ray_BiliBiliCookies__1 and Ray_DailyTaskConfig__Cron are required, others vars pls take a look at supported envvars | [] |
true |
volumes.log.enabled |
Enable persistent log volume for BiliBili Tool or not | "false" |
true |
volumes.log.path |
The host path mounted into pod | "/tmp/Logs" |
false |
volumes.log.name |
The volume name | "bili-tool-vol" |
false |
volumes.login.enabled |
Enable persistent log volume contains the entries for BiliBili Tool or not | "false" |
true |
volumes.login.name |
The volume name | "entry" |
false |
podAnnotations |
The annotations for the BiliBili Tool pod | {} |
false |
可以用指定helm install命令行参数 --set key=value[,key=value], 比如
$ helm install my-release \
--set \
relicas=1也可以通过指定一个YAML格式的values文件来配置以上参数,比如
$helm install my-release -f values.yaml my_chart_repo/bilibili-toolTip: 你可以使用默认的 values.yaml进行配置
当想更新一些变量时,可以通过指定参数或者直接修改YAML的values文件进行更新
$helm upgrade my-release my_chart_repo/bilibili-tool <-f values> or <--set-file ...>Upgrade
建议重新装release
[Optional]本地Cluster运行
通过安装kind工具在本地运行一个Kubernetes Cluster
go 1.17+ and Docker installed
$ go install sigs.k8s.io/[email protected] && kind create cluster <--config kind_config_file>
$ cat <kind_config_file>
$ kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
$ EOFat least one worker node otherwise you have to provides tolerations in the values.yaml to schedule on master node
File: krew/README.md
BiliBiliPro Kubectl Plugin
Prerequisites
- Kubernetes >= v1.23.0.
- go >= v1.18
- kubectl installed on your local machine, configured to an existing healthy Kubernetes cluster.
- krew plugin installed
Install Plugin
Command: cd ./krew && make deploy
The binary will be generated in cmd/ install it alonside the kubectl binary.
For example: the kubectl is installed under /usr/bin, then put the bilibilipro plugin under /usr/bin too.
Plugin Commands
Deployment && Update
Prerequsites: please make sure you have the right permission to at least manage namespaces/deployments
Command: kubectl bilipro init --config config.yaml
Creates Deployment with the needed environments.
Optional Options:
--image=zai7lou/bilibili_tool_pro:2.0.1--namespace=bilipro--image-pull-secret=<docker secrets>--loginto scan QR code to login
Required Options:
--config=<config.yaml>
The content of <config.yaml> is a yaml array, please refer to the example config yaml under the krew directory.
For example
- name: Ray_BiliBiliCookies__2
value: "cookie"
# DailyTrigger - required
- name: Ray_DailyTaskConfig__Cron
value: "11 11 * * *"Suggestions: Deploy this workload in namespace other than default or kube-* namespace, because the delete logic should be improved
Deletion
Command: kubectl bilipro delete [options]
Deletes Deployment.
v
Optional Options:
--namespace=<deploy-namespace>--name=<deploy-name>
Version
Command: kubectl bilipro version
Output the plugin version.
Package
Pls refer to installation, you can package your own krew plugin