Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修复错误,并增加专栏投币功能与领取大会员经验的功能 #617

Merged
merged 15 commits into from
Dec 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions scripts/publish.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime win-x86 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/win-x86
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime win-x64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/win-x64
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime win-arm64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/win-arm64
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime linux-x64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/linux-x64
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime linux-musl-x64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/linux-musl-x64
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime linux-arm64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/linux-arm64
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime linux-arm --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/linux-arm
dotnet.exe publish ../src/Ray.BiliBiliTool.Console/Ray.BiliBiliTool.Console.csproj --runtime osx-x64 --no-self-contained -c Release -p:PublishSingleFile=true -o ./bin/Publish/osx-x64
Remove-Item ./bin/Publish/win-x86/*.pdb
Remove-Item ./bin/Publish/win-x64/*.pdb
Remove-Item ./bin/Publish/win-arm64/*.pdb
Remove-Item ./bin/Publish/linux-x64/*.pdb
Remove-Item ./bin/Publish/linux-musl-x64/*.pdb
Remove-Item ./bin/Publish/linux-arm64/*.pdb
Remove-Item ./bin/Publish/linux-arm/*.pdb
Remove-Item ./bin/Publish/osx-x64/*.pdb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Article;

public class AddCoinForArticleRequest
{
public AddCoinForArticleRequest(long cvid,long mid,string csrf)
{
Aid = cvid;
Upid = mid;
Csrf = csrf;
}

public long Aid { get; set; }

public long Upid { get; set; }

public int Multiply { get; set; } = 1;

// 必须为2
public int Avtype { get; private set; } = 2;

public string Csrf { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Article;

public class SearchArticleInfoResponse
{
public int Like { get; set; }

public int Coin { get; set; }

public long Mid { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Article;

public class SearchArticlesByUpIdDto
{
public long Mid { get; set; }

public int Pn { get; set; } = 1;

public int Ps { get; set; } = 30;

public string Sort { get; set; } = "publish_time";
}

public class SearchArticlesByUpIdFullDto : SearchArticlesByUpIdDto
{
public string w_rid { get; set; }

public long wts { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Collections.Generic;

namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Article;

public class SearchUpArticlesResponse
{
public List<ArticleInfo> Articles { get; set; }
public int Count { get; set; }

}

public class ArticleInfo
{
public long Id { get; set; }

public string Title { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask;

public class VipExperienceRequest
{
public string csrf { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Collections.Generic;

namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask;

public class VouchersInfoResponse
{
public List<List> List { get; set; }
public bool IsShortVip { get; set; }
public bool IsFreightOpen { get; set; }
public int Level { get; set; }
public int CurExp { get; set; }
public int NextExp { get; set; }
public bool IsVip { get; set; }
public int IsSeniorMember { get; set; }
public int Format060102 { get; set; }
}


public class List
{
public int Type { get; set; }
public int State { get; set; }
public int ExpireTime { get; set; }
public int VipType { get; set; }
public int NextReceiveDays { get; set; }
public int PeriodEndUnix { get; set; }
}

45 changes: 45 additions & 0 deletions src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IArticleApi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Article;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Video;
using WebApiClientCore.Attributes;

namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
{

[Header("Host", "api.bilibili.com")]
public interface IArticleApi : IBiliBiliApi
{
[Header("Content-Type", "application/x-www-form-urlencoded")]
[Header("Origin", "https://www.bilibili.com")]
[HttpPost("/x/web-interface/coin/add")]
Task<BiliApiResponse> AddCoinForArticle([FormContent] AddCoinForArticleRequest request, [Header("referer")] string refer = "https://www.bilibili.com/read/cv5806746/?from=search&spm_id_from=333.337.0.0");


[Header("Referer", "https://www.bilibili.com/")]
[Header("Origin", "https://space.bilibili.com")]
[HttpGet("/x/space/wbi/article")]
Task<BiliApiResponse<SearchUpArticlesResponse>> SearchUpArticlesByUpId(
[PathQuery] SearchArticlesByUpIdFullDto request);

/// <summary>
/// 获取专栏详情
/// </summary>
/// <param name="cvid"></param>
/// <returns></returns>
[HttpGet("/x/article/viewinfo?id={cvid}")]
Task<BiliApiResponse<SearchArticleInfoResponse>> SearchArticleInfo(long cvid);


[Header("Content-Type", "application/x-www-form-urlencoded")]
[Header("Referer", "https://www.bilibili.com/read/cv{cvid}/?from=search&spm_id_from=333.337.0.0")]
[Header("Origin", "https://www.bilibili.com")]
[HttpPost("/x/article/like?id={cvid}&type=1&csrf={csrf}")]
Task<BiliApiResponse> Like(long cvid, string csrf);

}


}
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,12 @@ public interface IVipBigPointApi

[HttpPost("/pgc/activity/deliver/task/complete")]
Task<BiliApiResponse> ViewComplete([FormContent] ViewRequest request);

[HttpGet("/x/vip/privilege/my")]
Task<BiliApiResponse<VouchersInfoResponse>> GetVouchersInfo();

[Header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")]
[HttpPost("/x/vip/experience/add")]
Task<BiliApiResponse> GetVipExperience([FormContent] VipExperienceRequest request);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
services.AddBiliBiliClientApi<ILiveTraceApi>("https://live-trace.bilibili.com");
services.AddBiliBiliClientApi<IHomeApi>("https://www.bilibili.com", false);

// 添加注入
services.AddBiliBiliClientApi<IArticleApi>("https://api.bilibili.com");

//qinglong
var qinglongHost = configuration["QL_URL"] ?? "http://localhost:5600";
services
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Threading.Tasks;

namespace Ray.BiliBiliTool.Application.Contracts
{
Expand All @@ -12,5 +13,6 @@ namespace Ray.BiliBiliTool.Application.Contracts

public interface IVipBigPointAppService : IAppService
{
Task VipExpress();
}
}
30 changes: 26 additions & 4 deletions src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class DailyTaskAppService : AppService, IDailyTaskAppService
private readonly ILogger<DailyTaskAppService> _logger;
private readonly IAccountDomainService _accountDomainService;
private readonly IVideoDomainService _videoDomainService;
private readonly IArticleDomainService _articleDomainService;
private readonly IDonateCoinDomainService _donateCoinDomainService;
private readonly IMangaDomainService _mangaDomainService;
private readonly ILiveDomainService _liveDomainService;
Expand All @@ -41,6 +42,7 @@ public DailyTaskAppService(
IOptionsMonitor<Dictionary<string, int>> dicOptions,
IAccountDomainService accountDomainService,
IVideoDomainService videoDomainService,
IArticleDomainService articleDomainService,
IDonateCoinDomainService donateCoinDomainService,
IMangaDomainService mangaDomainService,
ILiveDomainService liveDomainService,
Expand All @@ -56,6 +58,7 @@ public DailyTaskAppService(
_expDic = dicOptions.Get(Constants.OptionsNames.ExpDictionaryName);
_accountDomainService = accountDomainService;
_videoDomainService = videoDomainService;
_articleDomainService = articleDomainService;
_donateCoinDomainService = donateCoinDomainService;
_mangaDomainService = mangaDomainService;
_liveDomainService = liveDomainService;
Expand All @@ -79,7 +82,8 @@ public override async Task DoTaskAsync(CancellationToken cancellationToken)

DailyTaskInfo dailyTaskInfo = await GetDailyTaskStatus();
await WatchAndShareVideo(dailyTaskInfo);
await AddCoinsForVideo(userInfo);

await AddCoins(userInfo);

//签到:
await LiveSign();
Expand All @@ -91,6 +95,9 @@ public override async Task DoTaskAsync(CancellationToken cancellationToken)
await ReceiveVipPrivilege(userInfo);
await ReceiveMangaVipReward(userInfo);

//TODO 大会员领经验


await Charge(userInfo);
}

Expand Down Expand Up @@ -124,7 +131,7 @@ protected async Task<BiliCookie> SetCookiesAsync(BiliCookie biliCookie, Cancella
private async Task<UserInfo> Login()
{
UserInfo userInfo = await _accountDomainService.LoginByCookie();
if (userInfo == null) throw new Exception("登录失败,请检查Cookie");//终止流程
if (userInfo == null) throw new Exception("登录失败,请检查Cookie"); //终止流程

_expDic.TryGetValue("每日登录", out int exp);
_logger.LogInformation("登录成功,经验+{exp} √", exp);
Expand Down Expand Up @@ -153,21 +160,36 @@ private async Task WatchAndShareVideo(DailyTaskInfo dailyTaskInfo)
_logger.LogInformation("已配置为关闭,跳过任务");
return;
}

await _videoDomainService.WatchAndShareVideo(dailyTaskInfo);
}

/// <summary>
/// 投币任务
/// </summary>
[TaskInterceptor("投币", rethrowWhenException: false)]
private async Task AddCoinsForVideo(UserInfo userInfo)
private async Task AddCoins(UserInfo userInfo)
{
if (_dailyTaskOptions.SaveCoinsWhenLv6 && userInfo.Level_info.Current_level >= 6)
{
_logger.LogInformation("已经为LV6大佬,开始白嫖");
return;
}
await _donateCoinDomainService.AddCoinsForVideos();

if (_dailyTaskOptions.IsDonateCoinForArticle)
{
_logger.LogInformation("专栏投币已开启");

if (!await _articleDomainService.AddCoinForArticles())
{
_logger.LogInformation("专栏投币结束,转入视频投币");
await _donateCoinDomainService.AddCoinsForVideos();
}
}
else
{
await _donateCoinDomainService.AddCoinsForVideos();
}
}

/// <summary>
Expand Down
Loading