From 78102cd0b78ee78315b53fa37dbe8eea8319747a Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 10:48:42 +0800
Subject: [PATCH 01/21] =?UTF-8?q?=E4=BF=AE=E5=89=AAPRD=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=EF=BC=8C=E5=8F=AA=E4=BF=9D=E7=95=99=E9=9C=80=E8=A6=81=E8=A6=86?=
=?UTF-8?q?=E7=9B=96=E7=9A=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Ray.BiliBiliTool.Console/appsettings.PRD.json | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Console/appsettings.PRD.json b/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
index 27de745..85df2cc 100644
--- a/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
+++ b/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
@@ -1,11 +1,10 @@
{
"DailyTaskConfig": {
- "SelectLike": true
+ "NumberOfCoins": 3, //每日设定的投币数 [0,5]
+ "SupportUpIds": "39180492" //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置则从排行耪随机获取支持视频
},
"Security": {
- "IsSkipDailyTask": false,
- "IntervalSecondsBetweenRequestApi": 4,
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" //请求B站接口时头部传递的User-Agent
},
From 738c7ae15b24cde498b0c0b3f1a74f04bef82111 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 14:03:24 +0800
Subject: [PATCH 02/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=89=A9=E5=B1=95?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E5=88=B0=E5=B7=A5=E5=85=B7=E7=B1=BB=E5=BA=93?=
=?UTF-8?q?=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ray.BiliBiliTool.sln | 21 ++-
.../Ray.BiliBiliTool.Config.csproj | 1 +
.../AccountDomainService.cs | 25 ++-
.../ChargeDomainService.cs | 4 +-
...sion.cs => ServiceCollectionExtensions.cs} | 2 +-
.../VideoDomainService.cs | 158 +++++++++---------
.../Extensions/DateTimeExtension.cs | 4 +-
.../Extensions/ObjectExtensions.cs | 19 +++
.../Extensions/StringExtensions.cs | 19 +++
.../Extensions/TypeExtensions.cs} | 10 +-
.../Ray.BiliBiliTool.Util.csproj | 10 ++
test/ConfigTest/ConfigTest.csproj | 6 +-
test/DailyTaskTest/DailyTaskTest.csproj | 2 +-
test/DeserializeTest/DeserializeTest.csproj | 2 +-
.../GetLastDayOfMonthTest.csproj | 2 +-
test/LogTest/LogTest.csproj | 2 +-
test/PushTest/PushTest.csproj | 6 +-
.../UnitTest1.cs | 3 +-
test/UtilTest/UtilTest.csproj | 24 +++
19 files changed, 192 insertions(+), 128 deletions(-)
rename src/Ray.BiliBiliTool.DomainService/Extensions/{ServiceCollectionExtension.cs => ServiceCollectionExtensions.cs} (91%)
rename src/{Ray.BiliBiliTool.Infrastructure => Ray.BiliBiliTool.Util}/Extensions/DateTimeExtension.cs (85%)
create mode 100644 src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
create mode 100644 src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs
rename src/{Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtension.cs => Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs} (73%)
create mode 100644 src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
rename test/{GetLastDayOfMonthTest => UtilTest}/UnitTest1.cs (76%)
create mode 100644 test/UtilTest/UtilTest.csproj
diff --git a/Ray.BiliBiliTool.sln b/Ray.BiliBiliTool.sln
index 99fcfbf..fdac25d 100644
--- a/Ray.BiliBiliTool.sln
+++ b/Ray.BiliBiliTool.sln
@@ -25,8 +25,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastru
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DailyTaskTest", "test\DailyTaskTest\DailyTaskTest.csproj", "{ECDB59B8-DD28-4C0D-8145-13629C3EA3B1}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GetLastDayOfMonthTest", "test\GetLastDayOfMonthTest\GetLastDayOfMonthTest.csproj", "{EF77962E-CE7B-4A12-A4D1-58E70126DE0F}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Infrastructure", "src\Ray.BiliBiliTool.Infrastructure\Ray.BiliBiliTool.Infrastructure.csproj", "{7188698C-0A9A-43B2-B3E2-5136B14FDE13}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Application", "src\Ray.BiliBiliTool.Application\Ray.BiliBiliTool.Application.csproj", "{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}"
@@ -46,6 +44,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Util", "src\Ray.BiliBiliTool.Util\Ray.BiliBiliTool.Util.csproj", "{B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UtilTest", "test\UtilTest\UtilTest.csproj", "{6A7B2E22-387E-41FB-BE5B-0252129683D9}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -72,10 +74,6 @@ Global
{ECDB59B8-DD28-4C0D-8145-13629C3EA3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECDB59B8-DD28-4C0D-8145-13629C3EA3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECDB59B8-DD28-4C0D-8145-13629C3EA3B1}.Release|Any CPU.Build.0 = Release|Any CPU
- {EF77962E-CE7B-4A12-A4D1-58E70126DE0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EF77962E-CE7B-4A12-A4D1-58E70126DE0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EF77962E-CE7B-4A12-A4D1-58E70126DE0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EF77962E-CE7B-4A12-A4D1-58E70126DE0F}.Release|Any CPU.Build.0 = Release|Any CPU
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -104,6 +102,14 @@ Global
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -118,7 +124,6 @@ Global
{2039BF6A-5EC4-439C-8D2E-77313075843A} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
{110D3D21-8E9B-45AB-9667-6DA1DB3862AC} = {AF21E067-3307-4E7F-8CE8-C695E6B61876}
{ECDB59B8-DD28-4C0D-8145-13629C3EA3B1} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
- {EF77962E-CE7B-4A12-A4D1-58E70126DE0F} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
{7188698C-0A9A-43B2-B3E2-5136B14FDE13} = {110D3D21-8E9B-45AB-9667-6DA1DB3862AC}
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5} = {98051127-2868-4F5C-9B2C-2150975E05F3}
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A} = {98051127-2868-4F5C-9B2C-2150975E05F3}
@@ -126,6 +131,8 @@ Global
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
+ {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00} = {110D3D21-8E9B-45AB-9667-6DA1DB3862AC}
+ {6A7B2E22-387E-41FB-BE5B-0252129683D9} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {197319DA-1148-4A99-847C-8B270B6A29AB}
diff --git a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
index 69e4ac8..9467385 100644
--- a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
+++ b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
index 1f0e5c8..ad4aea8 100644
--- a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
@@ -1,5 +1,4 @@
using System;
-using System.Text.Json;
using Microsoft.Extensions.Logging;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces;
@@ -19,8 +18,8 @@ public class AccountDomainService : IAccountDomainService
public AccountDomainService(ILogger logger,
IDailyTaskApi dailyTaskApi)
{
- _logger = logger;
- _dailyTaskApi = dailyTaskApi;
+ this._logger = logger;
+ this._dailyTaskApi = dailyTaskApi;
}
///
@@ -29,29 +28,29 @@ public AccountDomainService(ILogger logger,
///
public UseInfo LoginByCookie()
{
- var apiResponse = _dailyTaskApi.LoginByCookie().Result;
+ BiliApiResponse apiResponse = this._dailyTaskApi.LoginByCookie().Result;
if (apiResponse.Code != 0 || !apiResponse.Data.IsLogin)
{
- _logger.LogWarning("登录异常,Cookies可能失效了,请仔细检查Github Secrets中DEDEUSERID、SESSDATA、BILI_JCT三项的值是否正确");
+ this._logger.LogWarning("登录异常,Cookies可能失效了,请仔细检查Github Secrets中DEDEUSERID、SESSDATA、BILI_JCT三项的值是否正确");
return null;
}
UseInfo useInfo = apiResponse.Data;
//用户名模糊处理
- _logger.LogInformation("登录成功,用户名: {0}", useInfo.GetFuzzyUname());
- _logger.LogInformation("硬币余额: {0}", useInfo.Money ?? 0);
+ this._logger.LogInformation("登录成功,用户名: {0}", useInfo.GetFuzzyUname());
+ this._logger.LogInformation("硬币余额: {0}", useInfo.Money ?? 0);
if (useInfo.Level_info.Current_level < 6)
{
- _logger.LogInformation("距离升级到Lv{0}还有: {1}天",
+ this._logger.LogInformation("距离升级到Lv{0}还有: {1}天",
useInfo.Level_info.Current_level + 1,
(useInfo.Level_info.GetNext_expLong() - useInfo.Level_info.Current_exp) / Constants.EveryDayExp);
}
else
{
- _logger.LogInformation("当前等级Lv6,经验值为:{0}", useInfo.Level_info.Current_exp);
+ this._logger.LogInformation("当前等级Lv6,经验值为:{0}", useInfo.Level_info.Current_exp);
}
return useInfo;
@@ -63,8 +62,8 @@ public UseInfo LoginByCookie()
///
public DailyTaskInfo GetDailyTaskStatus()
{
- var result = new DailyTaskInfo();
- var apiResponse = _dailyTaskApi.GetDailyTaskRewardInfo().Result;
+ DailyTaskInfo result = new DailyTaskInfo();
+ BiliApiResponse apiResponse = this._dailyTaskApi.GetDailyTaskRewardInfo().Result;
if (apiResponse.Code == 0)
{
//_logger.LogInformation("请求本日任务完成状态成功");
@@ -72,8 +71,8 @@ public DailyTaskInfo GetDailyTaskStatus()
}
else
{
- _logger.LogWarning("获取今日任务完成状态失败:{result}", JsonSerializer.Serialize(apiResponse));
- result = _dailyTaskApi.GetDailyTaskRewardInfo().Result.Data;
+ this._logger.LogWarning("获取今日任务完成状态失败:{result}", apiResponse.ToJson());
+ result = this._dailyTaskApi.GetDailyTaskRewardInfo().Result.Data;
//todo:偶发性请求失败,再请求一次,这么写很丑陋,待用polly再框架层面实现
}
diff --git a/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs b/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
index 666243f..24b8c43 100644
--- a/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
@@ -1,12 +1,10 @@
using System;
-using System.Text.Json;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces;
using Ray.BiliBiliTool.Config.Options;
using Ray.BiliBiliTool.DomainService.Interfaces;
-using Ray.BiliBiliTool.Infrastructure.Extensions;
namespace Ray.BiliBiliTool.DomainService
{
@@ -82,7 +80,7 @@ public void Charge(UseInfo userInfo)
}
else
{
- this._logger.LogDebug("充电失败了啊 原因:{reason}", JsonSerializer.Serialize(response));
+ this._logger.LogDebug("充电失败了啊 原因:{reason}", response.ToJson());
}
}
else
diff --git a/src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtension.cs b/src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtensions.cs
similarity index 91%
rename from src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtension.cs
rename to src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtensions.cs
index 80c3fd0..9b47d28 100644
--- a/src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtension.cs
+++ b/src/Ray.BiliBiliTool.DomainService/Extensions/ServiceCollectionExtensions.cs
@@ -3,7 +3,7 @@
namespace Ray.BiliBiliTool.DomainService.Extensions
{
- public static class ServiceCollectionExtension
+ public static class ServiceCollectionExtensions
{
public static IServiceCollection AddDomainServices(this IServiceCollection services)
{
diff --git a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
index 35288a2..d59b0a2 100644
--- a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
@@ -33,13 +32,13 @@ public VideoDomainService(ILogger logger,
ICoinDomainService coinDomainService,
IRelationApi relationApi)
{
- _logger = logger;
- _dailyTaskApi = dailyTaskApi;
- _biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
- _dailyTaskOptions = dailyTaskOptions.CurrentValue;
- _accountApi = accountApi;
- _coinDomainService = coinDomainService;
- _relationApi = relationApi;
+ this._logger = logger;
+ this._dailyTaskApi = dailyTaskApi;
+ this._biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
+ this._dailyTaskOptions = dailyTaskOptions.CurrentValue;
+ this._accountApi = accountApi;
+ this._coinDomainService = coinDomainService;
+ this._relationApi = relationApi;
}
///
@@ -48,7 +47,7 @@ public VideoDomainService(ILogger logger,
///
public string GetRandomVideo()
{
- return RegionRanking().Item1;
+ return this.RegionRanking().Item1;
}
public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
@@ -57,18 +56,18 @@ public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
if (!dailyTaskStatus.Watch || !dailyTaskStatus.Share)
{
- targetVideo = GetRandomVideoForWatch();
- _logger.LogInformation("获取随机视频:{title}", targetVideo.Item2);
+ targetVideo = this.GetRandomVideoForWatch();
+ this._logger.LogInformation("获取随机视频:{title}", targetVideo.Item2);
}
if (!dailyTaskStatus.Watch)
- WatchVideo(targetVideo.Item1, targetVideo.Item2);
+ this.WatchVideo(targetVideo.Item1, targetVideo.Item2);
else
- _logger.LogInformation("今天已经观看过了,不需要再看啦");
+ this._logger.LogInformation("今天已经观看过了,不需要再看啦");
if (!dailyTaskStatus.Share)
- ShareVideo(targetVideo.Item1, targetVideo.Item2);
+ this.ShareVideo(targetVideo.Item1, targetVideo.Item2);
else
- _logger.LogInformation("今天已经分享过了,不要再分享啦");
+ this._logger.LogInformation("今天已经分享过了,不要再分享啦");
}
///
@@ -77,15 +76,15 @@ public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
public void WatchVideo(string aid, string title = "")
{
int playedTime = new Random().Next(1, 90);
- var apiResponse = _dailyTaskApi.UploadVideoHeartbeat(aid, playedTime).Result;
+ BiliApiResponse apiResponse = this._dailyTaskApi.UploadVideoHeartbeat(aid, playedTime).Result;
if (apiResponse.Code == 0)
{
- _logger.LogInformation("视频播放成功,已观看到第{playedTime}秒", playedTime);
+ this._logger.LogInformation("视频播放成功,已观看到第{playedTime}秒", playedTime);
}
else
{
- _logger.LogDebug("视频播放失败,原因:{msg}", apiResponse.Message);
+ this._logger.LogDebug("视频播放失败,原因:{msg}", apiResponse.Message);
}
}
@@ -95,16 +94,16 @@ public void WatchVideo(string aid, string title = "")
/// 视频aid
public void ShareVideo(string aid, string title = "")
{
- var apiResponse = _dailyTaskApi.ShareVideo(aid, _biliBiliCookieOptions.BiliJct).Result;
+ BiliApiResponse apiResponse = this._dailyTaskApi.ShareVideo(aid, this._biliBiliCookieOptions.BiliJct).Result;
if (apiResponse.Code == 0)
{
- _logger.LogInformation("视频分享成功");
+ this._logger.LogInformation("视频分享成功");
}
else
{
- _logger.LogInformation("视频分享失败,原因: {msg}", apiResponse.Message);
- _logger.LogDebug("开发者提示: 如果是csrf校验失败请检查BILI_JCT参数是否正确或者失效");
+ this._logger.LogInformation("视频分享失败,原因: {msg}", apiResponse.Message);
+ this._logger.LogDebug("开发者提示: 如果是csrf校验失败请检查BILI_JCT参数是否正确或者失效");
}
}
@@ -115,15 +114,15 @@ public void ShareVideo(string aid, string title = "")
///
public bool CanDonatedCoinsForVideo(string aid)
{
- int multiply = _dailyTaskApi.GetDonatedCoinsForVideo(aid).Result.Data.Multiply;
+ int multiply = this._dailyTaskApi.GetDonatedCoinsForVideo(aid).Result.Data.Multiply;
if (multiply < 2)
{
- _logger.LogDebug("已为Av" + aid + "投过" + multiply + "枚硬币,可以继续投币");
+ this._logger.LogDebug("已为Av" + aid + "投过" + multiply + "枚硬币,可以继续投币");
return true;
}
else
{
- _logger.LogDebug("已为Av" + aid + " 投过2枚硬币,不能再投币啦");
+ this._logger.LogDebug("已为Av" + aid + " 投过2枚硬币,不能再投币啦");
return false;
}
}
@@ -133,24 +132,24 @@ public bool CanDonatedCoinsForVideo(string aid)
///
public void AddCoinsForVideo()
{
- int needCoins = GetNeedDonateCoins(out int alreadyCoins, out int targetCoins);
- _logger.LogInformation("今日已投{already}枚硬币,目标是投{target}枚硬币", alreadyCoins, targetCoins);
+ int needCoins = this.GetNeedDonateCoins(out int alreadyCoins, out int targetCoins);
+ this._logger.LogInformation("今日已投{already}枚硬币,目标是投{target}枚硬币", alreadyCoins, targetCoins);
if (needCoins <= 0)
{
- _logger.LogInformation("已经完成投币任务,今天不需要再投啦");
+ this._logger.LogInformation("已经完成投币任务,今天不需要再投啦");
return;
}
- _logger.LogInformation("还需再投{need}枚硬币", needCoins);
+ this._logger.LogInformation("还需再投{need}枚硬币", needCoins);
//投币前硬币余额
- var coinBalance = _coinDomainService.GetCoinBalance();
- _logger.LogInformation("投币前余额为 : {coinBalance}", coinBalance);
+ decimal coinBalance = this._coinDomainService.GetCoinBalance();
+ this._logger.LogInformation("投币前余额为 : {coinBalance}", coinBalance);
if (coinBalance <= 0)
{
- _logger.LogInformation("因硬币余额不足,今日暂不执行投币任务");
+ this._logger.LogInformation("因硬币余额不足,今日暂不执行投币任务");
return;
}
@@ -158,7 +157,7 @@ public void AddCoinsForVideo()
if (coinBalance < needCoins)
{
int.TryParse(decimal.Truncate(coinBalance).ToString(), out needCoins);
- _logger.LogInformation("因硬币余额不足,目标投币数调整为: {needCoins}", needCoins);
+ this._logger.LogInformation("因硬币余额不足,目标投币数调整为: {needCoins}", needCoins);
}
int successCoins = 0;
@@ -167,17 +166,17 @@ public void AddCoinsForVideo()
{
tryCount++;
- var video = TryGetCanDonatedVideo();
+ Tuple video = this.TryGetCanDonatedVideo();
if (video == null)
{
if (tryCount <= 10) continue;
- _logger.LogInformation("尝试投币次数超过10次,投币任务终止");
+ this._logger.LogInformation("尝试投币次数超过10次,投币任务终止");
break;
}
- _logger.LogDebug("正在为视频“{title}”投币", video.Item2);
+ this._logger.LogDebug("正在为视频“{title}”投币", video.Item2);
- bool isSuccess = AddCoinsForVideo(video.Item1, 1, _dailyTaskOptions.SelectLike, video.Item2);
+ bool isSuccess = this.AddCoinsForVideo(video.Item1, 1, this._dailyTaskOptions.SelectLike, video.Item2);
if (isSuccess)
{
successCoins++;
@@ -185,12 +184,12 @@ public void AddCoinsForVideo()
if (tryCount > 10)
{
- _logger.LogInformation("尝试投币次数超过10次,投币任务终止");
+ this._logger.LogInformation("尝试投币次数超过10次,投币任务终止");
break;
}
}
- _logger.LogInformation("投币任务完成,余额为: {money}", _accountApi.GetCoinBalance().Result.Data.Money);
+ this._logger.LogInformation("投币任务完成,余额为: {money}", this._accountApi.GetCoinBalance().Result.Data.Money);
}
///
@@ -202,24 +201,23 @@ public void AddCoinsForVideo()
/// 是否投币成功
public bool AddCoinsForVideo(string aid, int multiply, bool select_like, string title = "")
{
- var result = _dailyTaskApi.AddCoinForVideo(aid, multiply, select_like ? 1 : 0, _biliBiliCookieOptions.BiliJct).Result;
+ BiliApiResponse result = this._dailyTaskApi.AddCoinForVideo(aid, multiply, select_like ? 1 : 0, this._biliBiliCookieOptions.BiliJct).Result;
if (result.Code == 0)
{
- _logger.LogInformation("为“{title}”投币成功", title);
+ this._logger.LogInformation("为“{title}”投币成功", title);
return true;
}
if (result.Code == -111)
{
string errorMsg = $"投币异常,Cookie配置项[BiliJct]错误或已过期,请检查并更新。接口返回:{result.Message}";
- _logger.LogError(errorMsg);
+ this._logger.LogError(errorMsg);
throw new Exception(errorMsg);
}
-
else
{
- _logger.LogInformation("为“{title}”投币失败,原因:{msg}", title, result.Message);
+ this._logger.LogInformation("为“{title}”投币失败,原因:{msg}", title, result.Message);
return false;
}
}
@@ -233,22 +231,22 @@ public Tuple TryGetCanDonatedVideo()
Tuple result = null;
//如果配置upID,则从up中随机尝试获取10次
- if (_dailyTaskOptions.SupportUpIdList.Count > 0)
+ if (this._dailyTaskOptions.SupportUpIdList.Count > 0)
{
- result = TryGetCanDonatedVideoByUp(10);
+ result = this.TryGetCanDonatedVideoByUp(10);
if (result != null) return result;
}
//然后从特别关注列表尝试获取10次
- result = TryGetCanDonatedVideoBySpecialUps(10);
+ result = this.TryGetCanDonatedVideoBySpecialUps(10);
if (result != null) return result;
//然后从普通关注列表获取10次
- result = TryGetCanDonatedVideoByFollowingUps(10);
+ result = this.TryGetCanDonatedVideoByFollowingUps(10);
if (result != null) return result;
//最后从排行榜尝试5次
- result = TryGetNotDonatedVideoByRegion(5);
+ result = this.TryGetNotDonatedVideoByRegion(5);
return result;
}
@@ -261,9 +259,9 @@ public Tuple TryGetCanDonatedVideo()
public Tuple TryGetCanDonatedVideoByUp(int tryCount)
{
//是否配置了up主
- if (_dailyTaskOptions.SupportUpIdList.Count == 0) return null;
+ if (this._dailyTaskOptions.SupportUpIdList.Count == 0) return null;
- return TryGetCanDonateVideoByUps(_dailyTaskOptions.SupportUpIdList, tryCount); ;
+ return this.TryGetCanDonateVideoByUps(this._dailyTaskOptions.SupportUpIdList, tryCount); ;
}
///
@@ -277,10 +275,10 @@ public Tuple TryGetCanDonatedVideoBySpecialUps(int tryCount)
Dictionary videoCountDic = new Dictionary();
//获取特别关注列表
- var specials = _relationApi.GetSpecialFollowings().Result;
+ BiliApiResponse> specials = this._relationApi.GetSpecialFollowings().Result;
if (specials.Data == null || specials.Data.Count == 0) return null;
- return TryGetCanDonateVideoByUps(specials.Data.Select(x => x.Mid).ToList(), tryCount);
+ return this.TryGetCanDonateVideoByUps(specials.Data.Select(x => x.Mid).ToList(), tryCount);
}
///
@@ -294,10 +292,10 @@ public Tuple TryGetCanDonatedVideoByFollowingUps(int tryCount)
Dictionary videoCountDic = new Dictionary();
//获取特别关注列表
- var result = _relationApi.GetFollowings(_biliBiliCookieOptions.UserId).Result;
+ BiliApiResponse result = this._relationApi.GetFollowings(this._biliBiliCookieOptions.UserId).Result;
if (result.Data.Total == 0) return null;
- return TryGetCanDonateVideoByUps(result.Data.List.Select(x => x.Mid).ToList(), tryCount);
+ return this.TryGetCanDonateVideoByUps(result.Data.List.Select(x => x.Mid).ToList(), tryCount);
}
///
@@ -315,19 +313,19 @@ private Tuple TryGetCanDonateVideoByUps(List upIds, int tr
if (upIds == null || upIds.Count == 0) return null;
//尝试tryCount次
- for (int i = 0; i < tryCount; i++)
+ for (int i = 0 ; i < tryCount ; i++)
{
//获取随机Up主Id
long randomUpId = upIds[new Random().Next(0, upIds.Count)];
if (!videoCountDic.TryGetValue(randomUpId, out int videoCount))
{
- videoCount = GetVidoeCountOfUp(randomUpId);
+ videoCount = this.GetVidoeCountOfUp(randomUpId);
videoCountDic.Add(randomUpId, videoCount);
}
if (videoCount == 0) continue;
- UpVideoInfo videoInfo = GetRandomVideoOfUp(randomUpId, videoCount);
- if (!CanDonatedCoinsForVideo(videoInfo.Aid.ToString())) continue;
+ UpVideoInfo videoInfo = this.GetRandomVideoOfUp(randomUpId, videoCount);
+ if (!this.CanDonatedCoinsForVideo(videoInfo.Aid.ToString())) continue;
return Tuple.Create(videoInfo.Aid.ToString(), videoInfo.Title);
}
@@ -343,10 +341,10 @@ public Tuple TryGetNotDonatedVideoByRegion(int tryCount)
{
if (tryCount <= 0) return null;
- for (int i = 0; i < tryCount; i++)
+ for (int i = 0 ; i < tryCount ; i++)
{
- var video = RegionRanking();
- if (!CanDonatedCoinsForVideo(video.Item1)) continue;
+ Tuple video = this.RegionRanking();
+ if (!this.CanDonatedCoinsForVideo(video.Item1)) continue;
return video;
}
@@ -355,19 +353,19 @@ public Tuple TryGetNotDonatedVideoByRegion(int tryCount)
public List GetRandomVideosOfUps()
{
- var re = new List();
+ List re = new List();
- int configUpsCount = _dailyTaskOptions.SupportUpIdList.Count;
+ int configUpsCount = this._dailyTaskOptions.SupportUpIdList.Count;
if (configUpsCount == 0) return re;
- long upId = _dailyTaskOptions.SupportUpIdList[new Random().Next(0, configUpsCount)];
- int count = GetVidoeCountOfUp(upId);
+ long upId = this._dailyTaskOptions.SupportUpIdList[new Random().Next(0, configUpsCount)];
+ int count = this.GetVidoeCountOfUp(upId);
- var targetNum = 10;
+ int targetNum = 10;
if (count < 10) targetNum = count;
- for (int i = 0; i < targetNum; i++)
+ for (int i = 0 ; i < targetNum ; i++)
{
- UpVideoInfo videoInfo = GetRandomVideoOfUp(upId, count);
+ UpVideoInfo videoInfo = this.GetRandomVideoOfUp(upId, count);
if (re.Count(x => x.Aid == videoInfo.Aid) == 0) re.Add(videoInfo);
}
@@ -376,8 +374,8 @@ public List GetRandomVideosOfUps()
private UpVideoInfo GetRandomVideoOfUp(long upId, int total)
{
- var pageNum = new Random().Next(1, total + 1);
- BiliApiResponse re = _dailyTaskApi.SearchVideosByUpId(upId, 1, pageNum).Result;
+ int pageNum = new Random().Next(1, total + 1);
+ BiliApiResponse re = this._dailyTaskApi.SearchVideosByUpId(upId, 1, pageNum).Result;
if (re.Code != 0)
{
@@ -394,7 +392,7 @@ private UpVideoInfo GetRandomVideoOfUp(long upId, int total)
///
private int GetVidoeCountOfUp(long upId)
{
- BiliApiResponse re = _dailyTaskApi.SearchVideosByUpId(upId, 1, 1).Result;
+ BiliApiResponse re = this._dailyTaskApi.SearchVideosByUpId(upId, 1, 1).Result;
if (re.Code != 0)
{
throw new Exception(re.Message);
@@ -403,7 +401,6 @@ private int GetVidoeCountOfUp(long upId)
return re.Data.Page.Count;
}
-
#region private
///
@@ -417,10 +414,10 @@ private Tuple RegionRanking()
int[] arr = { 1, 3, 4, 5, 160, 22, 119 };
int rid = arr[new Random().Next(arr.Length - 1)];
- var apiResponse = _dailyTaskApi.GetRegionRankingVideos(rid, 3).Result;
+ BiliApiResponse> apiResponse = this._dailyTaskApi.GetRegionRankingVideos(rid, 3).Result;
//_logger.LogInformation("获取分区:{rid}的{day}日top10榜单成功", rid, day);
- var data = apiResponse.Data[new Random().Next(apiResponse.Data.Count)];
+ RankingInfo data = apiResponse.Data[new Random().Next(apiResponse.Data.Count)];
return Tuple.Create(data.Aid, data.Title);
}
@@ -436,9 +433,9 @@ private int GetNeedDonateCoins(out int alreadyCoins, out int targetCoins)
int needCoins = 0;
//获取自定义配置投币数
- int configCoins = _dailyTaskOptions.NumberOfCoins;
+ int configCoins = this._dailyTaskOptions.NumberOfCoins;
//已投的硬币
- alreadyCoins = _coinDomainService.GetDonatedCoins();
+ alreadyCoins = this._coinDomainService.GetDonatedCoins();
//目标
targetCoins = configCoins > Constants.MaxNumberOfDonateCoins
? Constants.MaxNumberOfDonateCoins
@@ -453,12 +450,13 @@ private int GetNeedDonateCoins(out int alreadyCoins, out int targetCoins)
private Tuple GetRandomVideoForWatch()
{
- List list = GetRandomVideosOfUps();
+ List list = this.GetRandomVideosOfUps();
if (list.Count > 0)
return Tuple.Create(list.First().Aid.ToString(), list.First().Title);
- return RegionRanking();
+ return this.RegionRanking();
}
- #endregion
+
+ #endregion private
}
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/Extensions/DateTimeExtension.cs b/src/Ray.BiliBiliTool.Util/Extensions/DateTimeExtension.cs
similarity index 85%
rename from src/Ray.BiliBiliTool.Infrastructure/Extensions/DateTimeExtension.cs
rename to src/Ray.BiliBiliTool.Util/Extensions/DateTimeExtension.cs
index 8e99f9b..1a6f84b 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/Extensions/DateTimeExtension.cs
+++ b/src/Ray.BiliBiliTool.Util/Extensions/DateTimeExtension.cs
@@ -1,6 +1,4 @@
-using System;
-
-namespace Ray.BiliBiliTool.Infrastructure.Extensions
+namespace System
{
public static class DateTimeExtension
{
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs b/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
new file mode 100644
index 0000000..fa9b716
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
@@ -0,0 +1,19 @@
+using Newtonsoft.Json;
+
+namespace System
+{
+ public static class ObjectExtensions
+ {
+ public static string ToJson(this T obj, JsonSerializerSettings settings = null)
+ {
+ if (settings == null)
+ {
+ return JsonConvert.SerializeObject(obj);
+ }
+ else
+ {
+ return JsonConvert.SerializeObject(obj, settings);
+ }
+ }
+ }
+}
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs b/src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs
new file mode 100644
index 0000000..95b88f5
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs
@@ -0,0 +1,19 @@
+using Newtonsoft.Json;
+
+namespace System
+{
+ public static class StringExtensions
+ {
+ public static T ToObject(this string str, JsonSerializerSettings settings = null)
+ {
+ if (settings == null)
+ {
+ return JsonConvert.DeserializeObject(str);
+ }
+ else
+ {
+ return JsonConvert.DeserializeObject(str, settings);
+ }
+ }
+ }
+}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtension.cs b/src/Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs
similarity index 73%
rename from src/Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtension.cs
rename to src/Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs
index 1e1fc00..53dba12 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtension.cs
+++ b/src/Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs
@@ -1,13 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
+using System.ComponentModel;
using System.Linq;
-using System.Reflection;
-using System.Text;
-namespace Ray.BiliBiliTool.Infrastructure.Extensions
+namespace System
{
- public static class ObjectExtension
+ public static class TypeExtensions
{
///
/// 获取属性的Description
diff --git a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
new file mode 100644
index 0000000..d1f91bb
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
@@ -0,0 +1,10 @@
+
+
+
+ netstandard2.0
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/ConfigTest/ConfigTest.csproj b/test/ConfigTest/ConfigTest.csproj
index 82b1892..0516ab2 100644
--- a/test/ConfigTest/ConfigTest.csproj
+++ b/test/ConfigTest/ConfigTest.csproj
@@ -2,12 +2,11 @@
net5.0
-
false
-
+
all
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/test/DailyTaskTest/DailyTaskTest.csproj b/test/DailyTaskTest/DailyTaskTest.csproj
index 010b45d..f0d7307 100644
--- a/test/DailyTaskTest/DailyTaskTest.csproj
+++ b/test/DailyTaskTest/DailyTaskTest.csproj
@@ -7,7 +7,7 @@
-
+
all
diff --git a/test/DeserializeTest/DeserializeTest.csproj b/test/DeserializeTest/DeserializeTest.csproj
index 23c1b9c..6971367 100644
--- a/test/DeserializeTest/DeserializeTest.csproj
+++ b/test/DeserializeTest/DeserializeTest.csproj
@@ -7,7 +7,7 @@
-
+
all
diff --git a/test/GetLastDayOfMonthTest/GetLastDayOfMonthTest.csproj b/test/GetLastDayOfMonthTest/GetLastDayOfMonthTest.csproj
index 82b1892..d1e0f2e 100644
--- a/test/GetLastDayOfMonthTest/GetLastDayOfMonthTest.csproj
+++ b/test/GetLastDayOfMonthTest/GetLastDayOfMonthTest.csproj
@@ -7,7 +7,7 @@
-
+
all
diff --git a/test/LogTest/LogTest.csproj b/test/LogTest/LogTest.csproj
index 82b1892..d1e0f2e 100644
--- a/test/LogTest/LogTest.csproj
+++ b/test/LogTest/LogTest.csproj
@@ -7,7 +7,7 @@
-
+
all
diff --git a/test/PushTest/PushTest.csproj b/test/PushTest/PushTest.csproj
index 82b1892..0516ab2 100644
--- a/test/PushTest/PushTest.csproj
+++ b/test/PushTest/PushTest.csproj
@@ -2,12 +2,11 @@
net5.0
-
false
-
+
all
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/test/GetLastDayOfMonthTest/UnitTest1.cs b/test/UtilTest/UnitTest1.cs
similarity index 76%
rename from test/GetLastDayOfMonthTest/UnitTest1.cs
rename to test/UtilTest/UnitTest1.cs
index 191fa52..05e92ed 100644
--- a/test/GetLastDayOfMonthTest/UnitTest1.cs
+++ b/test/UtilTest/UnitTest1.cs
@@ -1,7 +1,6 @@
using System;
using System.Diagnostics;
using Ray.BiliBiliTool.Console;
-using Ray.BiliBiliTool.Infrastructure.Extensions;
using Xunit;
namespace GetLastDayOfMonthTest
@@ -13,7 +12,7 @@ public void Test1()
{
Program.PreWorks(new string[] { });
- var dateTime = DateTime.Now.LastDayOfMonth();
+ DateTime dateTime = DateTime.Now.LastDayOfMonth();
Debug.WriteLine(dateTime);
Assert.True(true);
diff --git a/test/UtilTest/UtilTest.csproj b/test/UtilTest/UtilTest.csproj
new file mode 100644
index 0000000..a9a8296
--- /dev/null
+++ b/test/UtilTest/UtilTest.csproj
@@ -0,0 +1,24 @@
+
+
+
+ net5.0
+ false
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
\ No newline at end of file
From 09a72c916e38f62c802f16dfeefe29bf86207397 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 14:04:56 +0800
Subject: [PATCH 03/21] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=99=E6=B3=95?=
=?UTF-8?q?=EF=BC=8C=E5=87=8F=E5=B0=91=E8=AF=BB=E5=8F=96next=5Fexp?=
=?UTF-8?q?=E7=9A=84=E5=BC=BA=E8=BD=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BiliBiliAgent/Dtos/UseInfo.cs | 51 ++++++++++++++-----
1 file changed, 38 insertions(+), 13 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
index c75fdd8..b36ce5a 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
@@ -7,8 +7,14 @@ namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos
///
public class UseInfo
{
+ ///
+ /// 是否登录
+ ///
public bool IsLogin { get; set; }
+ ///
+ /// 等级信息
+ ///
public LevelInfo Level_info { get; set; }
public decimal? Money { get; set; }
@@ -17,6 +23,10 @@ public class UseInfo
public Wallet Wallet { get; set; }
+ ///
+ /// 会员状态
+ /// 只有VipStatus为1的时候获取到VipType才是有效的
+ ///
public int VipStatus { get; set; }
public int VipType { get; set; }//todo:是否可以改为枚举
@@ -28,11 +38,12 @@ public class UseInfo
public string GetFuzzyUname()
{
StringBuilder sb = new StringBuilder();
- int s1 = Uname.Length / 2, s2 = (s1 + 1) / 2;
- for (int i = 0; i < Uname.Length; i++)
+ int s1 = this.Uname.Length / 2;
+ int s2 = (s1 + 1) / 2;
+ for (int i = 0 ; i < this.Uname.Length ; i++)
{
if (i >= s2 && i < s1 + s2) sb.Append("*");
- else sb.Append(Uname[i]);
+ else sb.Append(this.Uname[i]);
}
return sb.ToString();
@@ -41,9 +52,11 @@ public string GetFuzzyUname()
///
/// 返回会员类型
///
- /// 0:无会员(会员过期、当前不是会员);
- /// 1:月会员
- /// 2:年会员
+ ///
+ /// 0:无会员(会员过期、当前不是会员)
+ /// 1:月会员
+ /// 2:年会员
+ ///
public int GetVipType()
{
if (this.VipStatus == 1)
@@ -63,6 +76,9 @@ public int GetVipType()
///
public class LevelInfo
{
+ ///
+ /// 当前等级
+ ///
public int Current_level { get; set; }
//public long Current_min { get; set; }
@@ -72,21 +88,30 @@ public class LevelInfo
///
public long Current_exp { get; set; }
- private string _next_exp;
+ private long _next_exp;
+
///
- /// 下一升级经验值(因为Lv6的大佬会返回字符串“--”,所以这里只能用string接收)
+ /// 下一升级经验值(因为Lv6的带佬会返回字符串“--”,所以这里只能用string接收)
///
public object Next_exp
{
- get { return _next_exp; }
- set { _next_exp = value.ToString(); }
+ get { return this._next_exp; }
+ set
+ {
+ bool isLong = long.TryParse(this.Next_exp.ToString(), out long exp);
+ if (isLong) { this._next_exp = exp; }
+ else this._next_exp = long.MinValue;
+ }
}
+ ///
+ /// 获取下一升级经验值
+ ///
+ ///
public long GetNext_expLong()
{
- if (Current_level == 6) return long.MaxValue;
- if (long.TryParse(Next_exp.ToString(), out long result)) return result;
- return long.MinValue;
+ if (this.Current_level == 6) return long.MaxValue;
+ else return this._next_exp;
}
}
From 3f674ebe6f6406d7cd8a7225707f1ef00e492d28 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 14:05:15 +0800
Subject: [PATCH 04/21] =?UTF-8?q?=E6=8C=89=E9=A2=86=E5=8F=96=E5=88=86?=
=?UTF-8?q?=E7=A6=BB=E4=B8=80=E9=83=A8=E5=88=86=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BiliBiliAgent/Interfaces/IDailyTaskApi.cs | 75 +------------------
.../BiliBiliAgent/Interfaces/IUserInfoApi.cs | 43 +++++++++++
.../Interfaces/IUserOperationApi.cs | 68 +++++++++++++++++
3 files changed, 112 insertions(+), 74 deletions(-)
create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
index 0e6db33..a09c9f6 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
@@ -8,24 +8,10 @@ namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
///
/// BiliBili每日任务相关接口
///
- public interface IDailyTaskApi : IBiliBiliApi
+ public interface IDailyTaskApi : IBiliBiliApi, IUserInfoApi, IUserOperationApi
{
//todo:考虑根据领域拆分该接口
- ///
- /// 登录
- ///
- ///
- [Get("/x/web-interface/nav")]
- Task> LoginByCookie();
-
- ///
- /// 获取每日任务的完成情况
- ///
- ///
- [Get("/x/member/web/exp/reward")]
- Task> GetDailyTaskRewardInfo();
-
///
/// 获取某分区下X日内排行榜
///
@@ -35,58 +21,6 @@ public interface IDailyTaskApi : IBiliBiliApi
[Get("/x/web-interface/ranking/region?rid={rid}&day={day}")]
Task>> GetRegionRankingVideos(int rid, int day);
- ///
- /// 上传视频观看进度
- ///
- ///
- [Post("/x/click-interface/web/heartbeat?aid={aid}&played_time={playedTime}")]
- Task UploadVideoHeartbeat(string aid, int playedTime);
-
- ///
- /// 分享视频
- ///
- ///
- ///
- ///
- [Post("/x/web-interface/share/add?aid={aid}&csrf={csrf}")]
- Task ShareVideo(string aid, string csrf);
-
- ///
- /// 分享视频
- ///
- ///
- ///
- [Get("/x/web-interface/archive/coins?aid={aid}")]
- Task> GetDonatedCoinsForVideo(string aid);
-
- [Post("/x/web-interface/coin/add?aid={aid}&multiply={multiply}&select_like={select_like}&cross_domain=true&csrf={csrf}")]
- Task AddCoinForVideo(string aid, int multiply, int select_like, string csrf);
-
- [Post("/x/vip/privilege/receive?type={type}&csrf={csrf}")]
- Task ReceiveVipPrivilege(int type, string csrf);
-
- ///
- /// 充电
- ///
- ///
- ///
- ///
- ///
- ///
- [Post("/x/ugcpay/trade/elec/pay/quick?elec_num={elec_num}&up_mid={up_mid}&otype=up&oid={oid}&csrf={csrf}")]
- Task> Charge(decimal elec_num, string up_mid, string oid, string csrf);
-
- ///
- /// 充电
- ///
- ///
- ///
- ///
- ///
- ///
- [Post("/x/ugcpay/trade/elec/message?order_id={order_id}&message={message}&csrf={csrf}")]
- Task> ChargeComment(string order_id, string message, string csrf);
-
///
/// 获取指定Up的视频
///
@@ -106,12 +40,5 @@ public interface IDailyTaskApi : IBiliBiliApi
///
[Get("/x/space/arc/search?mid={upId}&ps={pageSize}&tid=0&pn={pageNumber}&keyword={keyword}&order=pubdate&jsonp=jsonp")]
Task> SearchVideosByUpId(long upId, int pageSize = 20, int pageNumber = 1, string keyword = "");
-
- ///
- /// 获取通过投币已获取的经验值
- ///
- ///
- [Get("/x/web-interface/coin/today/exp")]
- Task> GetDonateCoinExp();
}
}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
new file mode 100644
index 0000000..37bebcf
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
@@ -0,0 +1,43 @@
+using System.Threading.Tasks;
+using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
+using Refit;
+
+namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
+{
+ ///
+ /// 用户信息接口API
+ ///
+ public interface IUserInfoApi
+ {
+ ///
+ /// 获取每日任务的完成情况
+ ///
+ ///
+ [Get("/x/member/web/exp/reward")]
+ Task> GetDailyTaskRewardInfo();
+
+ ///
+ /// 获取通过投币已获取的经验值
+ ///
+ ///
+ [Get("/x/web-interface/coin/today/exp")]
+ Task> GetDonateCoinExp();
+
+ ///
+ /// 获取VIP特权
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/vip/privilege/receive?type={type}&csrf={csrf}")]
+ Task ReceiveVipPrivilege(int type, string csrf);
+
+ ///
+ /// 获取当前用户对视频的投币信息
+ ///
+ ///
+ ///
+ [Get("/x/web-interface/archive/coins?aid={aid}")]
+ Task> GetDonatedCoinsForVideo(string aid);
+ }
+}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
new file mode 100644
index 0000000..fd0ee12
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
@@ -0,0 +1,68 @@
+using System.Threading.Tasks;
+using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
+using Refit;
+
+namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
+{
+ ///
+ /// 用户操作API
+ ///
+ public interface IUserOperationApi
+ {
+ ///
+ /// 登录
+ ///
+ ///
+ [Get("/x/web-interface/nav")]
+ Task> LoginByCookie();
+
+ ///
+ /// 分享视频
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/web-interface/share/add?aid={aid}&csrf={csrf}")]
+ Task ShareVideo(string aid, string csrf);
+
+ ///
+ /// 上传视频观看进度
+ ///
+ ///
+ [Post("/x/click-interface/web/heartbeat?aid={aid}&played_time={playedTime}")]
+ Task UploadVideoHeartbeat(string aid, int playedTime);
+
+ ///
+ /// 充电
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/ugcpay/trade/elec/pay/quick?elec_num={elec_num}&up_mid={up_mid}&otype=up&oid={oid}&csrf={csrf}")]
+ Task> Charge(decimal elec_num, string up_mid, string oid, string csrf);
+
+ ///
+ /// 充电后留言
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/ugcpay/trade/elec/message?order_id={order_id}&message={message}&csrf={csrf}")]
+ Task> ChargeComment(string order_id, string message, string csrf);
+
+ ///
+ /// 为视频投币
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/web-interface/coin/add?aid={aid}&multiply={multiply}&select_like={select_like}&cross_domain=true&csrf={csrf}")]
+ Task AddCoinForVideo(string aid, int multiply, int select_like, string csrf);
+ }
+}
From c058999a530798299a782d85ce4cc3feab0ea15c Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 14:05:33 +0800
Subject: [PATCH 05/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=89=A9=E5=B1=95?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E5=88=B0=E5=B7=A5=E5=85=B7=E7=B1=BB=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Options/BiliBiliCookieOptions.cs | 34 ++-
.../JsonSerializerOptionsBuilder.cs | 62 +++--
.../JsonSerializerOptionsBuilderExtesions.cs | 86 +++++++
.../Ray.BiliBiliTool.Infrastructure.csproj | 6 +-
.../Extensions/IDictionaryExtensions.cs | 0
.../Extensions/KeyValuePairExtensions.cs | 0
.../Extensions/ObjectExtensions.cs | 219 +++++++++++++++++-
.../Ray.BiliBiliTool.Util.csproj | 2 +-
8 files changed, 372 insertions(+), 37 deletions(-)
create mode 100644 src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
rename src/{Ray.BiliBiliTool.Config => Ray.BiliBiliTool.Util}/Extensions/IDictionaryExtensions.cs (100%)
rename src/{Ray.BiliBiliTool.Config => Ray.BiliBiliTool.Util}/Extensions/KeyValuePairExtensions.cs (100%)
diff --git a/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs b/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
index 2d36f43..03bd815 100644
--- a/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
+++ b/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
@@ -2,7 +2,6 @@
using System.ComponentModel;
using Microsoft.Extensions.Logging;
using Ray.BiliBiliTool.Infrastructure;
-using Ray.BiliBiliTool.Infrastructure.Extensions;
namespace Ray.BiliBiliTool.Config.Options
{
@@ -21,10 +20,10 @@ public class BiliBiliCookieOptions
public string UserId
{
get =>
- !string.IsNullOrWhiteSpace(_userId)
- ? _userId
+ !string.IsNullOrWhiteSpace(this._userId)
+ ? this._userId
: RayConfiguration.Root["BiliBiliCookie:DedeUserID"];//为了兼容 GitHub Secrets 经常会被填错
- set => _userId = value;
+ set => this._userId = value;
}
///
@@ -40,10 +39,10 @@ public string UserId
public string BiliJct
{
get =>
- !string.IsNullOrWhiteSpace(_biliJct)
- ? _biliJct
+ !string.IsNullOrWhiteSpace(this._biliJct)
+ ? this._biliJct
: RayConfiguration.Root["BiliBiliCookie:Bili_jct"];//为了兼容 GitHub Secrets 经常会被填错
- set => _biliJct = value;
+ set => this._biliJct = value;
}
///
@@ -58,15 +57,15 @@ public bool Check(ILogger logger)
string tips = "检测到已配置了[{0}],已兼容使用[{1}]";
//UserId为空,抛异常
- if (string.IsNullOrWhiteSpace(UserId))
+ if (string.IsNullOrWhiteSpace(this.UserId))
{
- logger.LogWarning(msg, nameof(UserId), GetPropertyDescription(nameof(UserId)));
+ logger.LogWarning(msg, nameof(this.UserId), this.GetPropertyDescription(nameof(this.UserId)));
result = false;
}
- else if (!long.TryParse(UserId, out long uid))//不为空,但不能转换为long,警告
+ else if (!long.TryParse(this.UserId, out long uid))//不为空,但不能转换为long,警告
{
- logger.LogWarning("UserId:{uid} 不能转换为long型,请确认配置的是正确的Cookie值", UserId);
+ logger.LogWarning("UserId:{uid} 不能转换为long型,请确认配置的是正确的Cookie值", this.UserId);
}
//UserId为空,但DedeUserID有值,兼容使用
if (string.IsNullOrWhiteSpace(RayConfiguration.Root["BiliBiliCookie:UserID"])
@@ -76,16 +75,16 @@ public bool Check(ILogger logger)
}
//SessData为空,抛异常
- if (string.IsNullOrWhiteSpace(SessData))
+ if (string.IsNullOrWhiteSpace(this.SessData))
{
- logger.LogWarning(msg, nameof(SessData), GetPropertyDescription(nameof(SessData)));
+ logger.LogWarning(msg, nameof(this.SessData), this.GetPropertyDescription(nameof(this.SessData)));
result = false;
}
//BiliJct为空,抛异常
- if (string.IsNullOrWhiteSpace(BiliJct))
+ if (string.IsNullOrWhiteSpace(this.BiliJct))
{
- logger.LogWarning(msg, nameof(BiliJct), GetPropertyDescription(nameof(BiliJct)));
+ logger.LogWarning(msg, nameof(this.BiliJct), this.GetPropertyDescription(nameof(this.BiliJct)));
result = false;
}
//BiliJct为空,但Bili_jct有值,兼容使用
@@ -98,15 +97,14 @@ public bool Check(ILogger logger)
return result;
}
-
public override string ToString()
{
- return $"{GetPropertyDescription(nameof(UserId))}={UserId}; {GetPropertyDescription(nameof(SessData))}={SessData}; {GetPropertyDescription(nameof(BiliJct))}={BiliJct};";
+ return $"{this.GetPropertyDescription(nameof(this.UserId))}={this.UserId}; {this.GetPropertyDescription(nameof(this.SessData))}={this.SessData}; {this.GetPropertyDescription(nameof(this.BiliJct))}={this.BiliJct};";
}
private string GetPropertyDescription(string propertyName)
{
- return GetType().GetPropertyDescription(propertyName);
+ return this.GetType().GetPropertyDescription(propertyName);
}
}
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
index 8356092..9cdcdb8 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
+++ b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
@@ -1,4 +1,6 @@
using System;
+using System.Collections.Generic;
+using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
@@ -7,22 +9,12 @@ namespace Ray.BiliBiliTool.Infrastructure
///
/// System.Text.Json的序列化OptionsBuilder
///
- public class JsonSerializerOptionsBuilder
+ public sealed class JsonSerializerOptionsBuilder
{
static JsonSerializerOptionsBuilder()
{
- /*
- * 全局设置默认的序列化配置:驼峰式、支持中文
- * 目前System.Text.Json不支持设置默认Options,这里用反射实现了,以后.net5中可能会新增默认options的接口
- * 详情可参考issue: https://github.com/dotnet/runtime/issues/31094
- */
- JsonSerializerOptions defaultJsonSerializerOptions = (JsonSerializerOptions)typeof(JsonSerializerOptions)
- .GetField("s_defaultOptions", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)
- .GetValue(null);
- defaultJsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
- defaultJsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All);
-
- DefaultOptions = defaultJsonSerializerOptions;
+ DefaultOptions = JsonSerializerOptionsBuilder.Create()
+ .GetOrBuildDefaultOptions();
}
///
@@ -30,11 +22,49 @@ static JsonSerializerOptionsBuilder()
///
public static JsonSerializerOptions DefaultOptions;
- public static JsonSerializerOptions Builder(Action build)
+ public List> buildActionList;
+
+ private JsonSerializerOptionsBuilder()
+ {
+ this.buildActionList = new List>();
+ }
+
+ public static JsonSerializerOptionsBuilder Create()
+ {
+ return new JsonSerializerOptionsBuilder();
+ }
+
+ public JsonSerializerOptions Build()
{
- JsonSerializerOptions options = new JsonSerializerOptions();
- build(options);
+ JsonSerializerOptions options = new();//这里没有使用 JsonSerializerDefaults.General 避免后续版本更新后设置改变
+
+ foreach (Action item in this.buildActionList)
+ {
+ item?.Invoke(options);
+ }
+
return options;
}
+
+ //适合net5.0以下的情况
+ private static JsonSerializerOptions GetJsonOptionsByReflection()
+ {
+ /*
+ * 全局设置默认的序列化配置:驼峰式、支持中文
+ * 目前System.Text.Json不支持设置默认Options,这里用反射实现了,以后.net5中可能会新增默认options的接口
+ * 详情可参考issue: https://github.com/dotnet/runtime/issues/31094
+ */
+
+ JsonSerializerOptions jsonSerializerOptions = (JsonSerializerOptions)typeof(JsonSerializerOptions)
+ .GetField(
+ "s_defaultOptions",
+ System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)
+ .GetValue(null);
+
+ jsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
+ jsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+
+ return jsonSerializerOptions;
+ }
}
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
new file mode 100644
index 0000000..4dac523
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Encodings.Web;
+using System.Text.Json;
+using System.Text.Unicode;
+
+namespace Ray.BiliBiliTool.Infrastructure
+{
+ public static class JsonSerializerOptionsBuilderExtesions
+ {
+ private static JsonSerializerOptionsBuilder SetActionBase(
+ [NotNull] JsonSerializerOptionsBuilder builder,
+ [NotNull] Action action)
+ {
+ builder.CheckNullWithException(nameof(builder));
+ action.CheckNullWithException(nameof(action));
+ builder.buildActionList.Add(action);
+ return builder;
+ }
+
+ #region 设置区
+
+ public static JsonSerializerOptionsBuilder SetEncoder(
+ this JsonSerializerOptionsBuilder builder,
+ [NotNull] JavaScriptEncoder encoder)
+ {
+ encoder.CheckNullWithException(nameof(encoder));
+ return SetActionBase(
+ builder,
+ t => t.Encoder = encoder);
+ }
+
+ public static JsonSerializerOptionsBuilder SetCamelCase(this JsonSerializerOptionsBuilder builder)
+ {
+ return SetActionBase(
+ builder,
+ t => t.PropertyNamingPolicy = JsonNamingPolicy.CamelCase);
+ }
+
+ public static JsonSerializerOptionsBuilder SetEncoderToUnicodeRangeAll(this JsonSerializerOptionsBuilder builder)
+ {
+ return SetActionBase(
+ builder,
+ t => t.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All));
+ }
+
+ public static JsonSerializerOptionsBuilder Configure(
+ this JsonSerializerOptionsBuilder builder,
+ [NotNull] Action action)
+ {
+ return SetActionBase(builder, action);
+ }
+
+ #endregion 设置区
+
+ private static JsonSerializerOptions DefaultOptions;
+
+ public static JsonSerializerOptions BuildAndSaveToDefault(
+ this JsonSerializerOptionsBuilder builder)
+ {
+ JsonSerializerOptions option = builder.Build();
+ JsonSerializerOptionsBuilderExtesions.DefaultOptions = option;
+ return option;
+ }
+
+ public static JsonSerializerOptions GetDefaultOptions(this JsonSerializerOptionsBuilder builder)
+ {
+ return JsonSerializerOptionsBuilderExtesions.DefaultOptions;
+ }
+
+ public static JsonSerializerOptions GetOrBuildDefaultOptions(this JsonSerializerOptionsBuilder builder)
+ {
+ if (JsonSerializerOptionsBuilderExtesions.DefaultOptions.IsNull())
+ {
+ return builder
+ .SetCamelCase()
+ .SetEncoderToUnicodeRangeAll()
+ .BuildAndSaveToDefault();
+ }
+ else
+ {
+ return JsonSerializerOptionsBuilderExtesions.DefaultOptions;
+ }
+ }
+ }
+}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
index d36e7ee..a0a34e8 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
+++ b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
@@ -2,6 +2,7 @@
net5.0
+
@@ -9,4 +10,7 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/src/Ray.BiliBiliTool.Config/Extensions/IDictionaryExtensions.cs b/src/Ray.BiliBiliTool.Util/Extensions/IDictionaryExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Config/Extensions/IDictionaryExtensions.cs
rename to src/Ray.BiliBiliTool.Util/Extensions/IDictionaryExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Config/Extensions/KeyValuePairExtensions.cs b/src/Ray.BiliBiliTool.Util/Extensions/KeyValuePairExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Config/Extensions/KeyValuePairExtensions.cs
rename to src/Ray.BiliBiliTool.Util/Extensions/KeyValuePairExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs b/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
index fa9b716..ab0e8f3 100644
--- a/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
+++ b/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
@@ -1,4 +1,6 @@
-using Newtonsoft.Json;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
namespace System
{
@@ -15,5 +17,220 @@ public static string ToJson(this T obj, JsonSerializerSettings settings = nul
return JsonConvert.SerializeObject(obj, settings);
}
}
+
+ #region CheckNull
+
+ ///
+ /// 检查参数是否为null,为null时抛出异常
+ ///
+ ///
+ /// 要检查的对象
+ /// 抛出异常时,显示的参数名
+ /// 为null时抛出
+ public static void CheckNullWithException(this T obj, string paramName)
+ where T : class
+ {
+ if (obj == null) throw new ArgumentNullException(paramName);
+ }
+
+ ///
+ /// 检查参数是否为null,为null时抛出异常
+ ///
+ ///
+ /// 要检查的对象
+ /// 抛出异常时,显示的参数名
+ /// 抛出异常时,显示的错误信息
+ /// 为null时抛出
+ public static void CheckNullWithException(this T obj, string paramName, string message)
+ where T : class
+ {
+ if (obj == null) throw new ArgumentNullException(paramName, message);
+ }
+
+ ///
+ /// 检查参数是否为null或emtpy,为null或emtpy时抛出异常
+ ///
+ /// 要检查的对象
+ /// 抛出异常时,显示的参数名
+ /// 为null或emtpy时抛出
+ public static void CheckNullOrEmptyWithException(this IEnumerable obj, string paramName)
+ {
+ if (obj.IsNullOrEmpty()) throw new ArgumentNullException(paramName);
+ }
+
+ ///
+ /// 检查参数是否为null或emtpy,为null或emtpy时抛出异常
+ ///
+ /// 要检查的对象
+ /// 抛出异常时,显示的参数名
+ /// 抛出异常时,显示的错误信息
+ /// 为null或emtpy时抛出
+ public static void CheckNullOrEmptyWithException(this IEnumerable obj, string paramName, string message)
+ {
+ if (obj.IsNullOrEmpty()) throw new ArgumentNullException(paramName, message);
+ }
+
+ #endregion CheckNull
+
+ #region IsNull and IsNullOrEmpty
+
+ ///
+ /// 判断null,null或0长度都返回true
+ ///
+ /// 对象类型
+ /// 要判断的对象
+ /// 判断结果,null或0长度返回true,否则返回false
+ public static bool IsNullOrEmpty(this T value)
+ where T : class
+ {
+ #region 1.对象级别
+
+ //引用为null
+ bool isObjectNull = value == null;
+ if (isObjectNull == true) return true;
+
+ //判断是否为集合
+ IEnumerator tempEnumerator = (value as IEnumerable)?.GetEnumerator();
+ if (tempEnumerator == null) return false;//这里出去代表是对象 且 引用不为null.所以为false
+
+ #endregion 1.对象级别
+
+ #region 2.集合级别
+
+ //到这里就代表是集合且引用不为空,判断长度
+ //MoveNext方法返回tue代表集合中至少有一个数据,返回false就代表0长度
+ bool isZeroLenth = tempEnumerator.MoveNext() == false;
+ if (isZeroLenth == true) return true;
+
+ return isZeroLenth;
+
+ #endregion 2.集合级别
+ }
+
+ ///
+ /// 判断null
+ ///
+ /// 要判断的对象
+ /// 判断结果,null返回true,否则返回false
+ public static bool IsNull(this object value)
+ {
+ return value == null;
+ }
+
+ ///
+ /// 判断null,空数组
+ ///
+ /// 对象类型
+ /// 要判断的数组
+ /// 判断结果,null或空数组返回true,否则返回false
+ public static bool IsNullOrEmpty(this T[] value)
+ {
+ return value == null || value.Length == 0;
+ }
+
+ ///
+ /// 判断null,空集合
+ ///
+ /// 对象类型
+ /// 要判断的集合
+ /// 判断结果,null或空集合返回true,否则返回false
+ public static bool IsNullOrEmpty(this IList value)
+ {
+ return value == null || value.Count == 0;
+ }
+
+ ///
+ /// 判断null,空字典
+ ///
+ /// 对象类型
+ /// 要判断的字典
+ /// 判断结果,null或空字典返回true,否则返回false
+ public static bool IsNullOrEmpty(this IDictionary value)
+ {
+ return value == null || value.Keys.Count == 0;
+ }
+
+ ///
+ /// 判断null,空枚举器
+ ///
+ /// 要判断的字典
+ /// 判断结果,null或空枚举器返回true,否则返回false
+ public static bool IsNullOrEmpty(this IEnumerable value)
+ {
+ return value == null
+ || !value.GetEnumerator().MoveNext();
+ }
+
+ #endregion IsNull and IsNullOrEmpty
+
+ #region IsNotNull and IsNotNullOrEmpty
+
+ ///
+ /// 判断非null,非0长度
+ ///
+ /// 对象类型
+ /// 要判断的对象
+ /// 判断结果,非null,非0长度返回true,否则返回false
+ ///
+ public static bool IsNotNullOrEmpty(this T value)
+ where T : class
+ {
+ //IsNullOrEmpty取反
+ return !value.IsNullOrEmpty();
+ }
+
+ ///
+ /// 判断非null
+ ///
+ /// 要判断的对象
+ /// 判断结果,非null返回true,否则返回false
+ public static bool IsNotNull(this object value)
+ {
+ return !value.IsNull();
+ }
+
+ ///
+ /// 判断非null,非空数组
+ ///
+ /// 对象类型
+ /// 要判断的数组
+ /// 判断结果,非null和非空数组返回true,否则为false
+ public static bool IsNotNullOrEmpty(this T[] value)
+ {
+ return !value.IsNullOrEmpty();
+ }
+
+ ///
+ /// 判断非null,非空集合
+ ///
+ /// 对象类型
+ /// 要判断的集合
+ /// 判断结果,非null和非空集合返回true,否则为false
+ public static bool IsNotNullOrEmpty(this IList value)
+ {
+ return !value.IsNullOrEmpty();
+ }
+
+ ///
+ /// 判断非null,非空字典
+ ///
+ /// 要判断的字典
+ /// 判断结果,非null和非空字典返回true,否则为false
+ public static bool IsNotNullOrEmpty(this IDictionary value)
+ {
+ return !value.IsNullOrEmpty();
+ }
+
+ ///
+ /// 判断非null,非空枚举器
+ ///
+ /// 要判断的字典
+ /// 判断结果,null或空枚举器返回true,否则返回false
+ public static bool IsNotNullOrEmpty(this IEnumerable value)
+ {
+ return !value.IsNullOrEmpty();
+ }
+
+ #endregion IsNotNull and IsNotNullOrEmpty
}
}
diff --git a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
index d1f91bb..095e5c2 100644
--- a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
+++ b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
@@ -1,7 +1,7 @@
- netstandard2.0
+ netstandard2.1
From 20a78ebb13d034297335bbc8157e7f5bd81171fd Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 14:43:25 +0800
Subject: [PATCH 06/21] test
---
.../BiliBiliAgent/Interfaces/IDailyTaskApi.cs | 11 +++++++++++
.../BiliBiliAgent/Interfaces/IUserOperationApi.cs | 11 -----------
.../VideoDomainService.cs | 2 +-
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
index a09c9f6..55b5a08 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
@@ -40,5 +40,16 @@ public interface IDailyTaskApi : IBiliBiliApi, IUserInfoApi, IUserOperationApi
///
[Get("/x/space/arc/search?mid={upId}&ps={pageSize}&tid=0&pn={pageNumber}&keyword={keyword}&order=pubdate&jsonp=jsonp")]
Task> SearchVideosByUpId(long upId, int pageSize = 20, int pageNumber = 1, string keyword = "");
+
+ ///
+ /// 为视频投币
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/web-interface/coin/add?aid={aid}&multiply={multiply}&select_like={select_like}&cross_domain=true&csrf={csrf}")]
+ Task AddCoinForVideo(string aid, int multiply, int select_like, string csrf);
}
}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
index fd0ee12..4e9e0b1 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
@@ -53,16 +53,5 @@ public interface IUserOperationApi
///
[Post("/x/ugcpay/trade/elec/message?order_id={order_id}&message={message}&csrf={csrf}")]
Task> ChargeComment(string order_id, string message, string csrf);
-
- ///
- /// 为视频投币
- ///
- ///
- ///
- ///
- ///
- ///
- [Post("/x/web-interface/coin/add?aid={aid}&multiply={multiply}&select_like={select_like}&cross_domain=true&csrf={csrf}")]
- Task AddCoinForVideo(string aid, int multiply, int select_like, string csrf);
}
}
diff --git a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
index d59b0a2..3fc5d5e 100644
--- a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
@@ -419,7 +419,7 @@ private Tuple RegionRanking()
//_logger.LogInformation("获取分区:{rid}的{day}日top10榜单成功", rid, day);
RankingInfo data = apiResponse.Data[new Random().Next(apiResponse.Data.Count)];
- return Tuple.Create(data.Aid, data.Title);
+ return Tuple.Create(data.Aid, data.Title);
}
///
From 30b1f555254567d2a265d33391a06caac2a59749 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:01:08 +0800
Subject: [PATCH 07/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Ray.BiliBiliTool.Console/Program.cs | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Console/Program.cs b/src/Ray.BiliBiliTool.Console/Program.cs
index 2654698..b75ef2c 100644
--- a/src/Ray.BiliBiliTool.Console/Program.cs
+++ b/src/Ray.BiliBiliTool.Console/Program.cs
@@ -49,9 +49,10 @@ public static void PreWorks(string[] args)
//日志:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(RayConfiguration.Root)
- .WriteTo.TextWriter(PushService.PushStringWriter,
- LogHelper.GetConsoleLogLevel(),
- LogHelper.GetConsoleLogTemplate() + "\r\n")//用来做微信推送
+ .WriteTo.TextWriter(
+ textWriter: PushService.PushStringWriter,
+ restrictedToMinimumLevel: LogHelper.GetConsoleLogLevel(),
+ outputTemplate: LogHelper.GetConsoleLogTemplate() + "\r\n")//用来做微信推送
.CreateLogger();
//Host:
From f7d4792f718adb0c8fc837d31c53b4186d17bd4a Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:23:52 +0800
Subject: [PATCH 08/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B0=83=E8=AF=95?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E5=90=8E=E7=BB=AD=E4=BC=9A=E6=8E=92?=
=?UTF-8?q?=E9=99=A4=E6=8E=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Ray.BiliBiliTool.Console/Properties/launchSettings.json | 2 +-
src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json b/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
index b0f7f31..782844f 100644
--- a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
+++ b/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"BiliBiliTool": {
"commandName": "Project",
- "commandLineArgs": ""
+ "commandLineArgs": " "
}
}
}
\ No newline at end of file
diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
index 6a90ab0..c9e4cc4 100644
--- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
+++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
@@ -12,6 +12,7 @@
+
@@ -50,4 +51,8 @@
+
+
+
+
From 3c39d6b7d64ddc55697bf51f1533bce3c208e30b Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:26:11 +0800
Subject: [PATCH 09/21] .
---
src/Ray.BiliBiliTool.Console/Properties/launchSettings.json | 4 ++--
src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj | 5 -----
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json b/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
index 782844f..55ab5ef 100644
--- a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
+++ b/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"BiliBiliTool": {
"commandName": "Project",
- "commandLineArgs": " "
+ "commandLineArgs": "-closeConsoleWhenEnd=1"
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
index c9e4cc4..6a90ab0 100644
--- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
+++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
@@ -12,7 +12,6 @@
-
@@ -51,8 +50,4 @@
-
-
-
-
From 0de803550630a389175356cf88b9c44d5b51e05b Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:30:26 +0800
Subject: [PATCH 10/21] .
---
.gitignore | 5 ++++-
src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj | 4 ++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 72ae690..80ad371 100644
--- a/.gitignore
+++ b/.gitignore
@@ -352,5 +352,8 @@ MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
+
#
-.idea/
\ No newline at end of file
+.idea/
+
+/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
index 6a90ab0..03b12aa 100644
--- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
+++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
@@ -8,6 +8,7 @@
+
@@ -49,5 +50,4 @@
-
-
+
\ No newline at end of file
From 5a6afc703487cacf2f7fcff6324bd6030b6f94ac Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:30:36 +0800
Subject: [PATCH 11/21] .
---
src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
index 03b12aa..0fee3b1 100644
--- a/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
+++ b/src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj
@@ -8,7 +8,6 @@
-
From dc4575f661d5b8753badabac64d652fe444f5381 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 15:31:37 +0800
Subject: [PATCH 12/21] .
---
.../Properties/launchSettings.json | 8 --------
1 file changed, 8 deletions(-)
delete mode 100644 src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
diff --git a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json b/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
deleted file mode 100644
index 55ab5ef..0000000
--- a/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "profiles": {
- "BiliBiliTool": {
- "commandName": "Project",
- "commandLineArgs": "-closeConsoleWhenEnd=1"
- }
- }
-}
From c2be60ea1da6c895b1265345c9b6ca620a7ed84b Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 16:23:01 +0800
Subject: [PATCH 13/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=90=86?=
=?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/bilibili-daily-task.yml | 1 +
.../Extensions/ServiceCollectionExtension.cs | 35 ++++++++++++-------
src/Ray.BiliBiliTool.Config/Constants.cs | 7 ++--
3 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/.github/workflows/bilibili-daily-task.yml b/.github/workflows/bilibili-daily-task.yml
index 24cd2d1..9389c8b 100644
--- a/.github/workflows/bilibili-daily-task.yml
+++ b/.github/workflows/bilibili-daily-task.yml
@@ -65,4 +65,5 @@ jobs:
Ray_Serilog:WriteTo:0:Args:restrictedToMinimumLevel: ${{secrets.CONSOLELOGLEVEL}}
Ray_Serilog:WriteTo:0:Args:outputTemplate: ${{secrets.CONSOLELOGTEMPLATE}}
ASPNETCORE_ENVIRONMENT: ${{secrets.ENV}} # 方便切换不同的appsettings文件 也可以在不同的action yml文件中配置来同时运行多个任务
+ Ray_WebProxy: ${{secrets.PROXY}} # 代理
run: dotnet run -p ./src/Ray.BiliBiliTool.Console -closeConsoleWhenEnd=1 ${{secrets.OTHERCONFIGS}}
diff --git a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
index e5374d6..d84c50a 100644
--- a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
+++ b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
@@ -1,11 +1,12 @@
using System;
+using System.Net;
+using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces;
using Ray.BiliBiliTool.Agent.ServerChanAgent;
using Ray.BiliBiliTool.Agent.ServerChanAgent.Interfaces;
-using Ray.BiliBiliTool.Config;
using Ray.BiliBiliTool.Config.Options;
using Ray.BiliBiliTool.Infrastructure;
using Refit;
@@ -21,15 +22,8 @@ public static class ServiceCollectionExtension
///
public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection services)
{
- services.AddHttpClient();
- services.AddHttpClient("BiliBiliWithCookie",
- (sp, c) =>
- {
- c.DefaultRequestHeaders.Add("Cookie",
- sp.GetRequiredService>().CurrentValue.ToString());
- c.DefaultRequestHeaders.Add("User-Agent",
- sp.GetRequiredService>().CurrentValue.UserAgent);
- });
+ //全局代理
+ services.SetGlobalProxy();
//bilibli
services.AddBiliBiliClientApi("https://api.bilibili.com");
@@ -56,9 +50,10 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
///
///
///
- public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection services, string host) where TInterface : class
+ private static IServiceCollection AddBiliBiliClientApi(this IServiceCollection services, string host)
+ where TInterface : class
{
- var settings = new RefitSettings(new SystemTextJsonContentSerializer(JsonSerializerOptionsBuilder.DefaultOptions));
+ RefitSettings settings = new RefitSettings(new SystemTextJsonContentSerializer(JsonSerializerOptionsBuilder.DefaultOptions));
services.AddRefitClient(settings)
.ConfigureHttpClient((sp, c) =>
@@ -76,5 +71,21 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceC
return services;
}
+
+ ///
+ /// 设置全局代理(如果配置了代理)
+ ///
+ ///
+ ///
+ private static IServiceCollection SetGlobalProxy(this IServiceCollection services)
+ {
+ string proxyAddress = RayConfiguration.Root["WebProxy"];
+ if (proxyAddress.IsNotNullOrEmpty())
+ {
+ HttpClient.DefaultProxy = new WebProxy(proxyAddress);
+ }
+
+ return services;
+ }
}
}
diff --git a/src/Ray.BiliBiliTool.Config/Constants.cs b/src/Ray.BiliBiliTool.Config/Constants.cs
index a29d5bb..3848ee3 100644
--- a/src/Ray.BiliBiliTool.Config/Constants.cs
+++ b/src/Ray.BiliBiliTool.Config/Constants.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+using System.Collections.Generic;
namespace Ray.BiliBiliTool.Config
{
@@ -27,7 +25,8 @@ public static class Constants
{"-pushScKey","Push:PushScKey" },
- {"-closeConsoleWhenEnd","CloseConsoleWhenEnd" }
+ {"-closeConsoleWhenEnd","CloseConsoleWhenEnd" },
+ {"-proxy","WebProxy" }
};
///
From 70ca615b6198036015f1bbd7a12c048bc69a9dd3 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 16:25:22 +0800
Subject: [PATCH 14/21] =?UTF-8?q?=E6=8F=90PR=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Ray.BiliBiliTool.Console/appsettings.PRD.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Console/appsettings.PRD.json b/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
index 85df2cc..27de745 100644
--- a/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
+++ b/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
@@ -1,10 +1,11 @@
{
"DailyTaskConfig": {
- "NumberOfCoins": 3, //每日设定的投币数 [0,5]
- "SupportUpIds": "39180492" //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置则从排行耪随机获取支持视频
+ "SelectLike": true
},
"Security": {
+ "IsSkipDailyTask": false,
+ "IntervalSecondsBetweenRequestApi": 4,
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" //请求B站接口时头部传递的User-Agent
},
From b6274d84a19d815273462b8004e667da3c954883 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 16:31:20 +0800
Subject: [PATCH 15/21] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=9B=9E=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=EF=BC=8C=E6=8E=92=E9=99=A4=E7=94=9F=E6=88=90=E4=BB=A3?=
=?UTF-8?q?=E7=90=86=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BiliBiliAgent/Interfaces/IDailyTaskApi.cs | 84 +++++++++++++++++++
.../BiliBiliAgent/Interfaces/IUserInfoApi.cs | 36 +-------
.../Interfaces/IUserOperationApi.cs | 50 +----------
3 files changed, 86 insertions(+), 84 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
index 55b5a08..a97b8fc 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IDailyTaskApi.cs
@@ -41,6 +41,43 @@ public interface IDailyTaskApi : IBiliBiliApi, IUserInfoApi, IUserOperationApi
[Get("/x/space/arc/search?mid={upId}&ps={pageSize}&tid=0&pn={pageNumber}&keyword={keyword}&order=pubdate&jsonp=jsonp")]
Task> SearchVideosByUpId(long upId, int pageSize = 20, int pageNumber = 1, string keyword = "");
+ #region 用户信息
+
+ ///
+ /// 获取每日任务的完成情况
+ ///
+ ///
+ [Get("/x/member/web/exp/reward")]
+ Task> GetDailyTaskRewardInfo();
+
+ ///
+ /// 获取通过投币已获取的经验值
+ ///
+ ///
+ [Get("/x/web-interface/coin/today/exp")]
+ Task> GetDonateCoinExp();
+
+ ///
+ /// 获取VIP特权
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/vip/privilege/receive?type={type}&csrf={csrf}")]
+ Task ReceiveVipPrivilege(int type, string csrf);
+
+ ///
+ /// 获取当前用户对视频的投币信息
+ ///
+ ///
+ ///
+ [Get("/x/web-interface/archive/coins?aid={aid}")]
+ Task> GetDonatedCoinsForVideo(string aid);
+
+ #endregion 用户信息
+
+ #region 用户操作
+
///
/// 为视频投币
///
@@ -51,5 +88,52 @@ public interface IDailyTaskApi : IBiliBiliApi, IUserInfoApi, IUserOperationApi
///
[Post("/x/web-interface/coin/add?aid={aid}&multiply={multiply}&select_like={select_like}&cross_domain=true&csrf={csrf}")]
Task AddCoinForVideo(string aid, int multiply, int select_like, string csrf);
+
+ ///
+ /// 登录
+ ///
+ ///
+ [Get("/x/web-interface/nav")]
+ Task> LoginByCookie();
+
+ ///
+ /// 分享视频
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/web-interface/share/add?aid={aid}&csrf={csrf}")]
+ Task ShareVideo(string aid, string csrf);
+
+ ///
+ /// 上传视频观看进度
+ ///
+ ///
+ [Post("/x/click-interface/web/heartbeat?aid={aid}&played_time={playedTime}")]
+ Task UploadVideoHeartbeat(string aid, int playedTime);
+
+ ///
+ /// 充电
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/ugcpay/trade/elec/pay/quick?elec_num={elec_num}&up_mid={up_mid}&otype=up&oid={oid}&csrf={csrf}")]
+ Task> Charge(decimal elec_num, string up_mid, string oid, string csrf);
+
+ ///
+ /// 充电后留言
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [Post("/x/ugcpay/trade/elec/message?order_id={order_id}&message={message}&csrf={csrf}")]
+ Task> ChargeComment(string order_id, string message, string csrf);
+
+ #endregion 用户操作
}
}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
index 37bebcf..7ec2c62 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
@@ -1,43 +1,9 @@
-using System.Threading.Tasks;
-using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
-using Refit;
-
-namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
+namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
{
///
/// 用户信息接口API
///
public interface IUserInfoApi
{
- ///
- /// 获取每日任务的完成情况
- ///
- ///
- [Get("/x/member/web/exp/reward")]
- Task> GetDailyTaskRewardInfo();
-
- ///
- /// 获取通过投币已获取的经验值
- ///
- ///
- [Get("/x/web-interface/coin/today/exp")]
- Task> GetDonateCoinExp();
-
- ///
- /// 获取VIP特权
- ///
- ///
- ///
- ///
- [Post("/x/vip/privilege/receive?type={type}&csrf={csrf}")]
- Task ReceiveVipPrivilege(int type, string csrf);
-
- ///
- /// 获取当前用户对视频的投币信息
- ///
- ///
- ///
- [Get("/x/web-interface/archive/coins?aid={aid}")]
- Task> GetDonatedCoinsForVideo(string aid);
}
}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
index 4e9e0b1..e38f45c 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserOperationApi.cs
@@ -1,57 +1,9 @@
-using System.Threading.Tasks;
-using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
-using Refit;
-
-namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
+namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
{
///
/// 用户操作API
///
public interface IUserOperationApi
{
- ///
- /// 登录
- ///
- ///
- [Get("/x/web-interface/nav")]
- Task> LoginByCookie();
-
- ///
- /// 分享视频
- ///
- ///
- ///
- ///
- [Post("/x/web-interface/share/add?aid={aid}&csrf={csrf}")]
- Task ShareVideo(string aid, string csrf);
-
- ///
- /// 上传视频观看进度
- ///
- ///
- [Post("/x/click-interface/web/heartbeat?aid={aid}&played_time={playedTime}")]
- Task UploadVideoHeartbeat(string aid, int playedTime);
-
- ///
- /// 充电
- ///
- ///
- ///
- ///
- ///
- ///
- [Post("/x/ugcpay/trade/elec/pay/quick?elec_num={elec_num}&up_mid={up_mid}&otype=up&oid={oid}&csrf={csrf}")]
- Task> Charge(decimal elec_num, string up_mid, string oid, string csrf);
-
- ///
- /// 充电后留言
- ///
- ///
- ///
- ///
- ///
- ///
- [Post("/x/ugcpay/trade/elec/message?order_id={order_id}&message={message}&csrf={csrf}")]
- Task> ChargeComment(string order_id, string message, string csrf);
}
}
From 8c4109c08007a5026b658688d72ce7dc61b0f2eb Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Tue, 8 Dec 2020 16:52:00 +0800
Subject: [PATCH 16/21] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=B8=8D=E5=B0=8F?=
=?UTF-8?q?=E5=BF=83=E5=88=A0=E9=99=A4=E7=9A=84=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Extensions/ServiceCollectionExtension.cs | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
index d84c50a..21fef3f 100644
--- a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
+++ b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
@@ -25,6 +25,16 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
//全局代理
services.SetGlobalProxy();
+ services.AddHttpClient();
+ services.AddHttpClient("BiliBiliWithCookie",
+ (sp, c) =>
+ {
+ c.DefaultRequestHeaders.Add("Cookie",
+ sp.GetRequiredService>().CurrentValue.ToString());
+ c.DefaultRequestHeaders.Add("User-Agent",
+ sp.GetRequiredService>().CurrentValue.UserAgent);
+ });
+
//bilibli
services.AddBiliBiliClientApi("https://api.bilibili.com");
services.AddBiliBiliClientApi("https://manga.bilibili.com");
From 2e4bd0aca3307806cf633f782fc1efdefd41fc76 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Thu, 10 Dec 2020 09:58:41 +0800
Subject: [PATCH 17/21] =?UTF-8?q?=E6=94=B9=E4=B8=BAvalue.ToString()?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
index b36ce5a..5bef7f6 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
@@ -98,7 +98,7 @@ public object Next_exp
get { return this._next_exp; }
set
{
- bool isLong = long.TryParse(this.Next_exp.ToString(), out long exp);
+ bool isLong = long.TryParse(value.ToString(), out long exp);
if (isLong) { this._next_exp = exp; }
else this._next_exp = long.MinValue;
}
From 489ac8553a3b5efd2f0068a0cc5bbc0cdf58ff0f Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Thu, 10 Dec 2020 10:03:31 +0800
Subject: [PATCH 18/21] =?UTF-8?q?=E6=8B=BF=E6=8E=89var?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Extensions/ServiceCollectionExtension.cs | 2 +-
.../Options/BiliBiliCookieOptions.cs | 32 +++++++++----------
.../AccountDomainService.cs | 22 ++++++-------
3 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
index 21fef3f..3fce231 100644
--- a/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
+++ b/src/Ray.BiliBiliTool.Agent/Extensions/ServiceCollectionExtension.cs
@@ -63,7 +63,7 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
private static IServiceCollection AddBiliBiliClientApi(this IServiceCollection services, string host)
where TInterface : class
{
- RefitSettings settings = new RefitSettings(new SystemTextJsonContentSerializer(JsonSerializerOptionsBuilder.DefaultOptions));
+ var settings = new RefitSettings(new SystemTextJsonContentSerializer(JsonSerializerOptionsBuilder.DefaultOptions));
services.AddRefitClient(settings)
.ConfigureHttpClient((sp, c) =>
diff --git a/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs b/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
index 03bd815..42e07e9 100644
--- a/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
+++ b/src/Ray.BiliBiliTool.Config/Options/BiliBiliCookieOptions.cs
@@ -20,10 +20,10 @@ public class BiliBiliCookieOptions
public string UserId
{
get =>
- !string.IsNullOrWhiteSpace(this._userId)
- ? this._userId
+ !string.IsNullOrWhiteSpace(_userId)
+ ? _userId
: RayConfiguration.Root["BiliBiliCookie:DedeUserID"];//为了兼容 GitHub Secrets 经常会被填错
- set => this._userId = value;
+ set => _userId = value;
}
///
@@ -39,10 +39,10 @@ public string UserId
public string BiliJct
{
get =>
- !string.IsNullOrWhiteSpace(this._biliJct)
- ? this._biliJct
+ !string.IsNullOrWhiteSpace(_biliJct)
+ ? _biliJct
: RayConfiguration.Root["BiliBiliCookie:Bili_jct"];//为了兼容 GitHub Secrets 经常会被填错
- set => this._biliJct = value;
+ set => _biliJct = value;
}
///
@@ -57,15 +57,15 @@ public bool Check(ILogger logger)
string tips = "检测到已配置了[{0}],已兼容使用[{1}]";
//UserId为空,抛异常
- if (string.IsNullOrWhiteSpace(this.UserId))
+ if (string.IsNullOrWhiteSpace(UserId))
{
- logger.LogWarning(msg, nameof(this.UserId), this.GetPropertyDescription(nameof(this.UserId)));
+ logger.LogWarning(msg, nameof(UserId), GetPropertyDescription(nameof(UserId)));
result = false;
}
- else if (!long.TryParse(this.UserId, out long uid))//不为空,但不能转换为long,警告
+ else if (!long.TryParse(UserId, out long uid))//不为空,但不能转换为long,警告
{
- logger.LogWarning("UserId:{uid} 不能转换为long型,请确认配置的是正确的Cookie值", this.UserId);
+ logger.LogWarning("UserId:{uid} 不能转换为long型,请确认配置的是正确的Cookie值", UserId);
}
//UserId为空,但DedeUserID有值,兼容使用
if (string.IsNullOrWhiteSpace(RayConfiguration.Root["BiliBiliCookie:UserID"])
@@ -75,16 +75,16 @@ public bool Check(ILogger logger)
}
//SessData为空,抛异常
- if (string.IsNullOrWhiteSpace(this.SessData))
+ if (string.IsNullOrWhiteSpace(SessData))
{
- logger.LogWarning(msg, nameof(this.SessData), this.GetPropertyDescription(nameof(this.SessData)));
+ logger.LogWarning(msg, nameof(SessData), GetPropertyDescription(nameof(SessData)));
result = false;
}
//BiliJct为空,抛异常
- if (string.IsNullOrWhiteSpace(this.BiliJct))
+ if (string.IsNullOrWhiteSpace(BiliJct))
{
- logger.LogWarning(msg, nameof(this.BiliJct), this.GetPropertyDescription(nameof(this.BiliJct)));
+ logger.LogWarning(msg, nameof(BiliJct), GetPropertyDescription(nameof(BiliJct)));
result = false;
}
//BiliJct为空,但Bili_jct有值,兼容使用
@@ -99,12 +99,12 @@ public bool Check(ILogger logger)
public override string ToString()
{
- return $"{this.GetPropertyDescription(nameof(this.UserId))}={this.UserId}; {this.GetPropertyDescription(nameof(this.SessData))}={this.SessData}; {this.GetPropertyDescription(nameof(this.BiliJct))}={this.BiliJct};";
+ return $"{GetPropertyDescription(nameof(UserId))}={UserId}; {GetPropertyDescription(nameof(SessData))}={SessData}; {GetPropertyDescription(nameof(BiliJct))}={BiliJct};";
}
private string GetPropertyDescription(string propertyName)
{
- return this.GetType().GetPropertyDescription(propertyName);
+ return GetType().GetPropertyDescription(propertyName);
}
}
}
diff --git a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
index ad4aea8..b46fbd7 100644
--- a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
@@ -18,8 +18,8 @@ public class AccountDomainService : IAccountDomainService
public AccountDomainService(ILogger logger,
IDailyTaskApi dailyTaskApi)
{
- this._logger = logger;
- this._dailyTaskApi = dailyTaskApi;
+ _logger = logger;
+ _dailyTaskApi = dailyTaskApi;
}
///
@@ -28,29 +28,29 @@ public AccountDomainService(ILogger logger,
///
public UseInfo LoginByCookie()
{
- BiliApiResponse apiResponse = this._dailyTaskApi.LoginByCookie().Result;
+ BiliApiResponse apiResponse = _dailyTaskApi.LoginByCookie().Result;
if (apiResponse.Code != 0 || !apiResponse.Data.IsLogin)
{
- this._logger.LogWarning("登录异常,Cookies可能失效了,请仔细检查Github Secrets中DEDEUSERID、SESSDATA、BILI_JCT三项的值是否正确");
+ _logger.LogWarning("登录异常,Cookies可能失效了,请仔细检查Github Secrets中DEDEUSERID、SESSDATA、BILI_JCT三项的值是否正确");
return null;
}
UseInfo useInfo = apiResponse.Data;
//用户名模糊处理
- this._logger.LogInformation("登录成功,用户名: {0}", useInfo.GetFuzzyUname());
- this._logger.LogInformation("硬币余额: {0}", useInfo.Money ?? 0);
+ _logger.LogInformation("登录成功,用户名: {0}", useInfo.GetFuzzyUname());
+ _logger.LogInformation("硬币余额: {0}", useInfo.Money ?? 0);
if (useInfo.Level_info.Current_level < 6)
{
- this._logger.LogInformation("距离升级到Lv{0}还有: {1}天",
+ _logger.LogInformation("距离升级到Lv{0}还有: {1}天",
useInfo.Level_info.Current_level + 1,
(useInfo.Level_info.GetNext_expLong() - useInfo.Level_info.Current_exp) / Constants.EveryDayExp);
}
else
{
- this._logger.LogInformation("当前等级Lv6,经验值为:{0}", useInfo.Level_info.Current_exp);
+ _logger.LogInformation("当前等级Lv6,经验值为:{0}", useInfo.Level_info.Current_exp);
}
return useInfo;
@@ -63,7 +63,7 @@ public UseInfo LoginByCookie()
public DailyTaskInfo GetDailyTaskStatus()
{
DailyTaskInfo result = new DailyTaskInfo();
- BiliApiResponse apiResponse = this._dailyTaskApi.GetDailyTaskRewardInfo().Result;
+ BiliApiResponse apiResponse = _dailyTaskApi.GetDailyTaskRewardInfo().Result;
if (apiResponse.Code == 0)
{
//_logger.LogInformation("请求本日任务完成状态成功");
@@ -71,8 +71,8 @@ public DailyTaskInfo GetDailyTaskStatus()
}
else
{
- this._logger.LogWarning("获取今日任务完成状态失败:{result}", apiResponse.ToJson());
- result = this._dailyTaskApi.GetDailyTaskRewardInfo().Result.Data;
+ _logger.LogWarning("获取今日任务完成状态失败:{result}", apiResponse.ToJson());
+ result = _dailyTaskApi.GetDailyTaskRewardInfo().Result.Data;
//todo:偶发性请求失败,再请求一次,这么写很丑陋,待用polly再框架层面实现
}
From 8db9fc98ffa3e5a096a33e9b3ecb1f826902a72d Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Thu, 10 Dec 2020 10:14:23 +0800
Subject: [PATCH 19/21] =?UTF-8?q?=E6=94=B9=E6=8E=89=E4=B8=80=E4=BA=9B?=
=?UTF-8?q?=E4=BA=89=E8=AE=AE=E7=9A=84=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BiliBiliAgent/Dtos/UseInfo.cs | 20 +--
.../DailyTaskAppService.cs | 64 ++++----
...iablesExcludeEmptyConfigurationProvider.cs | 26 ++--
...ariablesExcludeEmptyConfigurationSource.cs | 2 +-
.../AccountDomainService.cs | 2 +-
.../ChargeDomainService.cs | 36 ++---
.../VideoDomainService.cs | 140 +++++++++---------
.../VipPrivilegeDomainService.cs | 24 +--
.../JsonSerializerOptionsBuilder.cs | 6 +-
.../JsonSerializerOptionsBuilderExtesions.cs | 2 +-
.../Ray.BiliBiliTool.Infrastructure.csproj | 1 -
.../Ray.BiliBiliTool.Util.csproj | 2 +-
12 files changed, 162 insertions(+), 163 deletions(-)
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
index 5bef7f6..2bfc3ae 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/UseInfo.cs
@@ -38,12 +38,12 @@ public class UseInfo
public string GetFuzzyUname()
{
StringBuilder sb = new StringBuilder();
- int s1 = this.Uname.Length / 2;
+ int s1 = Uname.Length / 2;
int s2 = (s1 + 1) / 2;
- for (int i = 0 ; i < this.Uname.Length ; i++)
+ for (int i = 0 ; i < Uname.Length ; i++)
{
if (i >= s2 && i < s1 + s2) sb.Append("*");
- else sb.Append(this.Uname[i]);
+ else sb.Append(Uname[i]);
}
return sb.ToString();
@@ -59,10 +59,10 @@ public string GetFuzzyUname()
///
public int GetVipType()
{
- if (this.VipStatus == 1)
+ if (VipStatus == 1)
{
//只有VipStatus为1的时候获取到VipType才是有效的。
- return this.VipType;
+ return VipType;
}
else
{
@@ -95,12 +95,12 @@ public class LevelInfo
///
public object Next_exp
{
- get { return this._next_exp; }
+ get { return _next_exp; }
set
{
bool isLong = long.TryParse(value.ToString(), out long exp);
- if (isLong) { this._next_exp = exp; }
- else this._next_exp = long.MinValue;
+ if (isLong) { _next_exp = exp; }
+ else _next_exp = long.MinValue;
}
}
@@ -110,8 +110,8 @@ public object Next_exp
///
public long GetNext_expLong()
{
- if (this.Current_level == 6) return long.MaxValue;
- else return this._next_exp;
+ if (Current_level == 6) return long.MaxValue;
+ else return _next_exp;
}
}
diff --git a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
index 4ffc805..60131db 100644
--- a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
+++ b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
@@ -30,43 +30,43 @@ public DailyTaskAppService(
IChargeDomainService chargeDomainService,
IOptionsMonitor securityOptions)
{
- this._logger = logger;
- this._loginDomainService = loginDomainService;
- this._videoDomainService = videoDomainService;
- this._mangaDomainService = mangaDomainService;
- this._liveDomainService = liveDomainService;
- this._vipPrivilegeDomainService = vipPrivilegeDomainService;
- this._chargeDomainService = chargeDomainService;
- this._securityOptions = securityOptions.CurrentValue;
+ _logger = logger;
+ _loginDomainService = loginDomainService;
+ _videoDomainService = videoDomainService;
+ _mangaDomainService = mangaDomainService;
+ _liveDomainService = liveDomainService;
+ _vipPrivilegeDomainService = vipPrivilegeDomainService;
+ _chargeDomainService = chargeDomainService;
+ _securityOptions = securityOptions.CurrentValue;
}
public void DoDailyTask()
{
- if (this._securityOptions.IsSkipDailyTask)
+ if (_securityOptions.IsSkipDailyTask)
{
- this._logger.LogWarning("已配置为跳过每日任务");
+ _logger.LogWarning("已配置为跳过每日任务");
return;
}
- this._logger.LogInformation("-----开始每日任务-----\r\n");
+ _logger.LogInformation("-----开始每日任务-----\r\n");
UseInfo userInfo;
DailyTaskInfo dailyTaskInfo;
- userInfo = this.Login();
- dailyTaskInfo = this.GetDailyTaskStatus();
+ userInfo = Login();
+ dailyTaskInfo = GetDailyTaskStatus();
- this.WatchAndShareVideo(dailyTaskInfo);
- this.AddCoinsForVideo();
- this.MangaSign();
- this.LiveSign();
- userInfo.Money = this.ExchangeSilver2Coin();
+ WatchAndShareVideo(dailyTaskInfo);
+ AddCoinsForVideo();
+ MangaSign();
+ LiveSign();
+ userInfo.Money = ExchangeSilver2Coin();
- this.ReceiveVipPrivilege(userInfo);
- this.ReceiveMangaVipReward(userInfo);
- this.Charge(userInfo);
+ ReceiveVipPrivilege(userInfo);
+ ReceiveMangaVipReward(userInfo);
+ Charge(userInfo);
- this._logger.LogInformation("-----全部任务已执行结束-----\r\n");
+ _logger.LogInformation("-----全部任务已执行结束-----\r\n");
}
///
@@ -76,7 +76,7 @@ public void DoDailyTask()
[TaskInterceptor("登录")]
private UseInfo Login()
{
- UseInfo userInfo = this._loginDomainService.LoginByCookie();
+ UseInfo userInfo = _loginDomainService.LoginByCookie();
if (userInfo == null) throw new Exception("登录失败,请检查Cookie");//终止流程
return userInfo;
}
@@ -88,7 +88,7 @@ private UseInfo Login()
[TaskInterceptor(null, false)]
private DailyTaskInfo GetDailyTaskStatus()
{
- return this._loginDomainService.GetDailyTaskStatus();
+ return _loginDomainService.GetDailyTaskStatus();
}
///
@@ -97,7 +97,7 @@ private DailyTaskInfo GetDailyTaskStatus()
[TaskInterceptor("观看、分享视频", false)]
private void WatchAndShareVideo(DailyTaskInfo dailyTaskInfo)
{
- this._videoDomainService.WatchAndShareVideo(dailyTaskInfo);
+ _videoDomainService.WatchAndShareVideo(dailyTaskInfo);
}
///
@@ -106,7 +106,7 @@ private void WatchAndShareVideo(DailyTaskInfo dailyTaskInfo)
[TaskInterceptor("投币", false)]
private void AddCoinsForVideo()
{
- this._videoDomainService.AddCoinsForVideo();
+ _videoDomainService.AddCoinsForVideo();
}
///
@@ -115,7 +115,7 @@ private void AddCoinsForVideo()
[TaskInterceptor("直播中心签到", false)]
private void LiveSign()
{
- this._liveDomainService.LiveSign();
+ _liveDomainService.LiveSign();
}
///
@@ -124,7 +124,7 @@ private void LiveSign()
[TaskInterceptor("直播中心银瓜子兑换硬币", false)]
private decimal ExchangeSilver2Coin()
{
- return this._liveDomainService.ExchangeSilver2Coin();
+ return _liveDomainService.ExchangeSilver2Coin();
}
///
@@ -133,7 +133,7 @@ private decimal ExchangeSilver2Coin()
[TaskInterceptor("每月领取大会员福利", false)]
private void ReceiveVipPrivilege(UseInfo userInfo)
{
- this._vipPrivilegeDomainService.ReceiveVipPrivilege(userInfo);
+ _vipPrivilegeDomainService.ReceiveVipPrivilege(userInfo);
}
///
@@ -142,7 +142,7 @@ private void ReceiveVipPrivilege(UseInfo userInfo)
[TaskInterceptor("每月为自己充电", false)]
private void Charge(UseInfo userInfo)
{
- this._chargeDomainService.Charge(userInfo);
+ _chargeDomainService.Charge(userInfo);
}
///
@@ -151,7 +151,7 @@ private void Charge(UseInfo userInfo)
[TaskInterceptor("漫画签到", false)]
private void MangaSign()
{
- this._mangaDomainService.MangaSign();
+ _mangaDomainService.MangaSign();
}
///
@@ -160,7 +160,7 @@ private void MangaSign()
[TaskInterceptor("每月领取大会员漫画权益", false)]
private void ReceiveMangaVipReward(UseInfo userInfo)
{
- this._mangaDomainService.ReceiveMangaVipReward(1, userInfo);
+ _mangaDomainService.ReceiveMangaVipReward(1, userInfo);
}
}
}
diff --git a/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationProvider.cs b/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationProvider.cs
index 2bcf130..2fde500 100644
--- a/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationProvider.cs
+++ b/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationProvider.cs
@@ -12,30 +12,30 @@ namespace Ray.BiliBiliTool.Config
///
public class EnvironmentVariablesExcludeEmptyConfigurationProvider : EnvironmentVariablesConfigurationProvider
{
- private readonly string prefix;
- private readonly Func, bool> startsWith;
- private readonly Func, bool> removeNullValue;
- private readonly Func, bool> fifter;
- private readonly Func, KeyValuePair> removePrefix;
+ private readonly string _prefix;
+ private readonly Func, bool> _startsWith;
+ private readonly Func, bool> _removeNullValue;
+ private readonly Func, bool> _fifter;
+ private readonly Func, KeyValuePair> _removePrefix;
public EnvironmentVariablesExcludeEmptyConfigurationProvider(string prefix = null) : base(prefix)
{
- this.prefix = prefix ?? string.Empty;
- this.startsWith = c => c.Key.StartsWith(this.prefix, StringComparison.OrdinalIgnoreCase);
- this.removeNullValue = c => !string.IsNullOrWhiteSpace(c.Value);
- this.fifter = c => this.startsWith(c) && this.removeNullValue(c);
+ _prefix = prefix ?? string.Empty;
+ _startsWith = c => c.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase);
+ _removeNullValue = c => !string.IsNullOrWhiteSpace(c.Value);
+ _fifter = c => _startsWith(c) && _removeNullValue(c);
- this.removePrefix = this.prefix.Length == 0
+ _removePrefix = prefix.Length == 0
? t => t
- : t => t.NewKey(c => c.Substring(this.prefix.Length));
+ : t => t.NewKey(c => c.Substring(prefix.Length));
}
public override void Load()
{
Dictionary dictionary = Environment.GetEnvironmentVariables()
.ToDictionary(otherAction: t => t
- .Where(this.fifter)
- .Select(this.removePrefix));
+ .Where(_fifter)
+ .Select(_removePrefix));
base.Data = new Dictionary(dictionary, StringComparer.OrdinalIgnoreCase);
}
diff --git a/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationSource.cs b/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationSource.cs
index 08886a3..263c0bf 100644
--- a/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationSource.cs
+++ b/src/Ray.BiliBiliTool.Config/EnvironmentVariablesExcludeEmptyConfigurationSource.cs
@@ -18,7 +18,7 @@ public class EnvironmentVariablesExcludeEmptyConfigurationSource : IConfiguratio
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
- return new EnvironmentVariablesExcludeEmptyConfigurationProvider(this.Prefix);
+ return new EnvironmentVariablesExcludeEmptyConfigurationProvider(Prefix);
}
}
}
diff --git a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
index b46fbd7..d459514 100644
--- a/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
@@ -62,7 +62,7 @@ public UseInfo LoginByCookie()
///
public DailyTaskInfo GetDailyTaskStatus()
{
- DailyTaskInfo result = new DailyTaskInfo();
+ DailyTaskInfo result = new();
BiliApiResponse apiResponse = _dailyTaskApi.GetDailyTaskRewardInfo().Result;
if (apiResponse.Code == 0)
{
diff --git a/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs b/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
index 24b8c43..cc24c71 100644
--- a/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/ChargeDomainService.cs
@@ -23,10 +23,10 @@ public ChargeDomainService(ILogger logger,
IDailyTaskApi dailyTaskApi,
IOptionsMonitor cookieOptions)
{
- this._logger = logger;
- this._dailyTaskOptions = dailyTaskOptions.CurrentValue;
- this._dailyTaskApi = dailyTaskApi;
- this._cookieOptions = cookieOptions.CurrentValue;
+ _logger = logger;
+ _dailyTaskOptions = dailyTaskOptions.CurrentValue;
+ _dailyTaskApi = dailyTaskApi;
+ _cookieOptions = cookieOptions.CurrentValue;
}
///
@@ -35,19 +35,19 @@ public ChargeDomainService(ILogger logger,
///
public void Charge(UseInfo userInfo)
{
- if (this._dailyTaskOptions.DayOfAutoCharge == 0)
+ if (_dailyTaskOptions.DayOfAutoCharge == 0)
{
- this._logger.LogInformation("已配置为不进行自动充电,跳过充电任务");
+ _logger.LogInformation("已配置为不进行自动充电,跳过充电任务");
return;
}
- int targetDay = this._dailyTaskOptions.DayOfAutoCharge == -1
+ int targetDay = _dailyTaskOptions.DayOfAutoCharge == -1
? DateTime.Today.LastDayOfMonth().Day
- : this._dailyTaskOptions.DayOfAutoCharge;
+ : _dailyTaskOptions.DayOfAutoCharge;
if (DateTime.Today.Day != targetDay)
{
- this._logger.LogInformation("目标充电日期为{targetDay}号,今天是{today}号,跳过充电任务", targetDay, DateTime.Today.Day);
+ _logger.LogInformation("目标充电日期为{targetDay}号,今天是{today}号,跳过充电任务", targetDay, DateTime.Today.Day);
return;
}
@@ -55,7 +55,7 @@ public void Charge(UseInfo userInfo)
decimal couponBalance = userInfo.Wallet.Coupon_balance;
if (couponBalance < 2)
{
- this._logger.LogInformation("不是年度大会员或已过期,无法充电");
+ _logger.LogInformation("不是年度大会员或已过期,无法充电");
return;
}
@@ -63,29 +63,29 @@ public void Charge(UseInfo userInfo)
int vipType = userInfo.GetVipType();
if (vipType != 2)
{
- this._logger.LogInformation("不是年度大会员或已过期,无法充电");
+ _logger.LogInformation("不是年度大会员或已过期,无法充电");
return;
}
- BiliApiResponse response = this._dailyTaskApi.Charge(couponBalance * 10, this._cookieOptions.UserId, this._cookieOptions.UserId, this._cookieOptions.BiliJct).Result;
+ BiliApiResponse response = _dailyTaskApi.Charge(couponBalance * 10, _cookieOptions.UserId, _cookieOptions.UserId, _cookieOptions.BiliJct).Result;
if (response.Code == 0)
{
if (response.Data.Status == 4)
{
- this._logger.LogInformation("给自己充电成功啦,送的B币券没有浪费哦");
- this._logger.LogInformation("本次给自己充值了: {num}个电池哦", couponBalance * 10);
+ _logger.LogInformation("给自己充电成功啦,送的B币券没有浪费哦");
+ _logger.LogInformation("本次给自己充值了: {num}个电池哦", couponBalance * 10);
//获取充电留言token
- this.ChargeComments(response.Data.Order_no);
+ ChargeComments(response.Data.Order_no);
}
else
{
- this._logger.LogDebug("充电失败了啊 原因:{reason}", response.ToJson());
+ _logger.LogDebug("充电失败了啊 原因:{reason}", response.ToJson());
}
}
else
{
- this._logger.LogDebug("充电失败了啊 原因:{reason}", response.Message);
+ _logger.LogDebug("充电失败了啊 原因:{reason}", response.Message);
}
}
@@ -95,7 +95,7 @@ public void Charge(UseInfo userInfo)
///
public void ChargeComments(string token)
{
- this._dailyTaskApi.ChargeComment(token, "Ray.BiliBiliTool自动充电", this._cookieOptions.BiliJct);
+ _dailyTaskApi.ChargeComment(token, "Ray.BiliBiliTool自动充电", _cookieOptions.BiliJct);
}
}
}
diff --git a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
index 3fc5d5e..2e0b0b2 100644
--- a/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
@@ -32,13 +32,13 @@ public VideoDomainService(ILogger logger,
ICoinDomainService coinDomainService,
IRelationApi relationApi)
{
- this._logger = logger;
- this._dailyTaskApi = dailyTaskApi;
- this._biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
- this._dailyTaskOptions = dailyTaskOptions.CurrentValue;
- this._accountApi = accountApi;
- this._coinDomainService = coinDomainService;
- this._relationApi = relationApi;
+ _logger = logger;
+ _dailyTaskApi = dailyTaskApi;
+ _biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
+ _dailyTaskOptions = dailyTaskOptions.CurrentValue;
+ _accountApi = accountApi;
+ _coinDomainService = coinDomainService;
+ _relationApi = relationApi;
}
///
@@ -47,7 +47,7 @@ public VideoDomainService(ILogger logger,
///
public string GetRandomVideo()
{
- return this.RegionRanking().Item1;
+ return RegionRanking().Item1;
}
public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
@@ -56,18 +56,18 @@ public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
if (!dailyTaskStatus.Watch || !dailyTaskStatus.Share)
{
- targetVideo = this.GetRandomVideoForWatch();
- this._logger.LogInformation("获取随机视频:{title}", targetVideo.Item2);
+ targetVideo = GetRandomVideoForWatch();
+ _logger.LogInformation("获取随机视频:{title}", targetVideo.Item2);
}
if (!dailyTaskStatus.Watch)
- this.WatchVideo(targetVideo.Item1, targetVideo.Item2);
+ WatchVideo(targetVideo.Item1, targetVideo.Item2);
else
- this._logger.LogInformation("今天已经观看过了,不需要再看啦");
+ _logger.LogInformation("今天已经观看过了,不需要再看啦");
if (!dailyTaskStatus.Share)
- this.ShareVideo(targetVideo.Item1, targetVideo.Item2);
+ ShareVideo(targetVideo.Item1, targetVideo.Item2);
else
- this._logger.LogInformation("今天已经分享过了,不要再分享啦");
+ _logger.LogInformation("今天已经分享过了,不要再分享啦");
}
///
@@ -76,15 +76,15 @@ public void WatchAndShareVideo(DailyTaskInfo dailyTaskStatus)
public void WatchVideo(string aid, string title = "")
{
int playedTime = new Random().Next(1, 90);
- BiliApiResponse apiResponse = this._dailyTaskApi.UploadVideoHeartbeat(aid, playedTime).Result;
+ BiliApiResponse apiResponse = _dailyTaskApi.UploadVideoHeartbeat(aid, playedTime).Result;
if (apiResponse.Code == 0)
{
- this._logger.LogInformation("视频播放成功,已观看到第{playedTime}秒", playedTime);
+ _logger.LogInformation("视频播放成功,已观看到第{playedTime}秒", playedTime);
}
else
{
- this._logger.LogDebug("视频播放失败,原因:{msg}", apiResponse.Message);
+ _logger.LogDebug("视频播放失败,原因:{msg}", apiResponse.Message);
}
}
@@ -94,16 +94,16 @@ public void WatchVideo(string aid, string title = "")
/// 视频aid
public void ShareVideo(string aid, string title = "")
{
- BiliApiResponse apiResponse = this._dailyTaskApi.ShareVideo(aid, this._biliBiliCookieOptions.BiliJct).Result;
+ BiliApiResponse apiResponse = _dailyTaskApi.ShareVideo(aid, _biliBiliCookieOptions.BiliJct).Result;
if (apiResponse.Code == 0)
{
- this._logger.LogInformation("视频分享成功");
+ _logger.LogInformation("视频分享成功");
}
else
{
- this._logger.LogInformation("视频分享失败,原因: {msg}", apiResponse.Message);
- this._logger.LogDebug("开发者提示: 如果是csrf校验失败请检查BILI_JCT参数是否正确或者失效");
+ _logger.LogInformation("视频分享失败,原因: {msg}", apiResponse.Message);
+ _logger.LogDebug("开发者提示: 如果是csrf校验失败请检查BILI_JCT参数是否正确或者失效");
}
}
@@ -114,15 +114,15 @@ public void ShareVideo(string aid, string title = "")
///
public bool CanDonatedCoinsForVideo(string aid)
{
- int multiply = this._dailyTaskApi.GetDonatedCoinsForVideo(aid).Result.Data.Multiply;
+ int multiply = _dailyTaskApi.GetDonatedCoinsForVideo(aid).Result.Data.Multiply;
if (multiply < 2)
{
- this._logger.LogDebug("已为Av" + aid + "投过" + multiply + "枚硬币,可以继续投币");
+ _logger.LogDebug("已为Av" + aid + "投过" + multiply + "枚硬币,可以继续投币");
return true;
}
else
{
- this._logger.LogDebug("已为Av" + aid + " 投过2枚硬币,不能再投币啦");
+ _logger.LogDebug("已为Av" + aid + " 投过2枚硬币,不能再投币啦");
return false;
}
}
@@ -132,24 +132,24 @@ public bool CanDonatedCoinsForVideo(string aid)
///
public void AddCoinsForVideo()
{
- int needCoins = this.GetNeedDonateCoins(out int alreadyCoins, out int targetCoins);
- this._logger.LogInformation("今日已投{already}枚硬币,目标是投{target}枚硬币", alreadyCoins, targetCoins);
+ int needCoins = GetNeedDonateCoins(out int alreadyCoins, out int targetCoins);
+ _logger.LogInformation("今日已投{already}枚硬币,目标是投{target}枚硬币", alreadyCoins, targetCoins);
if (needCoins <= 0)
{
- this._logger.LogInformation("已经完成投币任务,今天不需要再投啦");
+ _logger.LogInformation("已经完成投币任务,今天不需要再投啦");
return;
}
- this._logger.LogInformation("还需再投{need}枚硬币", needCoins);
+ _logger.LogInformation("还需再投{need}枚硬币", needCoins);
//投币前硬币余额
- decimal coinBalance = this._coinDomainService.GetCoinBalance();
- this._logger.LogInformation("投币前余额为 : {coinBalance}", coinBalance);
+ decimal coinBalance = _coinDomainService.GetCoinBalance();
+ _logger.LogInformation("投币前余额为 : {coinBalance}", coinBalance);
if (coinBalance <= 0)
{
- this._logger.LogInformation("因硬币余额不足,今日暂不执行投币任务");
+ _logger.LogInformation("因硬币余额不足,今日暂不执行投币任务");
return;
}
@@ -157,7 +157,7 @@ public void AddCoinsForVideo()
if (coinBalance < needCoins)
{
int.TryParse(decimal.Truncate(coinBalance).ToString(), out needCoins);
- this._logger.LogInformation("因硬币余额不足,目标投币数调整为: {needCoins}", needCoins);
+ _logger.LogInformation("因硬币余额不足,目标投币数调整为: {needCoins}", needCoins);
}
int successCoins = 0;
@@ -166,17 +166,17 @@ public void AddCoinsForVideo()
{
tryCount++;
- Tuple video = this.TryGetCanDonatedVideo();
+ Tuple video = TryGetCanDonatedVideo();
if (video == null)
{
if (tryCount <= 10) continue;
- this._logger.LogInformation("尝试投币次数超过10次,投币任务终止");
+ _logger.LogInformation("尝试投币次数超过10次,投币任务终止");
break;
}
- this._logger.LogDebug("正在为视频“{title}”投币", video.Item2);
+ _logger.LogDebug("正在为视频“{title}”投币", video.Item2);
- bool isSuccess = this.AddCoinsForVideo(video.Item1, 1, this._dailyTaskOptions.SelectLike, video.Item2);
+ bool isSuccess = AddCoinsForVideo(video.Item1, 1, _dailyTaskOptions.SelectLike, video.Item2);
if (isSuccess)
{
successCoins++;
@@ -184,12 +184,12 @@ public void AddCoinsForVideo()
if (tryCount > 10)
{
- this._logger.LogInformation("尝试投币次数超过10次,投币任务终止");
+ _logger.LogInformation("尝试投币次数超过10次,投币任务终止");
break;
}
}
- this._logger.LogInformation("投币任务完成,余额为: {money}", this._accountApi.GetCoinBalance().Result.Data.Money);
+ _logger.LogInformation("投币任务完成,余额为: {money}", _accountApi.GetCoinBalance().Result.Data.Money);
}
///
@@ -201,23 +201,23 @@ public void AddCoinsForVideo()
/// 是否投币成功
public bool AddCoinsForVideo(string aid, int multiply, bool select_like, string title = "")
{
- BiliApiResponse result = this._dailyTaskApi.AddCoinForVideo(aid, multiply, select_like ? 1 : 0, this._biliBiliCookieOptions.BiliJct).Result;
+ BiliApiResponse result = _dailyTaskApi.AddCoinForVideo(aid, multiply, select_like ? 1 : 0, _biliBiliCookieOptions.BiliJct).Result;
if (result.Code == 0)
{
- this._logger.LogInformation("为“{title}”投币成功", title);
+ _logger.LogInformation("为“{title}”投币成功", title);
return true;
}
if (result.Code == -111)
{
string errorMsg = $"投币异常,Cookie配置项[BiliJct]错误或已过期,请检查并更新。接口返回:{result.Message}";
- this._logger.LogError(errorMsg);
+ _logger.LogError(errorMsg);
throw new Exception(errorMsg);
}
else
{
- this._logger.LogInformation("为“{title}”投币失败,原因:{msg}", title, result.Message);
+ _logger.LogInformation("为“{title}”投币失败,原因:{msg}", title, result.Message);
return false;
}
}
@@ -231,22 +231,22 @@ public Tuple TryGetCanDonatedVideo()
Tuple result = null;
//如果配置upID,则从up中随机尝试获取10次
- if (this._dailyTaskOptions.SupportUpIdList.Count > 0)
+ if (_dailyTaskOptions.SupportUpIdList.Count > 0)
{
- result = this.TryGetCanDonatedVideoByUp(10);
+ result = TryGetCanDonatedVideoByUp(10);
if (result != null) return result;
}
//然后从特别关注列表尝试获取10次
- result = this.TryGetCanDonatedVideoBySpecialUps(10);
+ result = TryGetCanDonatedVideoBySpecialUps(10);
if (result != null) return result;
//然后从普通关注列表获取10次
- result = this.TryGetCanDonatedVideoByFollowingUps(10);
+ result = TryGetCanDonatedVideoByFollowingUps(10);
if (result != null) return result;
//最后从排行榜尝试5次
- result = this.TryGetNotDonatedVideoByRegion(5);
+ result = TryGetNotDonatedVideoByRegion(5);
return result;
}
@@ -259,9 +259,9 @@ public Tuple TryGetCanDonatedVideo()
public Tuple TryGetCanDonatedVideoByUp(int tryCount)
{
//是否配置了up主
- if (this._dailyTaskOptions.SupportUpIdList.Count == 0) return null;
+ if (_dailyTaskOptions.SupportUpIdList.Count == 0) return null;
- return this.TryGetCanDonateVideoByUps(this._dailyTaskOptions.SupportUpIdList, tryCount); ;
+ return TryGetCanDonateVideoByUps(_dailyTaskOptions.SupportUpIdList, tryCount); ;
}
///
@@ -275,10 +275,10 @@ public Tuple TryGetCanDonatedVideoBySpecialUps(int tryCount)
Dictionary videoCountDic = new Dictionary();
//获取特别关注列表
- BiliApiResponse> specials = this._relationApi.GetSpecialFollowings().Result;
+ BiliApiResponse> specials = _relationApi.GetSpecialFollowings().Result;
if (specials.Data == null || specials.Data.Count == 0) return null;
- return this.TryGetCanDonateVideoByUps(specials.Data.Select(x => x.Mid).ToList(), tryCount);
+ return TryGetCanDonateVideoByUps(specials.Data.Select(x => x.Mid).ToList(), tryCount);
}
///
@@ -292,10 +292,10 @@ public Tuple TryGetCanDonatedVideoByFollowingUps(int tryCount)
Dictionary videoCountDic = new Dictionary();
//获取特别关注列表
- BiliApiResponse result = this._relationApi.GetFollowings(this._biliBiliCookieOptions.UserId).Result;
+ BiliApiResponse result = _relationApi.GetFollowings(_biliBiliCookieOptions.UserId).Result;
if (result.Data.Total == 0) return null;
- return this.TryGetCanDonateVideoByUps(result.Data.List.Select(x => x.Mid).ToList(), tryCount);
+ return TryGetCanDonateVideoByUps(result.Data.List.Select(x => x.Mid).ToList(), tryCount);
}
///
@@ -319,13 +319,13 @@ private Tuple TryGetCanDonateVideoByUps(List upIds, int tr
long randomUpId = upIds[new Random().Next(0, upIds.Count)];
if (!videoCountDic.TryGetValue(randomUpId, out int videoCount))
{
- videoCount = this.GetVidoeCountOfUp(randomUpId);
+ videoCount = GetVidoeCountOfUp(randomUpId);
videoCountDic.Add(randomUpId, videoCount);
}
if (videoCount == 0) continue;
- UpVideoInfo videoInfo = this.GetRandomVideoOfUp(randomUpId, videoCount);
- if (!this.CanDonatedCoinsForVideo(videoInfo.Aid.ToString())) continue;
+ UpVideoInfo videoInfo = GetRandomVideoOfUp(randomUpId, videoCount);
+ if (!CanDonatedCoinsForVideo(videoInfo.Aid.ToString())) continue;
return Tuple.Create(videoInfo.Aid.ToString(), videoInfo.Title);
}
@@ -343,8 +343,8 @@ public Tuple TryGetNotDonatedVideoByRegion(int tryCount)
for (int i = 0 ; i < tryCount ; i++)
{
- Tuple video = this.RegionRanking();
- if (!this.CanDonatedCoinsForVideo(video.Item1)) continue;
+ Tuple video = RegionRanking();
+ if (!CanDonatedCoinsForVideo(video.Item1)) continue;
return video;
}
@@ -355,17 +355,17 @@ public List GetRandomVideosOfUps()
{
List re = new List();
- int configUpsCount = this._dailyTaskOptions.SupportUpIdList.Count;
+ int configUpsCount = _dailyTaskOptions.SupportUpIdList.Count;
if (configUpsCount == 0) return re;
- long upId = this._dailyTaskOptions.SupportUpIdList[new Random().Next(0, configUpsCount)];
- int count = this.GetVidoeCountOfUp(upId);
+ long upId = _dailyTaskOptions.SupportUpIdList[new Random().Next(0, configUpsCount)];
+ int count = GetVidoeCountOfUp(upId);
int targetNum = 10;
if (count < 10) targetNum = count;
for (int i = 0 ; i < targetNum ; i++)
{
- UpVideoInfo videoInfo = this.GetRandomVideoOfUp(upId, count);
+ UpVideoInfo videoInfo = GetRandomVideoOfUp(upId, count);
if (re.Count(x => x.Aid == videoInfo.Aid) == 0) re.Add(videoInfo);
}
@@ -375,7 +375,7 @@ public List GetRandomVideosOfUps()
private UpVideoInfo GetRandomVideoOfUp(long upId, int total)
{
int pageNum = new Random().Next(1, total + 1);
- BiliApiResponse re = this._dailyTaskApi.SearchVideosByUpId(upId, 1, pageNum).Result;
+ BiliApiResponse re = _dailyTaskApi.SearchVideosByUpId(upId, 1, pageNum).Result;
if (re.Code != 0)
{
@@ -392,7 +392,7 @@ private UpVideoInfo GetRandomVideoOfUp(long upId, int total)
///
private int GetVidoeCountOfUp(long upId)
{
- BiliApiResponse re = this._dailyTaskApi.SearchVideosByUpId(upId, 1, 1).Result;
+ BiliApiResponse re = _dailyTaskApi.SearchVideosByUpId(upId, 1, 1).Result;
if (re.Code != 0)
{
throw new Exception(re.Message);
@@ -414,7 +414,7 @@ private Tuple RegionRanking()
int[] arr = { 1, 3, 4, 5, 160, 22, 119 };
int rid = arr[new Random().Next(arr.Length - 1)];
- BiliApiResponse> apiResponse = this._dailyTaskApi.GetRegionRankingVideos(rid, 3).Result;
+ BiliApiResponse> apiResponse = _dailyTaskApi.GetRegionRankingVideos(rid, 3).Result;
//_logger.LogInformation("获取分区:{rid}的{day}日top10榜单成功", rid, day);
RankingInfo data = apiResponse.Data[new Random().Next(apiResponse.Data.Count)];
@@ -433,9 +433,9 @@ private int GetNeedDonateCoins(out int alreadyCoins, out int targetCoins)
int needCoins = 0;
//获取自定义配置投币数
- int configCoins = this._dailyTaskOptions.NumberOfCoins;
+ int configCoins = _dailyTaskOptions.NumberOfCoins;
//已投的硬币
- alreadyCoins = this._coinDomainService.GetDonatedCoins();
+ alreadyCoins = _coinDomainService.GetDonatedCoins();
//目标
targetCoins = configCoins > Constants.MaxNumberOfDonateCoins
? Constants.MaxNumberOfDonateCoins
@@ -450,13 +450,13 @@ private int GetNeedDonateCoins(out int alreadyCoins, out int targetCoins)
private Tuple GetRandomVideoForWatch()
{
- List list = this.GetRandomVideosOfUps();
+ List list = GetRandomVideosOfUps();
if (list.Count > 0)
return Tuple.Create(list.First().Aid.ToString(), list.First().Title);
- return this.RegionRanking();
+ return RegionRanking();
}
#endregion private
}
-}
+}
\ No newline at end of file
diff --git a/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs b/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs
index 48a2f03..624ebf7 100644
--- a/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/VipPrivilegeDomainService.cs
@@ -23,10 +23,10 @@ public VipPrivilegeDomainService(ILogger logger,
IOptionsMonitor biliBiliCookieOptions,
IOptionsMonitor dailyTaskOptions)
{
- this._logger = logger;
- this._dailyTaskApi = dailyTaskApi;
- this._dailyTaskOptions = dailyTaskOptions.CurrentValue;
- this._biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
+ _logger = logger;
+ _dailyTaskApi = dailyTaskApi;
+ _dailyTaskOptions = dailyTaskOptions.CurrentValue;
+ _biliBiliCookieOptions = biliBiliCookieOptions.CurrentValue;
}
///
@@ -35,19 +35,19 @@ public VipPrivilegeDomainService(ILogger logger,
///
public void ReceiveVipPrivilege(UseInfo useInfo)
{
- if (this._dailyTaskOptions.DayOfReceiveVipPrivilege == 0)
+ if (_dailyTaskOptions.DayOfReceiveVipPrivilege == 0)
{
- this._logger.LogInformation("已配置为不进行自动领取会员权益,跳过领取任务");
+ _logger.LogInformation("已配置为不进行自动领取会员权益,跳过领取任务");
return;
}
- int targetDay = this._dailyTaskOptions.DayOfReceiveVipPrivilege == -1
+ int targetDay = _dailyTaskOptions.DayOfReceiveVipPrivilege == -1
? 1
- : this._dailyTaskOptions.DayOfReceiveVipPrivilege;
+ : _dailyTaskOptions.DayOfReceiveVipPrivilege;
if (DateTime.Today.Day != targetDay)
{
- this._logger.LogInformation("目标领取日期为{targetDay}号,今天是{day}号,跳过领取任务", targetDay, DateTime.Today.Day);
+ _logger.LogInformation("目标领取日期为{targetDay}号,今天是{day}号,跳过领取任务", targetDay, DateTime.Today.Day);
return;
}
@@ -56,12 +56,12 @@ public void ReceiveVipPrivilege(UseInfo useInfo)
if (vipType == 2)
{
- this.ReceiveVipPrivilege(1);
- this.ReceiveVipPrivilege(2);
+ ReceiveVipPrivilege(1);
+ ReceiveVipPrivilege(2);
}
else
{
- this._logger.LogInformation("普通会员和月度大会员每月不赠送B币券,所以不需要领取权益喽");
+ _logger.LogInformation("普通会员和月度大会员每月不赠送B币券,所以不需要领取权益喽");
}
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
index 9cdcdb8..1dca23b 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
+++ b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilder.cs
@@ -22,11 +22,11 @@ static JsonSerializerOptionsBuilder()
///
public static JsonSerializerOptions DefaultOptions;
- public List> buildActionList;
+ public List> BuildActionList { get; }
private JsonSerializerOptionsBuilder()
{
- this.buildActionList = new List>();
+ BuildActionList = new List>();
}
public static JsonSerializerOptionsBuilder Create()
@@ -38,7 +38,7 @@ public JsonSerializerOptions Build()
{
JsonSerializerOptions options = new();//这里没有使用 JsonSerializerDefaults.General 避免后续版本更新后设置改变
- foreach (Action item in this.buildActionList)
+ foreach (Action item in BuildActionList)
{
item?.Invoke(options);
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
index 4dac523..461e181 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
+++ b/src/Ray.BiliBiliTool.Infrastructure/JsonSerializerOptionsBuilderExtesions.cs
@@ -14,7 +14,7 @@ private static JsonSerializerOptionsBuilder SetActionBase(
{
builder.CheckNullWithException(nameof(builder));
action.CheckNullWithException(nameof(action));
- builder.buildActionList.Add(action);
+ builder.BuildActionList.Add(action);
return builder;
}
diff --git a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
index a0a34e8..9116b35 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
+++ b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
@@ -2,7 +2,6 @@
net5.0
-
diff --git a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
index 095e5c2..e86e4e4 100644
--- a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
+++ b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
@@ -1,7 +1,7 @@
- netstandard2.1
+ net5.0
From 074efc0c14430cdd5f022ae95deb9e3501c8879c Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Thu, 10 Dec 2020 10:36:41 +0800
Subject: [PATCH 20/21] =?UTF-8?q?=E5=BF=BD=E7=95=A5appsettings.PRD.json?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.gitignore b/.gitignore
index 80ad371..7184bed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -357,3 +357,5 @@ MigrationBackup/
.idea/
/src/Ray.BiliBiliTool.Console/Properties/launchSettings.json
+/src/Ray.BiliBiliTool.Console/appsettings.PRD.json
+
From 92d99e7c41a0f8a251eaf14b04a6c2715c1737d3 Mon Sep 17 00:00:00 2001
From: hjkl950217 <584880422@qq.com>
Date: Thu, 10 Dec 2020 14:42:10 +0800
Subject: [PATCH 21/21] =?UTF-8?q?=E5=88=A0=E9=99=A4Uitl=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ray.BiliBiliTool.sln | 19 ++++++-------------
.../Ray.BiliBiliTool.Config.csproj | 1 -
.../Extensions/DateTimeExtension.cs | 0
.../Extensions/IDictionaryExtensions.cs | 0
.../Extensions/KeyValuePairExtensions.cs | 0
.../Extensions/ObjectExtensions.cs | 0
.../Extensions/StringExtensions.cs | 0
.../Extensions/TypeExtensions.cs | 0
.../Ray.BiliBiliTool.Infrastructure.csproj | 5 +----
.../Ray.BiliBiliTool.Util.csproj | 10 ----------
.../InfrastructureTest.csproj} | 0
.../UnitTest1.cs | 0
12 files changed, 7 insertions(+), 28 deletions(-)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/DateTimeExtension.cs (100%)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/IDictionaryExtensions.cs (100%)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/KeyValuePairExtensions.cs (100%)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/ObjectExtensions.cs (100%)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/StringExtensions.cs (100%)
rename src/{Ray.BiliBiliTool.Util => Ray.BiliBiliTool.Infrastructure}/Extensions/TypeExtensions.cs (100%)
delete mode 100644 src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
rename test/{UtilTest/UtilTest.csproj => InfrastructureTest/InfrastructureTest.csproj} (100%)
rename test/{UtilTest => InfrastructureTest}/UnitTest1.cs (100%)
diff --git a/Ray.BiliBiliTool.sln b/Ray.BiliBiliTool.sln
index fdac25d..e9d82b9 100644
--- a/Ray.BiliBiliTool.sln
+++ b/Ray.BiliBiliTool.sln
@@ -44,9 +44,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Util", "src\Ray.BiliBiliTool.Util\Ray.BiliBiliTool.Util.csproj", "{B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UtilTest", "test\UtilTest\UtilTest.csproj", "{6A7B2E22-387E-41FB-BE5B-0252129683D9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfrastructureTest", "test\InfrastructureTest\InfrastructureTest.csproj", "{AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -102,14 +100,10 @@ Global
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F}.Release|Any CPU.Build.0 = Release|Any CPU
- {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00}.Release|Any CPU.Build.0 = Release|Any CPU
- {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6A7B2E22-387E-41FB-BE5B-0252129683D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -131,8 +125,7 @@ Global
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
{ECEEFE3F-F39F-44EE-8FA2-D5CDBB25397F} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
- {B6FEA041-F3EA-4F16-BFFE-8005EFA05E00} = {110D3D21-8E9B-45AB-9667-6DA1DB3862AC}
- {6A7B2E22-387E-41FB-BE5B-0252129683D9} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
+ {AE6A5DBE-E9EA-49C1-AB6C-7F01B2F19A8B} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {197319DA-1148-4A99-847C-8B270B6A29AB}
diff --git a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
index 9467385..69e4ac8 100644
--- a/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
+++ b/src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj
@@ -15,7 +15,6 @@
-
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/DateTimeExtension.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/DateTimeExtension.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/DateTimeExtension.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/DateTimeExtension.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/IDictionaryExtensions.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/IDictionaryExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/IDictionaryExtensions.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/IDictionaryExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/KeyValuePairExtensions.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/KeyValuePairExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/KeyValuePairExtensions.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/KeyValuePairExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/ObjectExtensions.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/ObjectExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/StringExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/StringExtensions.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/StringExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs b/src/Ray.BiliBiliTool.Infrastructure/Extensions/TypeExtensions.cs
similarity index 100%
rename from src/Ray.BiliBiliTool.Util/Extensions/TypeExtensions.cs
rename to src/Ray.BiliBiliTool.Infrastructure/Extensions/TypeExtensions.cs
diff --git a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
index 9116b35..c2dd779 100644
--- a/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
+++ b/src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj
@@ -7,9 +7,6 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj b/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
deleted file mode 100644
index e86e4e4..0000000
--- a/src/Ray.BiliBiliTool.Util/Ray.BiliBiliTool.Util.csproj
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- net5.0
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/UtilTest/UtilTest.csproj b/test/InfrastructureTest/InfrastructureTest.csproj
similarity index 100%
rename from test/UtilTest/UtilTest.csproj
rename to test/InfrastructureTest/InfrastructureTest.csproj
diff --git a/test/UtilTest/UnitTest1.cs b/test/InfrastructureTest/UnitTest1.cs
similarity index 100%
rename from test/UtilTest/UnitTest1.cs
rename to test/InfrastructureTest/UnitTest1.cs