From 9e08fc7b6732f30d80fe627f92a5fce714cdfce7 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 5 Jan 2025 02:05:03 +0800 Subject: [PATCH] init VIP big point ogv watch API --- .../pgc/activity/deliver/material/receive.bru | 2 +- .../BiliBiliAgent/Dtos/BaseAppRequest.cs | 29 +++++++++++++ .../Dtos/VipTask/CompleteOgvWatchRequest.cs | 18 ++++++++ .../Dtos/VipTask/StartOgvWatchRequest.cs | 12 ++++++ .../Dtos/VipTask/StartOgvWatchResponse.cs | 12 ++++++ .../BiliBiliAgent/Dtos/VipTask/ViewRequest.cs | 35 +++++++--------- .../Interfaces/IVipBigPointApi.cs | 16 ++++++- src/Ray.BiliBiliTool.Agent/Constants.cs | 6 +++ .../VipBigPointAppService.cs | 42 +++++++++++++------ 9 files changed, 136 insertions(+), 36 deletions(-) create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/BaseAppRequest.cs create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/CompleteOgvWatchRequest.cs create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchRequest.cs create mode 100644 src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchResponse.cs create mode 100644 src/Ray.BiliBiliTool.Agent/Constants.cs diff --git a/bruno/app.bilibili.com/pgc/activity/deliver/material/receive.bru b/bruno/app.bilibili.com/pgc/activity/deliver/material/receive.bru index d5a1b4e1d..05fe03f14 100644 --- a/bruno/app.bilibili.com/pgc/activity/deliver/material/receive.bru +++ b/bruno/app.bilibili.com/pgc/activity/deliver/material/receive.bru @@ -18,7 +18,7 @@ headers { session_id: e04d2e05 env: prod app-key: android64 - user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2 + user-agent: {{user-agent}} x-bili-trace-id: 0564afa825e0e1ec59164fe59367755a:59164fe59367755a:0:0 x-bili-aurora-eid: UlAAQFkMBVkH x-bili-mid: {{mid}} diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/BaseAppRequest.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/BaseAppRequest.cs new file mode 100644 index 000000000..ab2187ca7 --- /dev/null +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/BaseAppRequest.cs @@ -0,0 +1,29 @@ +namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos; + +public class BaseAppRequest +{ + // public string access_key { get; set; } + // public string appkey { get; set; } + + public string build { get; } = "7720200"; + + public string c_locale { get; } = "zh_CN"; + + public string channel { get; } = Constants.Channel; + + public int disable_rcmd { get; } = 0; + + public string from_spmid { get; } = "united.player-video-detail.player.continue"; + + public string mobi_app { get; } = "android"; + + public string platform { get; } = "android"; + + public string s_locale { get; } = "zh_CN"; + + public string statistics { get; } = "{\"appId\":1,\"platform\":3,\"version\":\"7.72.0\",\"abtest\":\"\"}"; + + // public long ts { get; set; } + + public string sign { get; set; } +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/CompleteOgvWatchRequest.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/CompleteOgvWatchRequest.cs new file mode 100644 index 000000000..86cc27768 --- /dev/null +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/CompleteOgvWatchRequest.cs @@ -0,0 +1,18 @@ +namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask; + +public class CompleteOgvWatchRequest: BaseAppRequest +{ + public CompleteOgvWatchRequest(long taskId, string token) + { + task_id = taskId; + this.token = token; + } + + public long task_id { get; set; } + + public string token { get; set; } + + public string task_sign { get; set; } + + public long timestamp { get; set; } +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchRequest.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchRequest.cs new file mode 100644 index 000000000..ce3050576 --- /dev/null +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchRequest.cs @@ -0,0 +1,12 @@ +namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask; + +public class StartOgvWatchRequest: BaseAppRequest +{ + public long ep_id { get; } = 328482; + + public long season_id { get; } = 12548; + + public string Activity_code { get; } = ""; + + public string spmid { get; } = "united.player-video-detail.0.0"; +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchResponse.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchResponse.cs new file mode 100644 index 000000000..d4edbd457 --- /dev/null +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/StartOgvWatchResponse.cs @@ -0,0 +1,12 @@ +namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask; + +public class StartOgvWatchResponse +{ + public string closeType { get; set; } + + public string showTime { get; set; } + + public long task_id { get; set; } + + public string token { get; set; } +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/ViewRequest.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/ViewRequest.cs index d2459a3c9..505ce0aac 100644 --- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/ViewRequest.cs +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/VipTask/ViewRequest.cs @@ -1,32 +1,25 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask; -namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.VipTask +public class ViewRequest { - public class ViewRequest + public ViewRequest(string position) { - public ViewRequest(string position) - { - this.position=position; - } + this.position=position; + } - public string position { get; set; } + public string position { get; } - public string c_locale { get; set; } = "zh_CN"; + public string c_locale { get; } = "zh_CN"; - public string channel { get; set; } = "html5_search_baidu"; + public string channel { get; } = Constants.Channel; - public int disable_rcmd { get; set; } = 0; + public int disable_rcmd { get; } = 0; - public string mobi_app { get; set; } = "android"; + public string mobi_app { get; } = "android"; - public string platform { get; set; } = "android"; + public string platform { get; } = "android"; - public string s_locale { get; set; } = "zh_CN"; + public string s_locale { get; } = "zh_CN"; - public string statistics { get; set; } = "{\"appId\":1,\"platform\":3,\"version\":\"6.85.0\",\"abtest\":\"\"}"; - } -} + public string statistics { get; } = "{\"appId\":1,\"platform\":3,\"version\":\"6.85.0\",\"abtest\":\"\"}"; +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IVipBigPointApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IVipBigPointApi.cs index b6a1ad423..c22106895 100644 --- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IVipBigPointApi.cs +++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IVipBigPointApi.cs @@ -10,7 +10,7 @@ namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces; /// /// 大会员大积分 /// -[Header("Host", "api.bilibili.com")] +[Header("Host", "api.bilibili.com")] [Header("Referer", "https://big.bilibili.com/mobile/bigPoint/task")] [LogFilter] public interface IVipBigPointApi @@ -81,4 +81,18 @@ public interface IVipBigPointApi /// [HttpPost("/x/vip/experience/add")] Task ObtainVipExperienceAsync([FormContent] VipExperienceRequest request); + + /// + /// 开始观看剧集任务 + /// + /// + /// + Task> StartOgvWatchAsync(StartOgvWatchRequest request); + + /// + /// 完成观看剧集任务 + /// + /// + /// + Task CompleteOgvWatchAsync(CompleteOgvWatchRequest request); } diff --git a/src/Ray.BiliBiliTool.Agent/Constants.cs b/src/Ray.BiliBiliTool.Agent/Constants.cs new file mode 100644 index 000000000..cfa65d411 --- /dev/null +++ b/src/Ray.BiliBiliTool.Agent/Constants.cs @@ -0,0 +1,6 @@ +namespace Ray.BiliBiliTool.Agent; + +public static class Constants +{ + public const string Channel = "yingyongbao"; +} \ No newline at end of file diff --git a/src/Ray.BiliBiliTool.Application/VipBigPointAppService.cs b/src/Ray.BiliBiliTool.Application/VipBigPointAppService.cs index 5569cdae0..bd2b42104 100644 --- a/src/Ray.BiliBiliTool.Application/VipBigPointAppService.cs +++ b/src/Ray.BiliBiliTool.Application/VipBigPointAppService.cs @@ -93,7 +93,7 @@ public override async Task DoTaskAsync(CancellationToken cancellationToken = def taskInfo = await ViewDressMall(taskInfo); //观看剧集内容 - taskInfo = await ViewVideo(taskInfo); + taskInfo = await OgvWatchAsync(taskInfo); taskInfo.LogInfo(_logger); } @@ -393,11 +393,11 @@ private async Task ViewVipMall(VipTaskInfo info) return info; } - [TaskInterceptor("观看剧集内容", TaskLevel.Two, false)] - private async Task ViewVideo(VipTaskInfo info) + [TaskInterceptor("浏览装扮商城主页", TaskLevel.Two, false)] + private async Task ViewDressMall(VipTaskInfo info) { const string moduleCode = "日常任务"; - const string taskCode = "ogvwatchnew"; + const string taskCode = "dress-view"; CommonTaskItem targetTask = GetTarget(info, moduleCode, taskCode); @@ -407,7 +407,7 @@ private async Task ViewVideo(VipTaskInfo info) return info; } - // 如果状态不等于3,则做 + //如果状态不等于3,则做 if (targetTask.state == 3) { _logger.LogInformation("已完成,跳过"); @@ -422,18 +422,27 @@ private async Task ViewVideo(VipTaskInfo info) } _logger.LogInformation("开始完成任务"); + var re = await CompleteV2(targetTask.task_code); + + //确认 + if (re) + { + var infoResult = await _vipApi.GetTaskListAsync(); + if (infoResult.Code != 0) throw new Exception(infoResult.ToJsonStr()); + info = infoResult.Data; + targetTask = GetTarget(info, moduleCode, taskCode); - // 观看剧集内容 - _logger.LogInformation("api变更,暂未实现"); + _logger.LogInformation("确认:{re}", targetTask.state == 3 && targetTask.complete_times >= 1); + } return info; } - [TaskInterceptor("浏览装扮商城主页", TaskLevel.Two, false)] - private async Task ViewDressMall(VipTaskInfo info) + [TaskInterceptor("观看剧集", TaskLevel.Two, false)] + private async Task OgvWatchAsync(VipTaskInfo info) { const string moduleCode = "日常任务"; - const string taskCode = "dress-view"; + const string taskCode = "ogvwatchnew"; CommonTaskItem targetTask = GetTarget(info, moduleCode, taskCode); @@ -457,11 +466,18 @@ private async Task ViewDressMall(VipTaskInfo info) await TryReceive(targetTask.task_code); } - _logger.LogInformation("开始完成任务"); - var re = await CompleteV2(targetTask.task_code); + _logger.LogInformation("开始任务"); + var startResult = await _vipApi.StartOgvWatchAsync(new StartOgvWatchRequest()); + + _logger.LogInformation("开始浏览"); + await Task.Delay(10 * 1000); + + _logger.LogInformation("开始上报"); + var request = new CompleteOgvWatchRequest(startResult.Data.task_id, startResult.Data.token); // todo: sign + var re = await _vipApi.CompleteOgvWatchAsync(request); //确认 - if (re) + if (re.Code == 0) { var infoResult = await _vipApi.GetTaskListAsync(); if (infoResult.Code != 0) throw new Exception(infoResult.ToJsonStr());