diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b397a8a6..5859b9db0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,3 +43,6 @@ - 【#107】新增自动检测并关闭长时无状态issues的actions:no-response.yml - 【#73】【#105】【#108】更新、纠正文档内容 - HostConfiguration,删除了CommandLine配置源,推荐只使用环境变量,同时更新青龙shell脚本内配置 +- 【#169】领取大会员福利任务更改为每日都尝试执行 +- 青龙拉库兼容大小写问题 +- 【#197】合并PR,新增了阅读漫画功能到每日任务中(@ChanceLuo) diff --git a/qinglong/DefaultTasks/bili_dev_task_daily.sh b/qinglong/DefaultTasks/bili_dev_task_daily.sh index 232119cf0..53c53f0da 100644 --- a/qinglong/DefaultTasks/bili_dev_task_daily.sh +++ b/qinglong/DefaultTasks/bili_dev_task_daily.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro_develop" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh b/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh index 4472365f6..0dbf48d52 100644 --- a/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh +++ b/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh @@ -8,10 +8,10 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro_develop" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir export ENVIRONMENT=Production && \ export Ray_RunTasks=LiveLottery && \ -dotnet run --project ./src/Ray.BiliBiliTool.Console \ No newline at end of file +dotnet run --project ./src/Ray.BiliBiliTool.Console diff --git a/qinglong/DefaultTasks/bili_dev_task_test.sh b/qinglong/DefaultTasks/bili_dev_task_test.sh index 4b37e835a..e79a07b7e 100644 --- a/qinglong/DefaultTasks/bili_dev_task_test.sh +++ b/qinglong/DefaultTasks/bili_dev_task_test.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro_develop" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh b/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh index 53c40ed67..8a339da23 100644 --- a/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh +++ b/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro_develop" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/DefaultTasks/bili_task_daily.sh b/qinglong/DefaultTasks/bili_task_daily.sh index 4ee2c99ab..a03aad201 100644 --- a/qinglong/DefaultTasks/bili_task_daily.sh +++ b/qinglong/DefaultTasks/bili_task_daily.sh @@ -8,10 +8,10 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir export ENVIRONMENT=Production && \ export Ray_RunTasks=Daily && \ -dotnet run --project ./src/Ray.BiliBiliTool.Console \ No newline at end of file +dotnet run --project ./src/Ray.BiliBiliTool.Console diff --git a/qinglong/DefaultTasks/bili_task_liveLottery.sh b/qinglong/DefaultTasks/bili_task_liveLottery.sh index e1942a38d..6793ac3ae 100644 --- a/qinglong/DefaultTasks/bili_task_liveLottery.sh +++ b/qinglong/DefaultTasks/bili_task_liveLottery.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/DefaultTasks/bili_task_test.sh b/qinglong/DefaultTasks/bili_task_test.sh index bd6fa5b4e..f48c7d41f 100644 --- a/qinglong/DefaultTasks/bili_task_test.sh +++ b/qinglong/DefaultTasks/bili_task_test.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/DefaultTasks/bili_task_unfollowBatched.sh b/qinglong/DefaultTasks/bili_task_unfollowBatched.sh index 96d53c6f8..73b6c3135 100644 --- a/qinglong/DefaultTasks/bili_task_unfollowBatched.sh +++ b/qinglong/DefaultTasks/bili_task_unfollowBatched.sh @@ -8,7 +8,7 @@ dir_shell=$QL_DIR/shell bili_repo="raywangqvq_bilibilitoolpro" echo "repo目录: $dir_repo" -bili_repo_dir="$(find $dir_repo -type d -name $bili_repo | head -1)" +bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)" echo -e "bili仓库目录: $bili_repo_dir\n" cd $bili_repo_dir diff --git a/qinglong/README.md b/qinglong/README.md index 4d36e31bb..ebff85949 100644 --- a/qinglong/README.md +++ b/qinglong/README.md @@ -12,7 +12,11 @@ - [1.3. 登录青龙面板并修改配置](#13-登录青龙面板并修改配置) - [1.4. 添加bili配置](#14-添加bili配置) - [1.5. 在青龙面板中添加拉库定时任务](#15-在青龙面板中添加拉库定时任务) + - [1.5.1 订阅管理](#151-订阅管理) + - [1.5.2 定时任务拉库](#152-定时任务拉库) - [2. 先行版](#2-先行版) + - [2.1 订阅管理](#21-订阅管理) + - [2.2 定时任务拉库](#22-定时任务拉库) - [3. GitHub加速](#3-github加速) @@ -44,21 +48,45 @@ sh -c "$(wget https://ghproxy.com/https://raw.githubusercontent.com/RayWangQvQ/B 青龙面板,`环境变量`页,添加环境变量: ``` -名称:Ray_BiliBiliCookies__0 +名称:Ray_BiliBiliCookies__1 值:abc ``` -`abc`为你抓取到的真实cookie字符串。 +``` +名称:Ray_BiliBiliCookies__2 +值:defg +``` + +`abc`、`defg`为你抓取到的真实cookie字符串。 ![qinglong-env.png](../docs/imgs/qinglong-env.png) ### 1.5. 在青龙面板中添加拉库定时任务 + +两种方式: +#### 1.5.1 订阅管理 + +``` +名称:Bilibili +类型:公开仓库 +链接:https://github.com/RayWangQvQ/BiliBiliToolPro.git +定时类型:crontab +定时规则:2 2 28 * * +白名单:bili_task_.+\.sh +文件后缀:sh +``` + +没提到的不要动。 + +保存后,点击运行按钮,运行拉库。 + +#### 1.5.2 定时任务拉库 青龙面板,`定时任务`页,右上角`添加任务`,填入以下信息: ``` 名称:拉取Bili库 -命令:ql repo https://github.com/raywangqvq/bilibilitoolpro.git "bili_task_" +命令:ql repo https://github.com/RayWangQvQ/BiliBiliToolPro.git "bili_task_" 定时规则:2 2 28 * * ``` @@ -71,11 +99,25 @@ sh -c "$(wget https://ghproxy.com/https://raw.githubusercontent.com/RayWangQvQ/B ![qinglong-tasks.png](../docs/imgs/qinglong-tasks.png) ## 2. 先行版 -修改拉库命令为`ql repo https://github.com/raywangqvq/bilibilitoolpro.git "bili_dev_task_" "" "" "develop"`可改为拉取develop分支的代码。 -develop分支的代码会超前于默认的main分支,包含当前正在开发的新功能。 +青龙拉库时可以指定分支,develop分支的代码会超前于默认的main分支,包含当前正在开发的新功能。 想提前体验新功能的朋友可以尝试切换先行版,但同时也意味着稳定性会相应降低(其实是相当于在帮我内测测试bug了~🤨)。 +方式有两种: + +### 2.1 订阅管理 + +``` +分支:develop +白名单:bili_dev_task_.+\.sh +``` + +其他同上。 + +### 2.2 定时任务拉库 + +修改拉库命令为`ql repo https://github.com/RayWangQvQ/BiliBiliToolPro.git "bili_dev_task_" "" "" "develop"` + ## 3. GitHub加速 -拉库时,如果服务器在国内,访问GitHub速度慢,可以在仓库地址前加上 `https://ghproxy.com/` 进行加速, 如:`ql repo https://ghproxy.com/https://github.com/raywangqvq/bilibilitoolpro.git "bili_task_"` +拉库时,如果服务器在国内,访问GitHub速度慢,可以在仓库地址前加上 `https://ghproxy.com/` 进行加速, 如:`ql repo https://ghproxy.com/https://github.com/RayWangQvQ/BiliBiliToolPro.git "bili_task_"` diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IMangaApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IMangaApi.cs index 8d23b4538..903d5405c 100644 --- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IMangaApi.cs +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IMangaApi.cs @@ -21,6 +21,14 @@ public interface IMangaApi : IBiliBiliApi [HttpPost("/twirp/activity.v1.Activity/ClockIn?platform={platform}")] Task ClockIn(string platform); + /// + /// 漫画阅读 + /// + /// + /// + [HttpPost("/twirp/bookshelf.v1.Bookshelf/AddHistory?platform={platform}&comic_id=27355&ep_id=381662")] + Task ReadManga(string platform); + /// /// 获取会员漫画奖励 /// @@ -28,6 +36,5 @@ public interface IMangaApi : IBiliBiliApi /// [HttpPost("/twirp/user.v1.User/GetVipReward?reason_id={reason_id}")] Task> ReceiveMangaVipReward(int reason_id); - } } diff --git a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs index f71332138..7fd5aeefa 100644 --- a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs +++ b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs @@ -68,7 +68,7 @@ public override void DoTask() //签到: LiveSign(); MangaSign(); - + MangaRead(); ExchangeSilver2Coin(); //领福利: @@ -190,6 +190,15 @@ private void MangaSign() _mangaDomainService.MangaSign(); } + /// + /// 漫画阅读 + /// + [TaskInterceptor("漫画阅读", rethrowWhenException: false)] + private void MangaRead() + { + _mangaDomainService.MangaRead(); + } + /// /// 每月获取大会员漫画权益 /// diff --git a/src/Ray.BiliBiliTool.Config/Extensions/ServiceCollectionExtension.cs b/src/Ray.BiliBiliTool.Config/Extensions/ServiceCollectionExtension.cs index e3be2bf0d..f62ac0c30 100644 --- a/src/Ray.BiliBiliTool.Config/Extensions/ServiceCollectionExtension.cs +++ b/src/Ray.BiliBiliTool.Config/Extensions/ServiceCollectionExtension.cs @@ -24,6 +24,7 @@ public static IServiceCollection AddBiliBiliConfigs(this IServiceCollection serv .Configure(configuration.GetSection("LiveLotteryTaskConfig")) .Configure(configuration.GetSection("UnfollowBatchedTaskConfig")) .Configure(configuration.GetSection("Security")) + .Configure(configuration.GetSection("ReceiveVipPrivilegeConfig")) .Configure>(Constants.OptionsNames.ExpDictionaryName, configuration.GetSection("Exp")) .Configure>(Constants.OptionsNames.DonateCoinCanContinueStatusDictionaryName, configuration.GetSection("DonateCoinCanContinueStatus")); diff --git a/src/Ray.BiliBiliTool.Config/Options/ReceiveVipPrivilegeOptions.cs b/src/Ray.BiliBiliTool.Config/Options/ReceiveVipPrivilegeOptions.cs new file mode 100644 index 000000000..5d17a9c59 --- /dev/null +++ b/src/Ray.BiliBiliTool.Config/Options/ReceiveVipPrivilegeOptions.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ray.BiliBiliTool.Config.Options +{ + public class ReceiveVipPrivilegeOptions + { + public bool IsEnable { get; set; } = true; + } +} diff --git a/src/Ray.BiliBiliTool.Console/appsettings.Development.json b/src/Ray.BiliBiliTool.Console/appsettings.Development.json index 92618dce9..f33b141c8 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.Development.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.Development.json @@ -1,7 +1,7 @@ { "DailyTaskConfig": { "SupportUpIds": "", - "AutoChargeUpId": "341688380" + "AutoChargeUpId": "220893216" }, "Security": { "IsSkipDailyTask": false, diff --git a/src/Ray.BiliBiliTool.Console/appsettings.Production.json b/src/Ray.BiliBiliTool.Console/appsettings.Production.json index e335815cb..44ab861f1 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.Production.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.Production.json @@ -1,7 +1,7 @@ { "DailyTaskConfig": { "SupportUpIds": "", - "AutoChargeUpId": "341688380" + "AutoChargeUpId": "220893216" }, //用于UT验证 "IsPrd": true diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json index 158c7f568..97551bd69 100644 --- a/src/Ray.BiliBiliTool.Console/appsettings.json +++ b/src/Ray.BiliBiliTool.Console/appsettings.json @@ -14,7 +14,7 @@ "SelectLike": true, //投币时是否同时点赞[false,true] "SupportUpIds": "", //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置或配置为-1则表示没有特别支持的up,会从关注和排行耪中随机获取支持视频 "DayOfAutoCharge": -1, //每月几号自动充电[-1,31],-1表示不指定,默认月底最后一天;0表示不充电 - "AutoChargeUpId": "341688380", //指定支持的UP主Id,-1表示自己 + "AutoChargeUpId": "-1", //指定支持的UP主Id,-1表示自己 "ChargeComment": "", //充电后留言 "DayOfReceiveVipPrivilege": 1, //每月几号自动领取会员权益的[-1,31],-1表示不指定,默认每月1号;0表示不自动领取 "DayOfExchangeSilver2Coin": 0, //每月几号执行银瓜子兑换硬币[-1,31],-1表示不指定,默认每月最后一天;-2表示每天;0表示不进行兑换 @@ -34,10 +34,14 @@ "RetainUids": "108569350" //白名单(保留的UpId),多个用英文都好分隔,配置后,批量取关时不会取关配置的Up }, + "ReceiveVipPrivilegeConfig": { + "IsEnable": true //开关 + }, + //安全相关配置 "Security": { "IsSkipDailyTask": false, //是否跳过执行任务,用于特殊情况下,通过配置灵活的开启和关闭任务 - "RandomSleepMaxMin": 20, //随机睡眠的最大时长(单位为分钟),用于使每天运行时间在范围内相对随机,值域[0,+];配置为0表示不进行休眠 + "RandomSleepMaxMin": 10, //随机睡眠的最大时长(单位为分钟),用于使每天运行时间在范围内相对随机,值域[0,+];配置为0表示不进行休眠 "IntervalSecondsBetweenRequestApi": 20, //两次调用api之间的间隔[0,+](单位为秒)。因为有人担心在几秒内连续调用api会被b站安全机制发现,所以为不放心的朋友添加了间隔秒数配置,两次连续调用Api之间会大于该秒数 "IntervalMethodTypes": "GET,POST", //间隔秒数所针对的HttpMethod,多个用英文逗号隔开,当前有GET和POST两种,可配置如“GET,POST” "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55", //请求B站接口时头部传递的User-Agent diff --git a/src/Ray.BiliBiliTool.DomainService/Interfaces/IMangaDomainService.cs b/src/Ray.BiliBiliTool.DomainService/Interfaces/IMangaDomainService.cs index 028e52156..be3a0b5f4 100644 --- a/src/Ray.BiliBiliTool.DomainService/Interfaces/IMangaDomainService.cs +++ b/src/Ray.BiliBiliTool.DomainService/Interfaces/IMangaDomainService.cs @@ -15,6 +15,11 @@ public interface IMangaDomainService : IDomainService /// void MangaSign(); + /// + /// 阅读 + /// + void MangaRead(); + /// /// 获取大会员权益 /// diff --git a/src/Ray.BiliBiliTool.DomainService/MangaDomainService.cs b/src/Ray.BiliBiliTool.DomainService/MangaDomainService.cs index 2223313d5..a0b53f9eb 100644 --- a/src/Ray.BiliBiliTool.DomainService/MangaDomainService.cs +++ b/src/Ray.BiliBiliTool.DomainService/MangaDomainService.cs @@ -59,6 +59,24 @@ public void MangaSign() } } + /// + /// 漫画阅读 + /// + public void MangaRead() + { + BiliApiResponse response = _mangaApi.ReadManga(_dailyTaskOptions.DevicePlatform).GetAwaiter().GetResult(); + + if (response.Code == 0) + { + _logger.LogInformation("【漫画阅读】成功, 阅读漫画为:堀与宫村"); + } + else + { + _logger.LogInformation("【漫画阅读】失败"); + _logger.LogInformation("【原因】{msg}", response.Message); + } + } + /// /// 获取大会员漫画权益 /// diff --git a/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs b/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs index c38597667..df25e76a3 100644 --- a/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs +++ b/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs @@ -18,17 +18,19 @@ public class VipPrivilegeDomainService : IVipPrivilegeDomainService private readonly IDailyTaskApi _dailyTaskApi; private readonly DailyTaskOptions _dailyTaskOptions; private readonly BiliCookie _biliBiliCookie; + private readonly ReceiveVipPrivilegeOptions _receiveVipPrivilegeOptionsce; public VipPrivilegeDomainService( ILogger logger, IDailyTaskApi dailyTaskApi, BiliCookie biliBiliCookieOptions, - IOptionsMonitor dailyTaskOptions - ) + IOptionsMonitor dailyTaskOptions, + IOptionsMonitor receiveVipPrivilegeOptionsce) { _logger = logger; _dailyTaskApi = dailyTaskApi; _dailyTaskOptions = dailyTaskOptions.CurrentValue; + _receiveVipPrivilegeOptionsce = receiveVipPrivilegeOptionsce.CurrentValue; _biliBiliCookie = biliBiliCookieOptions; } @@ -38,7 +40,7 @@ IOptionsMonitor dailyTaskOptions /// public bool ReceiveVipPrivilege(UserInfo userInfo) { - if (_dailyTaskOptions.DayOfReceiveVipPrivilege == 0) + if (!_receiveVipPrivilegeOptionsce.IsEnable) { _logger.LogInformation("已配置为关闭,跳过"); return false; @@ -52,6 +54,7 @@ public bool ReceiveVipPrivilege(UserInfo userInfo) return false; } + /* int targetDay = _dailyTaskOptions.DayOfReceiveVipPrivilege == -1 ? 1 : _dailyTaskOptions.DayOfReceiveVipPrivilege; @@ -65,6 +68,7 @@ public bool ReceiveVipPrivilege(UserInfo userInfo) _logger.LogInformation("跳过"); return false; } + */ var suc1 = ReceiveVipPrivilege(1); var suc2 = ReceiveVipPrivilege(2);