- 配置文件页
例如,配置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. 酷推
https://cp.xuthus.cc/
##### 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
官网: https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook
##### 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`、`toTag`3个配置非必填,但不可同时为空,默认`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容器化运行(推荐)](../docker/README.md),用于配置定时任务。
#### 3.9.4. 定时任务
以下环境变量的值应为有效的 [cron 表达式](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm)。
当被设置时,对应定时任务将开启。
| 环境变量 | 定时任务 |
| --------------------------------- | ------ |
| `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. 运行出现异常怎么办?](#1-运行出现异常怎么办)
- [2. 如何提交issue(如何提交Bug或建议)](#2-如何提交issue如何提交bug或建议)
- [3. Actions定时任务没有每天自动运行](#3-actions定时任务没有每天自动运行)
- [4. Actions修改定时任务的执行时间](#4-actions修改定时任务的执行时间)
- [4.1. 方法一:修改yaml文件中的cron表达式](#41-方法一修改yaml文件中的cron表达式)
- [4.2. 方法二:添加 GitHub Environments 并设置延时](#42-方法二添加-github-environments-并设置延时)
- [5. 我 Fork 之后怎么同步原作者的更新内容?](#5-我-fork-之后怎么同步原作者的更新内容)
- [5.1. 方法一:删掉自己的仓库再重新Fork](#51-方法一删掉自己的仓库再重新fork)
- [5.2. 方法二:使用提供的 Repo Sync 工作流脚本同步](#52-方法二使用提供的-repo-sync-工作流脚本同步)
- [5.3. 方法三:手动PR同步](#53-方法三手动pr同步)
- [5.4. 方法四:使用插件 Pull App 同步](#54-方法四使用插件-pull-app-同步)
- [5.4.1. Pull App 方式一: 源作者内容直接覆盖自己内容](#541-pull-app-方式一-源作者内容直接覆盖自己内容)
- [5.4.2. Pull App 方式二: 保留自己内容](#542-pull-app-方式二-保留自己内容)
- [6. 本地或服务器如何安装.net环境](#6-本地或服务器如何安装net环境)
- [7. 如何关停Actions运行](#7-如何关停actions运行)
- [7.1. 方法一:使用配置关停每日任务](#71-方法一使用配置关停每日任务)
- [7.2. 方法二:关停Actions](#72-方法二关停actions)
## 1. 运行出现异常怎么办?
第一步:根据异常信息,请先仔细阅读文档(特别是 [常见问题文档](https://github.com/RayWangQvQ/BiliBiliTool.Docs/blob/main/questions.md) 和 [配置说明文档](https://github.com/RayWangQvQ/BiliBiliTool.Docs/blob/main/configuration.md) ),查找相关信息
第二步:如果文档没有找到,请到 [issues](https://github.com/RayWangQvQ/BiliBiliTool/issues) 下面查找相关问题,看是否有人其他人也遇到类似问题,并确认issue下是否已经有解决方案
第三步:如果仍没有解决,请将日志输出等级配置为Debug,该等级会输出详细的日志信息,修改后请再次运行,并查看详细的日志信息。如何配置请详见 [配置说明文档](https://github.com/RayWangQvQ/BiliBiliTool.Docs/blob/main/configuration.md)
第四步:拿到详细日志后,如果自己无法根据日志信息确定问题,请将日志信息贴到讨论群里,群里会有大佬及时帮忙解答
第五步:如果根据详细日志信息可以确认是 Bug(缺陷),可以到 [issues](https://github.com/RayWangQvQ/BiliBiliTool/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点整:
```yml
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](https://github.com/RayWangQvQ/BiliBiliTool/blob/main/.github/workflows/repo-sync.yml),执行后,会拉取源仓库最新内容直接覆盖掉自己的代码修改内容。该脚本默认开启,且每周一自动执行一次,如要关闭,可以将yml文件里的schedule使用#号注释掉。
脚本内部需要一个Token参数完成授权,我们要做的共两步:1.获取自己的 Token 并添加到 Secrets 中,2.运行脚本。
详细步骤如下:
Ⅰ. [>>点击生成 Token](https://github.com/settings/tokens/new?description=repo-sync&scopes=repo,workflow) ,将生成的 `Token` 复制下来。
Token 只显示一次,没复制只能重新生成。更多关于加密机密的说明可以查看 Github 官方文档:[加密机密](https://docs.github.com/cn/free-pro-team@latest/actions/reference/encrypted-secrets)。


Ⅱ. 将上一步生成的 `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](https://github.com/apps/pull) 插件。
安装过程中会让你选择要选择那一种方式;
`All repositories`表示同步已经 frok 的仓库以及未来 fork 的仓库;
`Only select repositories`表示仅选择要自己需要同步的仓库,其他 fork 的仓库不会被同步。
根据自己需求选择,实在不知道怎么选择,就选 `All repositories`。
点击 `install`,完成安装。

Pull App 可以指定是否保留自己已经修改的内容,分为下面两种方式,如果你不知道他们的区别,就请选择方式一;如果你知道他们的区别,并且懂得如何解决 git 冲突,可根据需求自由选择任一方式:
#### 5.4.1. Pull App 方式一: 源作者内容直接覆盖自己内容
> 该方式会将源作者的内容直接强制覆盖到自己的仓库中,也就是不会保留自己已经修改过的内容。
步骤如下:
Ⅰ. 确认已安装 [ Pull app](https://github.com/apps/pull) 插件。
Ⅱ. 编辑 [pull.yml](https://github.com/RayWangQvQ/BiliBiliTool/blob/main/.github/pull.yml) 文件,将第 5 行内容修改为 `mergeMethod: hardreset`,然后保存提交。
(默认就是hardreset,如果未修改过,可以不用再次提交)
完成后,上游代码更新后 pull 插件会自动发起 PR 更新**覆盖**自己仓库的代码!
当然也可以立即手动触发同步:`https://pull.git.ci/process/${owner}/${repo}`
#### 5.4.2. Pull App 方式二: 保留自己内容
> 该方式会在上游代码更新后,判断上游更新内容和自己分支代码是否存在冲突,如果有冲突则需要自己手动合并解决(也就是不会直接强制直接覆盖)。如果上游代码更新涉及 workflow 里的文件内容改动,这时也需要自己手动合并解决。
步骤如下:
Ⅰ. 确认已安装 [ Pull app](https://github.com/apps/pull) 插件。
Ⅱ. 编辑 [pull.yml](https://github.com/RayWangQvQ/BiliBiliTool/blob/main/.github/pull.yml) 文件,将第 5 行内容修改为 `mergeMethod: merge`,然后保存提交。
完成后,上游代码更新后 pull 插件就会自动发起 PR 更新自己分支代码!只是如果存在冲突,需要自己手动去合并解决冲突。
当然也可以立即手动触发同步:`https://pull.git.ci/process/${owner}/${repo}`
## 6. 本地或服务器如何安装.net环境
请见[官方文档](https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet-install-script)
## 7. 如何关停Actions运行
推荐做法有两种:一是使用配置关停应用的每日任务,二是关停Actions。
当然,直接删库也是可以的,但是不推荐,除非是已确认以后都不会再使用的情况。因为删库会让已有配置都丢失,且使自动更新版本的Actions失效。
### 7.1. 方法一:使用配置关停每日任务
详情见 [配置说明文档](https://github.com/RayWangQvQ/BiliBiliTool.Docs/blob/main/configuration.md#321-isskipdailytask%E6%98%AF%E5%90%A6%E8%B7%B3%E8%BF%87%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1)。
该方法是在应用层面关闭每日任务,即Actions还是会每天运行,只是进入程序后,应用不会去执行每日任务,即不会调用任何接口。如果配置了推送,每天仍能收到推送消息。
### 7.2. 方法二:关停Actions
点击Actions进入Workflows列表,点击名称为`bilibili-daily-task`的Workflow,在搜索框右侧有一个三个点的设置按钮,点击按钮后,在弹出的下拉列表里选中`Disable workflow`项即可,如下图所示:

该方法是直接关闭了Actions,即不会触发每天定时的Actions。
================================================
FILE: docs/runInLocal.md
================================================
# 下载程序包到本地或服务器运行
- [1. 任意系统,但已安装`.NET 8.0`](#1-任意系统但已安装net-80)
- [2. Win](#2-win)
- [3. Linux:](#3-linux)
- [4. macOS](#4-macos)
- [5. 配置](#5-配置)
如果是 DotNet 开发者,直接 Clone 源码,然后 VS 打开解决方案,即可调式和运行。
跑什么任务,可以在`Ray.BiliBiliTool.Console`项目下的`appsettings.json`文件里的`RunTasks`指定。
对于不是开发者的朋友,可以通过下载 [BiliBiliTool/release](https://github.com/RayWangQvQ/BiliBiliToolPro/releases) 到本地或任意服务器运行。
## 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` ,安装方法可详见 [常见问题](questions.md) 中的 **本地或服务器如何安装.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=Login
```
## 4. macOS
请下载 `osx-x64.zip`,解压后在应用目录运行`./Ray.BiliBiliTool.Console --runTasks=Login`
## 5. 配置
最简单的方式是直接修改应用目录下的`appsettings.json`,详细方法可参考下面的**配置说明**章节。
================================================
FILE: gitHubActions/README.md
================================================
# GitHub Actions 部署
- [介绍](#介绍)
- [步骤](#步骤)
- [复刻项目](#复刻项目)
- [添加 Secrets 配置](#添加-secrets-配置)
- [测试运行 Actions](#测试运行-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: gitHubActions/bak/bilibili-daily-task.yml
================================================
# 每日任务
name: bilibili-daily-task
on:
workflow_dispatch: # 手动触发
schedule: # 计划任务触发
- cron: '0 16 * * *'
# cron表达式,时区是UTC时间,比我们早8小时,如上所表示的是每天0点0分(16+8=24点整)
# 建议每个人通过设置名称为 Production 的 GitHub Environments 来设定为自己的目标运行时间(详细设置方法见文档说明)
env:
ASPNETCORE_ENVIRONMENT: ${{secrets.ENV}} # 运行环境
Ray_BiliBiliCookies__1: ${{secrets.COOKIESTR}}
Ray_BiliBiliCookies__2: ${{secrets.COOKIESTR2}}
Ray_BiliBiliCookies__3: ${{secrets.COOKIESTR3}}
# 推送:
Ray_Serilog__WriteTo__3__Args__botToken: ${{secrets.PUSHTGTOKEN}} # Telegram
Ray_Serilog__WriteTo__3__Args__chatId: ${{secrets.PUSHTGCHATID}}
Ray_Serilog__WriteTo__3__Args__restrictedToMinimumLevel: ${{secrets.PUSHTGLEVEL}}
Ray_Serilog__WriteTo__4__Args__webHookUrl: ${{secrets.PUSHWEIXINURL}} # 企业微信
Ray_Serilog__WriteTo__4__Args__restrictedToMinimumLevel: ${{secrets.PUSHWEIXINLEVEL}}
Ray_Serilog__WriteTo__5__Args__webHookUrl: ${{secrets.PUSHDINGURL}} # 钉钉
Ray_Serilog__WriteTo__5__Args__restrictedToMinimumLevel: ${{secrets.PUSHDINGLEVEL}}
Ray_Serilog__WriteTo__6__Args__scKey: ${{secrets.PUSHSCKEY}} # Server酱
Ray_Serilog__WriteTo__6__Args__turboScKey: ${{secrets.PUSHSERVERTSCKEY}}
Ray_Serilog__WriteTo__6__Args__restrictedToMinimumLevel: ${{secrets.PUSHSERVERLEVEL}}
Ray_Serilog__WriteTo__7__Args__sKey: ${{secrets.PUSHCOOLSKEY}} # 酷推
Ray_Serilog__WriteTo__7__Args__restrictedToMinimumLevel: ${{secrets.PUSHCOOLLEVEL}}
Ray_Serilog__WriteTo__8__Args__api: ${{secrets.PUSHOTHERAPI}} # 自定义api
Ray_Serilog__WriteTo__8__Args__placeholder: ${{secrets.PUSHOTHERPLACEHOLDER}}
Ray_Serilog__WriteTo__8__Args__bodyJsonTemplate: ${{secrets.PUSHOTHERBODYJSONTEMPLATE}}
Ray_Serilog__WriteTo__8__Args__restrictedToMinimumLevel: ${{secrets.PUSHOTHERLEVEL}}
Ray_Serilog__WriteTo__9__Args__token: ${{secrets.PUSHPLUSTOKEN}} # PushPlus
Ray_Serilog__WriteTo__9__Args__topic: ${{secrets.PUSHPLUSTOPIC}}
Ray_Serilog__WriteTo__9__Args__channel: ${{secrets.PUSHPLUSCHANNEL}}
Ray_Serilog__WriteTo__9__Args__webhook: ${{secrets.PUSHPLUSWEBHOOK}}
Ray_Serilog__WriteTo__9__Args__restrictedToMinimumLevel: ${{secrets.PUSHPLUSLEVEL}}
# 安全相关:
Ray_Security__IsSkipDailyTask: ${{secrets.ISSKIPDAILYTASK}}
Ray_Security__IntervalSecondsBetweenRequestApi: ${{secrets.INTERVALSECONDSBETWEENREQUESTAPI}}
Ray_Security__IntervalMethodTypes: ${{secrets.INTERVALMETHODTYPES}}
Ray_Security__UserAgent: ${{secrets.USERAGENT}}
Ray_Security__WebProxy: ${{secrets.WEBPROXY}}
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# 每日任务:
Ray_DailyTaskConfig__NumberOfCoins: ${{secrets.NUMBEROFCOINS}}
Ray_DailyTaskConfig__SaveCoinsWhenLv6: ${{secrets.SAVECOINSWHENLV6}}
Ray_DailyTaskConfig__SelectLike: ${{secrets.SELECTLIKE}}
Ray_DailyTaskConfig__SupportUpIds: ${{secrets.SUPPORTUPIDS}}
Ray_DailyTaskConfig__DayOfAutoCharge: ${{secrets.DAYOFAUTOCHARGE}}
Ray_DailyTaskConfig__AutoChargeUpId: ${{secrets.AUTOCHARGEUPID}}
Ray_DailyTaskConfig__ChargeComment: ${{secrets.CHARGECOMMENT}}
Ray_DailyTaskConfig__DayOfReceiveVipPrivilege: ${{secrets.DAYOFRECEIVEVIPPRIVILEGE}}
Ray_DailyTaskConfig__DayOfExchangeSilver2Coin: ${{secrets.DAYOFEXCHANGESILVER2COIN}}
Ray_DailyTaskConfig__DevicePlatform: ${{secrets.DEVICEPLATFORM}}
Ray_Serilog__WriteTo__0__Args__restrictedToMinimumLevel: ${{secrets.CONSOLELOGLEVEL}}
Ray_Serilog__WriteTo__0__Args__outputTemplate: ${{secrets.CONSOLELOGTEMPLATE}}
jobs:
pre-check:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.check.outputs.result }} # 不能直接传递secrets的值,否则会被skip,需要转一下
steps:
- id: check
if: env.IsOpenDailyTask=='true'
run: |
echo "::set-output name=result::开启"
run-daily-task:
runs-on: ubuntu-latest
environment: Production
needs: pre-check
if: needs.pre-check.outputs.result=='开启'
steps:
# 设置服务器时区为东八区
- name: Set time zone
run: sudo timedatectl set-timezone 'Asia/Shanghai'
# 检出
- name: Checkout
uses: actions/checkout@v2
# .Net 环境
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
# 测试运行
- name: Test APP
run: |
cd ./src/Ray.BiliBiliTool.Console
dotnet run --runTasks=Daily
================================================
FILE: gitHubActions/bak/empty-task.yml
================================================
name: empty-task
on:
workflow_dispatch: # 手动触发
inputs:
tasks:
description: '任务Code'
required: true
env:
ASPNETCORE_ENVIRONMENT: ${{secrets.ENV}} # 运行环境
Ray_CloseConsoleWhenEnd: 1
Ray_BiliBiliCookies__1: ${{secrets.COOKIESTR}}
Ray_BiliBiliCookies__2: ${{secrets.COOKIESTR2}}
Ray_BiliBiliCookies__3: ${{secrets.COOKIESTR3}}
# 推送:
Ray_Serilog__WriteTo__3__Args__botToken: ${{secrets.PUSHTGTOKEN}} # Telegram
Ray_Serilog__WriteTo__3__Args__chatId: ${{secrets.PUSHTGCHATID}}
Ray_Serilog__WriteTo__3__Args__restrictedToMinimumLevel: ${{secrets.PUSHTGLEVEL}}
Ray_Serilog__WriteTo__4__Args__webHookUrl: ${{secrets.PUSHWEIXINURL}} # 企业微信
Ray_Serilog__WriteTo__4__Args__restrictedToMinimumLevel: ${{secrets.PUSHWEIXINLEVEL}}
Ray_Serilog__WriteTo__5__Args__webHookUrl: ${{secrets.PUSHDINGURL}} # 钉钉
Ray_Serilog__WriteTo__5__Args__restrictedToMinimumLevel: ${{secrets.PUSHDINGLEVEL}}
Ray_Serilog__WriteTo__6__Args__scKey: ${{secrets.PUSHSCKEY}} # Server酱
Ray_Serilog__WriteTo__6__Args__turboScKey: ${{secrets.PUSHSERVERTSCKEY}}
Ray_Serilog__WriteTo__6__Args__restrictedToMinimumLevel: ${{secrets.PUSHSERVERLEVEL}}
Ray_Serilog__WriteTo__7__Args__sKey: ${{secrets.PUSHCOOLSKEY}} # 酷推
Ray_Serilog__WriteTo__7__Args__restrictedToMinimumLevel: ${{secrets.PUSHCOOLLEVEL}}
Ray_Serilog__WriteTo__8__Args__api: ${{secrets.PUSHOTHERAPI}} # 自定义api
Ray_Serilog__WriteTo__8__Args__placeholder: ${{secrets.PUSHOTHERPLACEHOLDER}}
Ray_Serilog__WriteTo__8__Args__bodyJsonTemplate: ${{secrets.PUSHOTHERBODYJSONTEMPLATE}}
Ray_Serilog__WriteTo__8__Args__restrictedToMinimumLevel: ${{secrets.PUSHOTHERLEVEL}}
Ray_Serilog__WriteTo__9__Args__token: ${{secrets.PUSHPLUSTOKEN}} # PushPlus
Ray_Serilog__WriteTo__9__Args__topic: ${{secrets.PUSHPLUSTOPIC}}
Ray_Serilog__WriteTo__9__Args__channel: ${{secrets.PUSHPLUSCHANNEL}}
Ray_Serilog__WriteTo__9__Args__webhook: ${{secrets.PUSHPLUSWEBHOOK}}
Ray_Serilog__WriteTo__9__Args__restrictedToMinimumLevel: ${{secrets.PUSHPLUSLEVEL}}
# 安全相关:
Ray_Security__IsSkipDailyTask: ${{secrets.ISSKIPDAILYTASK}}
Ray_Security__IntervalSecondsBetweenRequestApi: ${{secrets.INTERVALSECONDSBETWEENREQUESTAPI}}
Ray_Security__IntervalMethodTypes: ${{secrets.INTERVALMETHODTYPES}}
Ray_Security__UserAgent: ${{secrets.USERAGENT}}
Ray_Security__WebProxy: ${{secrets.WEBPROXY}}
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# 每日任务:
Ray_DailyTaskConfig__NumberOfCoins: ${{secrets.NUMBEROFCOINS}}
Ray_DailyTaskConfig__SaveCoinsWhenLv6: ${{secrets.SAVECOINSWHENLV6}}
Ray_DailyTaskConfig__SelectLike: ${{secrets.SELECTLIKE}}
Ray_DailyTaskConfig__SupportUpIds: ${{secrets.SUPPORTUPIDS}}
Ray_DailyTaskConfig__DayOfAutoCharge: ${{secrets.DAYOFAUTOCHARGE}}
Ray_DailyTaskConfig__AutoChargeUpId: ${{secrets.AUTOCHARGEUPID}}
Ray_DailyTaskConfig__ChargeComment: ${{secrets.CHARGECOMMENT}}
Ray_DailyTaskConfig__DayOfReceiveVipPrivilege: ${{secrets.DAYOFRECEIVEVIPPRIVILEGE}}
Ray_DailyTaskConfig__DayOfExchangeSilver2Coin: ${{secrets.DAYOFEXCHANGESILVER2COIN}}
Ray_DailyTaskConfig__DevicePlatform: ${{secrets.DEVICEPLATFORM}}
Ray_Serilog__WriteTo__0__Args__restrictedToMinimumLevel: ${{secrets.CONSOLELOGLEVEL}}
Ray_Serilog__WriteTo__0__Args__outputTemplate: ${{secrets.CONSOLELOGTEMPLATE}}
# 天选任务:
Ray_LiveLotteryTaskConfig__ExcludeAwardNames: ${{secrets.EXCLUDEAWARDNAMES}} # 天选抽奖指定排除关键字
Ray_LiveLotteryTaskConfig__IncludeAwardNames: ${{secrets.INCLUDEAWARDNAMES}} # 天选抽奖指定包含关键字
Ray_LiveLotteryTaskConfig__AutoGroupFollowings: ${{secrets.AUTOGROUPFOLLOWINGS}} # 抽奖结束后是否将关注主播自动分组
# 批量取关任务:
Ray_UnfollowBatchedTaskConfig__GroupName: ${{secrets.UNFOLLOWGROUPNAME}}
Ray_UnfollowBatchedTaskConfig__Count: ${{secrets.UNFOLLOWCOUNT}}
jobs:
run-task:
runs-on: ubuntu-latest
steps:
# 设置服务器时区为东八区
- name: Set time zone
run: sudo timedatectl set-timezone 'Asia/Shanghai'
# 检出
- name: Checkout
uses: actions/checkout@v2
# .Net 环境
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
# 运行
- name: Run APP
run: |
cd ./src/Ray.BiliBiliTool.Console
dotnet run --runTasks=${{ github.event.inputs.tasks }}
================================================
FILE: gitHubActions/bak/live-lottery-task.yml
================================================
# 天选时刻抽奖任务
name: live-lottery-task
on:
workflow_dispatch: # 手动触发
schedule: # 计划任务触发
- cron: '0 16 * * *'
# cron表达式,时区是UTC时间,比我们早8小时,如上所表示的是每天0点0分(24点整)
# 建议每个人通过设置名称为 LiveLottery 的 GitHub Environments 来设定为自己的目标运行时间(详细设置方法见文档说明)
env:
IsOpenLiveLotteryTask: ${{secrets.ISOPENLIVELOTTERYTASK}} #是否开启该GitHub工作流
ASPNETCORE_ENVIRONMENT: ${{secrets.ENV}} # 运行环境
Ray_CloseConsoleWhenEnd: 1
Ray_BiliBiliCookies__1: ${{secrets.COOKIESTR}}
Ray_BiliBiliCookies__2: ${{secrets.COOKIESTR2}}
Ray_BiliBiliCookies__3: ${{secrets.COOKIESTR3}}
# 天选任务:
Ray_LiveLotteryTaskConfig__ExcludeAwardNames: ${{secrets.EXCLUDEAWARDNAMES}} # 天选抽奖指定排除关键字
Ray_LiveLotteryTaskConfig__IncludeAwardNames: ${{secrets.INCLUDEAWARDNAMES}} # 天选抽奖指定包含关键字
Ray_LiveLotteryTaskConfig__AutoGroupFollowings: ${{secrets.AUTOGROUPFOLLOWINGS}} # 抽奖结束后是否将关注主播自动分组
Ray_LiveLotteryTaskConfig__DenyUids: ${{secrets.LIVELOTTERYDENYUIDS}} # 天选筹抽奖主播Uid黑名单
# 推送:
Ray_Serilog__WriteTo__3__Args__botToken: ${{secrets.PUSHTGTOKEN}} # Telegram
Ray_Serilog__WriteTo__3__Args__chatId: ${{secrets.PUSHTGCHATID}}
Ray_Serilog__WriteTo__3__Args__restrictedToMinimumLevel: ${{secrets.PUSHTGLEVEL}}
Ray_Serilog__WriteTo__4__Args__webHookUrl: ${{secrets.PUSHWEIXINURL}} # 企业微信
Ray_Serilog__WriteTo__4__Args__restrictedToMinimumLevel: ${{secrets.PUSHWEIXINLEVEL}}
Ray_Serilog__WriteTo__5__Args__webHookUrl: ${{secrets.PUSHDINGURL}} # 钉钉
Ray_Serilog__WriteTo__5__Args__restrictedToMinimumLevel: ${{secrets.PUSHDINGLEVEL}}
Ray_Serilog__WriteTo__6__Args__scKey: ${{secrets.PUSHSCKEY}} # Server酱
Ray_Serilog__WriteTo__6__Args__turboScKey: ${{secrets.PUSHSERVERTSCKEY}}
Ray_Serilog__WriteTo__6__Args__restrictedToMinimumLevel: ${{secrets.PUSHSERVERLEVEL}}
Ray_Serilog__WriteTo__7__Args__sKey: ${{secrets.PUSHCOOLSKEY}} # 酷推
Ray_Serilog__WriteTo__7__Args__restrictedToMinimumLevel: ${{secrets.PUSHCOOLLEVEL}}
Ray_Serilog__WriteTo__8__Args__api: ${{secrets.PUSHOTHERAPI}} # 自定义api
Ray_Serilog__WriteTo__8__Args__placeholder: ${{secrets.PUSHOTHERPLACEHOLDER}}
Ray_Serilog__WriteTo__8__Args__bodyJsonTemplate: ${{secrets.PUSHOTHERBODYJSONTEMPLATE}}
Ray_Serilog__WriteTo__8__Args__restrictedToMinimumLevel: ${{secrets.PUSHOTHERLEVEL}}
Ray_Serilog__WriteTo__9__Args__token: ${{secrets.PUSHPLUSTOKEN}} # PushPlus
Ray_Serilog__WriteTo__9__Args__topic: ${{secrets.PUSHPLUSTOPIC}}
Ray_Serilog__WriteTo__9__Args__channel: ${{secrets.PUSHPLUSCHANNEL}}
Ray_Serilog__WriteTo__9__Args__webhook: ${{secrets.PUSHPLUSWEBHOOK}}
Ray_Serilog__WriteTo__9__Args__restrictedToMinimumLevel: ${{secrets.PUSHPLUSLEVEL}}
# 安全相关:
Ray_Security__IsSkipDailyTask: ${{secrets.ISSKIPDAILYTASK}}
Ray_Security__IntervalSecondsBetweenRequestApi: ${{secrets.INTERVALSECONDSBETWEENREQUESTAPI}}
Ray_Security__IntervalMethodTypes: ${{secrets.INTERVALMETHODTYPES}}
Ray_Security__UserAgent: ${{secrets.USERAGENT}}
Ray_Security__WebProxy: ${{secrets.WEBPROXY}}
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# Console日志:
Ray_Serilog__WriteTo__0__Args__restrictedToMinimumLevel: ${{secrets.CONSOLELOGLEVEL}}
Ray_Serilog__WriteTo__0__Args__outputTemplate: ${{secrets.CONSOLELOGTEMPLATE}}
jobs:
pre-check:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.check.outputs.result }} # 不能直接传递secrets的值,否则会被skip,需要转一下
steps:
- id: check
if: env.IsOpenLiveLotteryTask=='true'
run: |
echo "::set-output name=result::开启"
run-live-lottery:
runs-on: ubuntu-latest
needs: pre-check
# if: env.IsOpenLiveLotteryTask=='true' # 这里job.if读取不到env或secrets,很坑...但是发现可以读到needs的outputs值
if: needs.pre-check.outputs.result=='开启'
environment: LiveLottery
steps:
# 输出IP、设置服务器时区为东八区
- name: PreWork
run: |
sudo curl ifconfig.me
sudo timedatectl set-timezone 'Asia/Shanghai'
# 检出
- name: Checkout
uses: actions/checkout@v2
# .Net 环境
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
# 测试运行
- name: Test APP
run: |
cd ./src/Ray.BiliBiliTool.Console
dotnet run --runTasks=LiveLottery
================================================
FILE: gitHubActions/bak/unfollow-batched-task.yml
================================================
# 批量取关
name: unfollow-batched-task
on:
workflow_dispatch: # 手动触发
inputs:
group:
description: '分组名称'
required: true
count:
description: '目标取关个数(-1表示全部)'
required: true
env:
ASPNETCORE_ENVIRONMENT: ${{secrets.ENV}} # 运行环境
Ray_CloseConsoleWhenEnd: 1
Ray_BiliBiliCookies__1: ${{secrets.COOKIESTR}}
Ray_BiliBiliCookies__2: ${{secrets.COOKIESTR2}}
Ray_BiliBiliCookies__3: ${{secrets.COOKIESTR3}}
# 推送:
Ray_Serilog__WriteTo__3__Args__botToken: ${{secrets.PUSHTGTOKEN}} # Telegram
Ray_Serilog__WriteTo__3__Args__chatId: ${{secrets.PUSHTGCHATID}}
Ray_Serilog__WriteTo__3__Args__restrictedToMinimumLevel: ${{secrets.PUSHTGLEVEL}}
Ray_Serilog__WriteTo__4__Args__webHookUrl: ${{secrets.PUSHWEIXINURL}} # 企业微信
Ray_Serilog__WriteTo__4__Args__restrictedToMinimumLevel: ${{secrets.PUSHWEIXINLEVEL}}
Ray_Serilog__WriteTo__5__Args__webHookUrl: ${{secrets.PUSHDINGURL}} # 钉钉
Ray_Serilog__WriteTo__5__Args__restrictedToMinimumLevel: ${{secrets.PUSHDINGLEVEL}}
Ray_Serilog__WriteTo__6__Args__scKey: ${{secrets.PUSHSCKEY}} # Server酱
Ray_Serilog__WriteTo__6__Args__turboScKey: ${{secrets.PUSHSERVERTSCKEY}}
Ray_Serilog__WriteTo__6__Args__restrictedToMinimumLevel: ${{secrets.PUSHSERVERLEVEL}}
Ray_Serilog__WriteTo__7__Args__sKey: ${{secrets.PUSHCOOLSKEY}} # 酷推
Ray_Serilog__WriteTo__7__Args__restrictedToMinimumLevel: ${{secrets.PUSHCOOLLEVEL}}
Ray_Serilog__WriteTo__8__Args__api: ${{secrets.PUSHOTHERAPI}} # 自定义api
Ray_Serilog__WriteTo__8__Args__placeholder: ${{secrets.PUSHOTHERPLACEHOLDER}}
Ray_Serilog__WriteTo__8__Args__bodyJsonTemplate: ${{secrets.PUSHOTHERBODYJSONTEMPLATE}}
Ray_Serilog__WriteTo__8__Args__restrictedToMinimumLevel: ${{secrets.PUSHOTHERLEVEL}}
Ray_Serilog__WriteTo__9__Args__token: ${{secrets.PUSHPLUSTOKEN}} # PushPlus
Ray_Serilog__WriteTo__9__Args__topic: ${{secrets.PUSHPLUSTOPIC}}
Ray_Serilog__WriteTo__9__Args__channel: ${{secrets.PUSHPLUSCHANNEL}}
Ray_Serilog__WriteTo__9__Args__webhook: ${{secrets.PUSHPLUSWEBHOOK}}
Ray_Serilog__WriteTo__9__Args__restrictedToMinimumLevel: ${{secrets.PUSHPLUSLEVEL}}
# 安全相关:
Ray_Security__IsSkipDailyTask: ${{secrets.ISSKIPDAILYTASK}}
Ray_Security__IntervalSecondsBetweenRequestApi: ${{secrets.INTERVALSECONDSBETWEENREQUESTAPI}}
Ray_Security__IntervalMethodTypes: ${{secrets.INTERVALMETHODTYPES}}
Ray_Security__UserAgent: ${{secrets.USERAGENT}}
Ray_Security__WebProxy: ${{secrets.WEBPROXY}}
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# 批量取关任务:
Ray_UnfollowBatchedTaskConfig__GroupName: ${{ github.event.inputs.group }}
Ray_UnfollowBatchedTaskConfig__Count: ${{ github.event.inputs.count }}
Ray_UnfollowBatchedTaskConfig__RetainUids: ${{secrets.UNFOLLOWBATCHEDRETAINUIDS}}
jobs:
run-task:
runs-on: ubuntu-latest
steps:
# 设置服务器时区为东八区
- name: Set time zone
run: sudo timedatectl set-timezone 'Asia/Shanghai'
# 检出
- name: Checkout
uses: actions/checkout@v2
# .Net 环境
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
# 发布
- name: Publish
run: |
cd ./src/Ray.BiliBiliTool.Console
dotnet publish --configuration Release --self-contained false --output ./bin/Publish/net5-dependent
# 测试运行
- name: Test APP
run: |
cd ./src/Ray.BiliBiliTool.Console
dotnet run --runTasks=UnfollowBatched
================================================
FILE: helm/README.md
================================================
# BiliBili Tool
BiliBiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个贴心小助手,按照我们预先吩咐它的命令,在指定频率、时间范围内帮助我们完成计划的任务。
[Overview of BiliBili Tool](https://github.com/RayWangQvQ/BiliBiliToolPro)
## TL;DR
### 在集群中通过chart部署
```console
$ 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