[目录]
- 1. 配置方式
- 2. 优先级
- 3. 详细配置说明
推荐使用Release包在本地运行的朋友使用,直接打开文件,将对应的配置值填入,保存即可生效。
默认有3个配置文件:appsettings.json
、appsettings.Development.json
、appsettings.Production.json
,分别对应默认、开发与生产环境。
如果运行环境为开发环境,则appsettings.Development.json
优先级高于appsettings.json
,即appsettings.Development.json
里的配置会覆盖默认配置(不是全部覆盖,appsettings.Development.json
里加了几个就覆盖几个);
如果运行环境为生产环境,则appsettings.Production.json
优先级高于appsettings.json
,即appsettings.Production.json
里的配置会覆盖默认配置(同样不是全部覆盖,appsettings.Production.json
里加了几个就覆盖几个)。
对于不是开发人员的大部分人来说,只需要关注appsettings.Production.json
即可,因为非调试状态下运行的默认环境就是生产环境。此时如需自定义配置,推荐在appsettings.Production.json
文件中进行修改(并且以后都只修改appsettings.Production.json
文件,appsettings.json
只作为默认的全量模板而存在)
在使用命令行启动时,可使用-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
如映射文件所展示,支持使用命令行配置的配置项并不多,也不建议大量地使用该种方式进行配置。使用包运行的朋友,除了改配置文件和命令行参数配置外,还可以使用环境变量进行配置,这也是推荐的做法,如下。
所有的配置项均可以通过添加环境变量来进行配置,以Windows下依赖net5的系统为例:
# 添加环境变量作为配置:
set Ray_RunTasks=Daily
set Ray_BiliBiliCookies__1=abc
set Ray_BiliBiliCookies__2=efg
set Ray_DailyTaskConfig__NumberOfCoins=3
# 开始运行程序:
dotnet Ray.BiliBiliTool.Console.dll
注意区分单下划线和双下划线,linux系统使用 export
关键字代替 set
。
使用GitHub Actions,可以通过添加Secret实现配置。
比如,配置微信推送的SCKEY,可以添加如下Secret:
Secret Name:PUSHSCKEY
Secret Value:123abc
这些 Secrets 会通过 workflow 里的yml脚本映射为环境变量,在应用启动时作为环境变量配置源传入程序当中,所以使用 GitHub Secrets 配置的本质是使用环境变量配置。
青龙面板配置,其本质还是通过环境变量进行配置。Linux使用export关键字来添加环境变量,青龙面板中的配置文件
页面可以用来保存这些export指令。
例如,配置Cookie和推送:
export Ray_BiliBiliCookies__1="_uuid=abc..."
export Ray_Serilog__WriteTo__9__Args__token="abcde"
当然,Cookie还可以在青龙面板的环境变量
页配置,名称是Ray_BiliBiliCookies__1
或Ray_BiliBiliCookies__2
,指就是对应的CK。好处是可以方便地通过点击禁用或开启来管理多账号。
以上 4 种配置源,其优先级由低到高依次是:json文件 < 环境变量(和Github Secrets) < 命令行。
高优先级的配置会覆盖低优先级的配置。
没有它,程序的运行就没有意义,所以它是必填项。
TITLE | CONTENT | 示例 |
---|---|---|
配置Key | BiliBiliCookies__1 |
|
值域 | 字符串,英文分号分隔,来自浏览器抓取 | |
默认值 | 空 | |
环境变量 | Ray_BiliBiliCookies__1 |
Windows:set Ray_BiliBiliCookies__1=abc=123;def=456; Linux:export Ray_BiliBiliCookies__1=abc=123;def=456; |
GitHub Secrets | COOKIESTR |
Name:COOKIESTR Value: abc=123;def=456; |
TITLE | CONTENT | 示例 |
---|---|---|
配置Key | BiliBiliCookies__2 |
|
值域 | 字符串,英文分号分隔,来自浏览器抓取 | |
默认值 | 空 | |
环境变量 | Ray_BiliBiliCookies__2 |
Windows:set Ray_BiliBiliCookies__2=abc=123;def=456; Linux:export Ray_BiliBiliCookies__2=abc=123;def=456; |
GitHub Secrets | COOKIESTR2 |
Name:COOKIESTR2 Value: abc=123;def=456; |
... ... ...
用于特殊情况下,通过配置灵活的开启和关闭整个应用. 配置为关闭后,程序会跳过所有任务,不会调用B站任何接口。
TITLE | CONTENT | 示例 |
---|---|---|
配置Key | Security__IsSkipDailyTask |
|
值域 | [true,false] | |
默认值 | false | |
环境变量 | Ray_Security__IsSkipDailyTask |
set Ray_Security__IsSkipDailyTask=true |
GitHub Secrets | ISSKIPDAILYTASK |
Name:ISSKIPDAILYTASK Value: true |
若想要彻底关闭,即Actions不运行,点击Actions进入Workflows列表,点击相应任务(如bilibili-daily-task.yml
)的Workflow,在搜索框右侧有一个三个点的设置按钮,点击按钮后,在弹出的下拉列表里选中Disable workflow
项即可。
用于设置程序启动后,随机睡眠时间的最大上限值,单位为分钟。
默认为10,即程序每天运行后会随机睡眠1到10分钟。这样可以避免程序每天准点地在同一时间运行,太像机器。
配置为0则不进行睡眠。
TITLE | CONTENT |
---|---|
配置Key | Security__RandomSleepMaxMin |
值域 | 数字 |
默认值 | 20 |
环境变量 | Ray_Security__RandomSleepMaxMin |
GitHub Secrets | RANDOMSLEEPMAXMIN |
因为有朋友反馈,程序在1到2秒内连续调用B站的Api过快,担心会被B站的安全策略检测到,影响自己的账号安全。
所以我添加这个安全策略的配置,可以设置两次Api请求之间的最短时间间隔。
举例来说,之前的5次投币可能是在1秒之内完成的,现在通过配置间隔时间,可以将其变为投币一次后,经过4到5秒才会投下一个,提升程序的演技,让它表现的就像真人在投币一样,骗过BiliBili~
TITLE | CONTENT |
---|---|
配置Key | Security__IntervalSecondsBetweenRequestApi |
值域 | [0,+] |
默认值 | 20 |
环境变量 | Ray_Security__IntervalSecondsBetweenRequestApi |
GitHub Secrets | INTERVALSECONDSBETWEENREQUESTAPI |
间隔秒数所针对的HttpMethod类型,服务于上一个配置。服务器一般对GET请求不是很敏感,建议只针对POST请求做间隔就可以了。
TITLE | CONTENT |
---|---|
配置Key | Security__IntervalMethodTypes |
值域 | [GET,POST],多个以英文逗号分隔 |
默认值 | POST |
环境变量 | Ray_Security__IntervalMethodTypes |
GitHub Secrets | INTERVALMETHODTYPES |
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 |
环境变量 | Ray_Security__UserAgent |
GitHub Secrets | USERAGENT |
获取浏览器中自己的UA的方法见下图:
支持需要账户密码的代理。
TITLE | CONTENT |
---|---|
配置Key | Security__WebProxy |
值域 | 字符串,形如:user:password@host:port |
默认值 | 无 |
环境变量 | Ray_Security__WebProxy |
GitHub Secrets | WEBPROXY |
每天投币的总目标数量,因为投币获取经验只与次数有关,所以程序每次投币只会投1个,也就是说该配置也表示每日投币次数。
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__NumberOfCoins |
值域 | [0,5],为安全考虑,程序内部还会做验证,最大不能超过5 |
默认值 | 5 |
环境变量 | Ray_DailyTaskConfig__NumberOfCoins |
GitHub Secrets | NUMBEROFCOINS |
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__SelectLike |
值域 | [true,false] |
默认值 | false |
环境变量 | Ray_DailyTaskConfig__SelectLike |
GitHub Secrets | SELECTLIKE |
通过填入自己选择的up主ID,以后观看、分享和投币,都会优先从配置的up主下面挑选视频,如果没有找到,则会去你的特别关注列表中随机再获取,再然后会去普通关注列表中随机获取,最后会去排行榜中随机获取。
当前不再推荐使用该配置,建议通过添加到特别关注列表来实现优先支持。
注意:该配置的默认值是作者的upId,如需换掉的话,直接更改即可。
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__SupportUpIds |
值域 | up主ID,多个用英文逗号分隔,默认是作者本人的UpId,如需删除可以配置为空格字符串或“-1”,也可以配置为其他人的UpId |
默认值 | 作者的upId |
环境变量 | Ray_DailyTaskConfig__SupportUpIds |
GitHub Secrets | SUPPORTUPIDS |
获取UP主的Id方法:打开bilibili,进入欲要选择的UP主主页,在url中和简介中,都可获得该UP主的Id,如下图所示:
使用大会员免费赠送的B币券自动充电,如不使用,每个月结束会自动失效。没有B币券或B币券余额不足2,不会进行充电。
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__DayOfAutoCharge |
值域 | [-1,31],-1表示不指定,默认月底最后一天;0表示不充电 |
默认值 | -1 |
环境变量 | Ray_DailyTaskConfig__DayOfAutoCharge |
GitHub Secrets | DAYOFAUTOCHARGE |
充电对象的upId,需要配合前一个DayOfAutoCharge配置项使用。-1表示不指定,默认为自己充电;其他Id则会尝试为配置的UpId充电。
**注意:该配置的默认值是作者的upId,如果你已认证通过了创作身份(即可以为自己充电),则建议将其改为为自己充电(配置为-1即可),也可以配置为某个自己指定的创作者upId。
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__AutoChargeUpId |
值域 | up的Id字符串,默认是作者本人的UpId;-1表示不指定,为自己充电;其他Id则会尝试为配置的UpId充电 |
默认值 | 作者的upId |
环境变量 | Ray_DailyTaskConfig__AutoChargeUpId |
GitHub Secrets | AUTOCHARGEUPID |
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__DayOfReceiveVipPrivilege |
值域 | [-1,31],-1表示不指定,默认每月1号;0表示不领取 |
默认值 | 1 |
环境变量 | Ray_DailyTaskConfig__DayOfReceiveVipPrivilege |
GitHub Secrets | DAYOFRECEIVEVIPPRIVILEGE |
TITLE | CONTENT |
---|---|
配置Key | DailyTaskConfig__DayOfExchangeSilver2Coin |
值域 | [-1,31],-1表示不指定,默认每月最后一天;-2表示每天;0表示不进行兑换 |
默认值 | -1 |
环境变量 | Ray_DailyTaskConfig__DayOfExchangeSilver2Coin |
GitHub Secrets | DayOfExchangeSilver2Coin |
TITLE | CONTENT |
---|---|
配置Key | LiveLotteryTaskConfig__ExcludeAwardNames |
值域 | 一串字符串,多个关键字使用| 符号隔开 |
默认值 | 舰|船|航海|代金券|自拍|照|写真|图 |
环境变量 | Ray_LiveLotteryTaskConfig__ExcludeAwardNames |
GitHub Secrets | EXCLUDEAWARDNAMES |
TITLE | CONTENT |
---|---|
配置Key | LiveLotteryTaskConfig__IncludeAwardNames |
值域 | 一串字符串,多个关键字使用| 符号隔开 |
默认值 | 空 |
环境变量 | Ray_LiveLotteryTaskConfig__IncludeAwardNames |
GitHub Secrets | INCLUDEAWARDNAMES |
TITLE | CONTENT |
---|---|
配置Key | LiveLotteryTaskConfig__AutoGroupFollowings |
值域 | [true,false] |
默认值 | true |
环境变量 | Ray_LiveLotteryTaskConfig__AutoGroupFollowings |
GitHub Secrets | AUTOGROUPFOLLOWINGS Value: true |
不想参与抽奖的主播Upid集合,多个用英文逗号分隔,配置后不会参加黑名单中的主播的抽奖活动。默认值是目前已知的中奖后拒绝发奖的Up,后期还会继续补充,也反映反馈。
TITLE | CONTENT |
---|---|
配置Key | LiveLotteryTaskConfig__DenyUids |
值域 | 字符串,如"65566781,1277481241" |
默认值 | "65566781,1277481241,1643654862,603676925" |
环境变量 | Ray_LiveLotteryTaskConfig__DenyUids |
GitHub Secrets | LIVELOTTERYDENYUIDS Value: 65566781,1277481241,1643654862,603676925 |
TITLE | CONTENT |
---|---|
配置Key | UnfollowBatchedTaskConfig__GroupName |
值域 | 字符串 |
默认值 | 天选时刻 |
环境变量 | Ray_UnfollowBatchedTaskConfig__GroupName |
GitHub Secrets | 无,在unfollow-batched-task.yml工作流中通过input输入 |
TITLE | CONTENT |
---|---|
配置Key | Ray_UnfollowBatchedTaskConfig__Count |
值域 | 数字,[-1,+],-1表示全部 |
默认值 | 5 |
环境变量 | Ray_UnfollowBatchedTaskConfig__Count |
GitHub Secrets | 无,在unfollow-batched-task.yml工作流中通过input输入 |
TITLE | CONTENT |
---|---|
配置Key | Ray_UnfollowBatchedTaskConfig__RetainUids |
值域 | 字符串,多个使用英文逗号分隔 |
默认值 | 108569350 |
环境变量 | Ray_UnfollowBatchedTaskConfig__RetainUids |
GitHub Secrets | UNFOLLOWBATCHEDRETAINUIDS |
v1.0.x仅支持推送到Server酱,v1.1.x之后重新定义了推送地概念,将推送仅看作不同地日志输出端,与Console、File没有本质区别。
配置多个,多个端均会收到日志消息。推荐Telegram、企业微信、Server酱。
点击 https://core.telegram.org/api#bot-api 查看如何创建机器人并获取到机器人的botToken。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__3__Args__botToken |
意义 | 用于将日志输出到Telegram机器人 |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | |
GitHub Secrets | PUSHTGTOKEN |
点击 https://api.telegram.org/bot{TOKEN}/getUpdates 获取到与机器人的chatId(需要用上面获取到的Token替换进链接里的{TOKEN}后访问)
P.S.访问链接需要能访问“外网”,有vpn的挂vpn。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__3__Args__chatId |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__3__Args__chatId |
命令行示范 | 无 |
GitHub Secrets | PUSHTGCHATID |
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__4__Args__webHookUrl |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__4__Args__webHookUrl |
命令行示范 | 无 |
GitHub Secrets | PUSHWEIXINURL |
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
机器人的安全策略,当前不支持加签,请使用关键字策略,推荐关键字:Ray
或 BiliBili
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__5__Args__webHookUrl |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__5__Args__webHookUrl |
GitHub Secrets | PUSHDINGURL |
官网: http://sc.ftqq.com/9.version
获取方式请参考官网。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__6__Args__turboScKey |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__6__Args__turboScKey=abcdefg |
GitHub Secrets | PUSHSERVERTSCKEY |
该平台可能还在完善当中,对接时我发现其接口定义不规范,且机器人容易被封,所以不推荐使用,且不接受提酷推推送相关bug。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__7__Args__sKey |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__7__Args__sKey |
GitHub Secrets | PUSHCOOLSKEY |
这是我简单封装了一个通用的推送接口,可以推送到任意的api地址,如果有自己的机器人或自己的用于接受日志的api,可以根据需要自定义配置。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__8__Args__api |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__8__Args__api |
GitHub Secrets | PUSHOTHERAPI |
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__8__Args__placeholder |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__8__Args__placeholder |
GitHub Secrets | PUSHOTHERPLACEHOLDER |
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__8__Args__bodyJsonTemplate |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__8__Args__bodyJsonTemplate |
GitHub Secrets | PUSHOTHERBODYJSONTEMPLATE |
官网: http://www.pushplus.plus/doc/
获取方式请参考官网。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__9__Args__token |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__9__Args__token |
GitHub Secrets | PUSHPLUSTOKEN |
获取方式请参考官网。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__9__Args__topic |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__9__Args__topic |
GitHub Secrets | PUSHPLUSTOPIC |
获取方式请参考官网。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__9__Args__channel |
值域 | 一串字符串,[wechat,webhook,cp,sms,mail] |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__9__Args__channel |
GitHub Secrets | PUSHPLUSCHANNEL |
获取方式请参考官网。
webhook编码(不是地址),在官网平台设定,仅在channel使用webhook渠道和CP渠道时需要填写
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__9__Args__webhook |
值域 | 一串字符串 |
默认值 | 空 |
环境变量 | Ray_Serilog__WriteTo__9__Args__webhook |
命令行示范 | |
GitHub Secrets | PUSHPLUSWEBHOOK |
这里的日志等级指的是 Console 的等级,即 GitHub Actions 里和微信推送里看到的日志。
为了美观, BiliBiliTool 默认只输出最低等级为 Information 的日志,保证只展示最精简的信息。
但是经过几轮反馈发现,这样会造成 GitHub Actions 运行的朋友遇到异常时无法查看详细日志信息(本地运行的朋友可以通过日志文件看到详细的日志信息)。
所以就将日志等级开放为配置了,通过更改等级,可以指定日志输出的详细程度。
BiliBiliTool 使用 Serilog 作为日志组件,所以其值域与 Serilog 的日志等级选项相同,这里只建议在需要调试时改为Debug
,应用会输出详细的调试日志信息,包括每次调用B站Api的请求参数与返回数据。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__0__Args__restrictedToMinimumLevel |
值域 | [Information,Debug] |
默认值 | 1 |
环境变量 | Ray_Serilog__WriteTo__0__Args__restrictedToMinimumLevel |
GitHub Secrets | CONSOLELOGLEVEL |
这里的日志样式指的是 Console 的等级,即 GitHub Actions 里和微信推送里看到的日志。
通过更改模板样式,可以指定日志输出的样式,比如不输出时间和等级,做到最精简的样式。
BiliBiliTool 使用 Serilog 作为日志组件,所以可以参考 Serilog 的日志样式模板。
TITLE | CONTENT |
---|---|
配置Key | Serilog__WriteTo__0__Args__outputTemplate |
值域 | 字符串 |
默认值 | [{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception} |
环境变量 | Ray_Serilog__WriteTo__0__Args__outputTemplate |
GitHub Secrets | CONSOLELOGTEMPLATE |