diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbdd6a99f..fc1962371 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -116,3 +116,6 @@
## 2.0.0
- Feature[#513]:将基础组件和抽象迁移到nuget包中
- Fix[#543]:修复部分Api调用报“访问权限不足”
+## 2.0.1
+- PR[#539]:更新文档
+- PR[#557]:修复直播接口权限不足问题
diff --git a/common.props b/common.props
index bd970f30b..79e7c677e 100644
--- a/common.props
+++ b/common.props
@@ -1,7 +1,7 @@
Ray
- 2.0.0
+ 2.0.1
$(NoWarn);CS1591;CS0436
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/GetSpaceInfoFullDto.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/GetSpaceInfoFullDto.cs
new file mode 100644
index 000000000..0f388ec9a
--- /dev/null
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Dtos/GetSpaceInfoFullDto.cs
@@ -0,0 +1,12 @@
+namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
+
+public class GetSpaceInfoDto
+{
+ public long mid { get; set; }
+}
+public class GetSpaceInfoFullDto : GetSpaceInfoDto
+{
+ public string w_rid { get; set; }
+
+ public long wts { get; set; }
+}
diff --git a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
index 1feb2176b..656972769 100644
--- a/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
+++ b/src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IUserInfoApi.cs
@@ -26,7 +26,7 @@ public interface IUserInfoApi : IBiliBiliApi
///
/// uid
///
- [HttpGet("/x/space/wbi/acc/info?mid={userId}")]
- Task> GetSpaceInfo(long userId);
+ [HttpGet("/x/space/wbi/acc/info")]
+ Task> GetSpaceInfo([PathQuery] GetSpaceInfoFullDto request);
}
}
diff --git a/src/Ray.BiliBiliTool.DomainService/LiveDomainService.cs b/src/Ray.BiliBiliTool.DomainService/LiveDomainService.cs
index 389d2e36a..71e9fe23f 100644
--- a/src/Ray.BiliBiliTool.DomainService/LiveDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/LiveDomainService.cs
@@ -33,7 +33,7 @@ public class LiveDomainService : ILiveDomainService
private readonly DailyTaskOptions _dailyTaskOptions;
private readonly SecurityOptions _securityOptions;
private readonly BiliCookie _biliCookie;
-
+ private readonly IWbiDomainService _wbiDomainService;
public LiveDomainService(ILogger logger,
ILiveApi liveApi,
@@ -44,6 +44,7 @@ public LiveDomainService(ILogger logger,
IOptionsMonitor liveLotteryTaskOptions,
IOptionsMonitor liveFansMedalTaskOptions,
IOptionsMonitor securityOptions,
+ IWbiDomainService wbiDomainService,
BiliCookie biliCookie)
{
_logger = logger;
@@ -55,6 +56,7 @@ public LiveDomainService(ILogger logger,
_dailyTaskOptions = dailyTaskOptions.CurrentValue;
_liveFansMedalTaskOptions = liveFansMedalTaskOptions.CurrentValue;
_securityOptions = securityOptions.CurrentValue;
+ _wbiDomainService = wbiDomainService;
_biliCookie = biliCookie;
}
@@ -407,7 +409,20 @@ public async Task SendDanmakuToFansMedalLive()
// 通过空间主页信息获取直播间 id
var liveHostUserId = medal.Medal_info.Target_id;
- var spaceInfo = await _userInfoApi.GetSpaceInfo(liveHostUserId);
+ var req = new GetSpaceInfoDto()
+ {
+ mid = liveHostUserId
+ };
+
+
+ var w_ridDto = await _wbiDomainService.GetWridAsync(req);
+ var fullDto = new GetSpaceInfoFullDto()
+ {
+ mid = liveHostUserId,
+ w_rid = w_ridDto.w_rid,
+ wts = w_ridDto.wts
+ };
+ var spaceInfo = await _userInfoApi.GetSpaceInfo(fullDto);
if (spaceInfo.Code != 0)
{
_logger.LogError("【获取直播间信息】失败");
@@ -578,7 +593,20 @@ private async Task> GetFansMedalInfoList()
// 通过空间主页信息获取直播间 id
var liveHostUserId = medal.Medal_info.Target_id;
- var spaceInfo = await _userInfoApi.GetSpaceInfo(liveHostUserId);
+ var req = new GetSpaceInfoDto()
+ {
+ mid = liveHostUserId
+ };
+
+
+ var w_ridDto = await _wbiDomainService.GetWridAsync(req);
+ var fullDto = new GetSpaceInfoFullDto()
+ {
+ mid = liveHostUserId,
+ w_rid = w_ridDto.w_rid,
+ wts = w_ridDto.wts
+ };
+ var spaceInfo = await _userInfoApi.GetSpaceInfo(fullDto);
if (spaceInfo.Code != 0)
{
_logger.LogError("【获取空间信息】失败");
diff --git a/tencentScf/README.md b/tencentScf/README.md
index 6c4266fa5..d8d194e76 100644
--- a/tencentScf/README.md
+++ b/tencentScf/README.md
@@ -1,226 +1,229 @@
-# 腾讯云云函数(SCF)部署说明
-
-
-- [腾讯云云函数(SCF)部署说明](#腾讯云云函数scf部署说明)
- - [1. 介绍](#1-介绍)
- - [2. 注册账号](#2-注册账号)
- - [3. 部署](#3-部署)
- - [3.1. 方式一:Actions自动部署(推荐)](#31-方式一actions自动部署推荐)
- - [3.1.1. 复刻本仓库到自己的GitHub仓库](#311-复刻本仓库到自己的github仓库)
- - [3.1.2. 到腾讯云获取密钥](#312-到腾讯云获取密钥)
- - [3.1.3. 通过 Secrets 添加配置](#313-通过-secrets-添加配置)
- - [3.1.3.1. 密钥相关配置](#3131-密钥相关配置)
- - [3.1.3.2. 云函数配置](#3132-云函数配置)
- - [3.1.3.3. 自动定时更新部署配置](#3133-自动定时更新部署配置)
- - [3.1.4. 手动执行Actions](#314-手动执行actions)
- - [3.1.5. 测试云函数](#315-测试云函数)
- - [3.2. 方式二:上传zip包部署](#32-方式二上传zip包部署)
- - [3.2.1. 下载压缩包到本地](#321-下载压缩包到本地)
- - [3.2.2. 云函数控制台新增函数服务](#322-云函数控制台新增函数服务)
- - [3.2.3. 手动运行测试](#323-手动运行测试)
- - [3.2.4. 配置触发器,设定运行时间和频率](#324-配置触发器设定运行时间和频率)
- - [4. 测试](#4-测试)
- - [5. 关于腾讯云日志](#5-关于腾讯云日志)
-
-
-
-## 1. 介绍
-见[腾讯云官网](https://cloud.tencent.com/document/product/583)
-
-## 2. 注册账号
-注册成功后,需要激活云函数 SCF 功能。因为会赠送免费额度,所以正常使用是免费的。
-
-## 3. 部署
-以下两种方式任选一个适合自己需求的即可。
-### 3.1. 方式一:Actions自动部署(推荐)
-该方式可以实现自动定期部署,保证代码始终的最新版本的。
-#### 3.1.1. 复刻本仓库到自己的GitHub仓库
-点击本 GitHub 仓库右上角的 `Fork` 按钮,复刻本项目到自己的仓库。
-
-#### 3.1.2. 到腾讯云获取密钥
-[官方对授权的说明](https://cloud.tencent.com/document/product/1154/43006)
-
-手动部署时,可以通过扫描二维码来进行授权。但为了避免人工的重复授权,我们将采用密钥授权的方式,步骤如下:
-
-**Ⅰ.登录腾讯云后,点击进入[腾讯云密钥管理](https://console.cloud.tencent.com/cam/capi)页面**
-
-如果提示创建子账号,可以先拒绝。简单起见,直接使用主账号创建即可。
-
-**Ⅱ.点击新建密钥按钮,创建一个密钥。复制并保存 `SecretId` 和 `SecretKey` 两项内容,待会儿会用到它们**
-
-如下图所示:
-![新建密钥](../docs/imgs/tencent-scf-secret.png)
-
-#### 3.1.3. 通过 Secrets 添加配置
-进入自己 fork 的仓库,点击 Settings-> Secrets-> New repository secret,添加如下 Secrets 作为配置:
-
-##### 3.1.3.1. 密钥相关配置
-这两个配置决定了会部署到哪个腾讯云账户的 SCF 下面。
-
-| 配置名称 | Name | Value |
-| :----: | :----: | :----: |
-| Id | `TENCENT_SECRET_ID` | 刚才在官网获取到的 SecretId |
-| Key | `TENCENT_SECRET_KEY` | 刚才在官网获取到的 SecretKey |
-
-##### 3.1.3.2. 云函数配置
-Actions 使用 `Serverless Framework` 来部署,通过 `serverless.yml` 来配置函数信息(如函数应用名称、区域、环境变量和触发器等)。
-
-配置步骤如下:
-
-**Ⅰ.拷贝或下载 [serverless.yml](./serverless.yml) 文件内容到本地文件中,开始编辑内容**
-
-其中主要需要改的是最下方的环境变量,这些环境变量在部署后会添加到云函数中(即云函数控制台看到的环境变量集合),它们将作为应用配置传入 bilibili_tool
-
-例如,你需要增加一个**环境变量**,在最下方添加内容应该是(注意缩进问题):
-
-```yaml
- environment:
- variables: # 根据自己的需要修改
- Ray_BiliBiliCookies__1: 123 # cookie,必填
- Ray_Security__RandomSleepMaxMin: 20
- Ray_Security__IntervalSecondsBetweenRequestApi: 20
-```
-
-注意:其中 cookie 是必填项,其他应用配置的也可以通过添加相应的环境变量实现,建议自己添加UA、推送等配置。(更多配置项请参考[配置说明文档](../docs/configuration.md),仅用于参考环境变量,请只关注表格中的`环境变量`一项,并参照上面的方式添加)
-
-> 如果你不熟悉 yml 或者部署时遇到格式问题,建议花几分钟阅读 [YAML 入门教程](https://www.runoob.com/w3cnote/yaml-intro.html)
-> 常犯错误:
-> Q:我在 Github Secrets 中添加了 `NUMBEROFCOINS`,值为 2,为啥投币数量还是 5。
-> A:所有自定义配置项(环境变量) _不能通过 Github Secrets 添加_,只能写在 `serverless.yml` 中。你应该参考上面的例子添加环境变量 `Ray_DailyTaskConfig__NumberOfCoins`。
-
-其他 `serverless.yml` 可选配置内容请参考[官方说明](https://github.com/serverless-components/tencent-scf/blob/master/docs/configure.md)
-
-**Ⅱ.拷贝修改后的内容,将其整个添加到 secrets 中**
-
-| 配置名称 | Name | Value |
-| :----: | :----: | :----: |
-| serverless.yml内容 | `TENCENT_SERVERLESS_YML` | 刚才拷贝的整个文件内容 |
-
-如下图所示:
-![新增serverless.yml配置到secret](../docs/imgs/tencent-scf-secret_yml.png)
-
-##### 3.1.3.3. 自动定时更新部署配置
-
-添加如下配置开启自动定时部署:
-
-| 配置名称 | Name | Value |
-| :----: | :----: | :----: |
-| 定时自动部署 | `IS_AUTO_DEPLOY_TENCENT_SCF` | true |
-
-自动部署只是定时会将自己仓库的代码部署到云函数,想要自动更新,还需要开启仓库的自动同步,详见常见问题文档中的 《我 Fork 之后如何同步原作者的更新内容?》章节
-
-#### 3.1.4. 手动执行Actions
-在自己仓库页面,依次点击 Actions ——> auto-deploy-tencent-scf ——> Run workfolw ,手动触发部署工作流。
-
-如下图所示:
-![运行actions](../docs/imgs/tencent-scf-actions.png)
-
-#### 3.1.5. 测试云函数
-如果部署成功,那么登录自己的腾讯云函数控制台,就可以看到对应的函数应用了。
-
-请参考下节《测试》进行手动测试函数运行。
-
-### 3.2. 方式二:上传zip包部署
-该方式比较简单直观,但是代码是上传是固定版本,想更新的话需要再次手动上传。
-#### 3.2.1. 下载压缩包到本地
-点击[BiliBiliToolPro/release](https://github.com/RayWangQvQ/BiliBiliToolPro/releases),选择最新版本的 `tencent-scf.zip` ,下载到本地
-#### 3.2.2. 云函数控制台新增函数服务
-**Ⅰ.进入[云函数控制台](https://console.cloud.tencent.com/scf/),单击左侧导航栏【函数服务】,进入“函数服务”页面。顶部地域选择一个靠近自己地址的,点击新建按钮。**
-
-如下图:
-
-![tencent-scf-create.png](../docs/imgs/tencent-scf-create.png)
-
-**Ⅱ.填写基本信息**
-* 创建方式:选择自定义创建
-* 函数名称:bilibili_tool
-* 地域:刚才已经选过了
-* 运行环境:CustomRuntime
-* 函数代码提交方式:本地上传zip包
-* 执行方法:index.main_handler
-* 函数代码:点击后选择之前本地下载好的zip包
-
-如下图:
-
-![tencent-scf-create-basic.png](../docs/imgs/tencent-scf-create-basic.png)
-
-**Ⅲ.点击展开高级配置,添加配置**
-* 初始化超时时间:30
-* 执行超时时间:86400(会警告超范围,先不用管,下面开启异步之后就好了)
-* 环境变量(这里先加 2 个配置就行了,后续可以再添加其他的):
- * cookie 配置:key 为 `Ray_BiliBiliCookies__1` , value 为之前浏览器抓取到的cookie字符串
- * 随机睡眠配置:key 为 `Ray_Security__RandomSleepMaxMin` ,value 为 `0` (为了方便测试,所以先关掉,后面测好之后再删掉该配置,或者自己改一个value值)
-
-如下图:
-
-![tencent-scf-create-env.png](../docs/imgs/tencent-scf-create-env.png)
-
-**Ⅳ.继续下滚,找到执行配置模块:**
-* 异步执行:勾选启用
-* 状态追踪:勾选启用
-
-如下图:
-
-![tencent-scf-create-async.png](../docs/imgs/tencent-scf-create-async.png)
-
-**Ⅴ.点击完成按钮,创建函数**
-
-触发器配置先不用管,可以等测试完成后再添加
-
-#### 3.2.3. 手动运行测试
-参考下节《测试》进行手动测试。
-
-#### 3.2.4. 配置触发器,设定运行时间和频率
-**Ⅰ.点击左侧【触发管理】导航,点击“创建触发器”按钮**
-
-如下图:
-
-![tencent-scf-trigger-create.png](../docs/imgs/tencent-scf-trigger-create.png)
-
-**Ⅱ.填写触发器信息**
-* 触发方式:定时触发
-* 定时任务名称:DailyTask
-* 触发周期:自定义触发周期
-* Cron表达式:自己根据需求指定,10 15 * * * 表示每天15点10分运行,不会的可以做下搜索工作,规则很简单
-* 附加信息:是
-* 信息内容:`Daily`
-* 立即启用:勾选启用
-填完后点击提交按钮提交,即可完成。如下图:
-
-![tencent-scf-trigger-add.png](../docs/imgs/tencent-scf-trigger-add.png)
-
-这里的附加信息将作为runTasks(欲运行的任务编码)配置,通过命令行传入程序。想多个任务共用一个触发器的话,可以使用&号拼接任务编码,填入附加信息,如 `Daily&LiveLottery`
-
-等到触发器设定的时间,对应的触发器就会去运行应用,自动完成任务。
-
-## 4. 测试
-
-**Ⅰ.成功部署好函数后,会看到如下的函数管理页面,点击顶部函数代码 Tab 页,准备测试。**
-
-如下图:
-
-![tencent-scf-test-1.png](../docs/imgs/tencent-scf-test-1.png)
-
-**Ⅱ.下拉,找到测试按钮,点击运行测试,页面下方会同步显示日志。如果运行正常,则表示部署已成功。**
-
-如下图:
-
-![tencent-scf-test-2](../docs/imgs/tencent-scf-test-2.png)
-
-## 5. 关于腾讯云日志
-
-**Ⅰ.腾讯云关于CLS日志的免费额度说明如下:**
-
-![Tencent-log-docs-1.png](../docs/imgs/Tencent-log-docs-1.png)
-
-**Ⅱ.实测每日运行函数日志花费如图:**
-
-![Tencent-log-bill-1.png](../docs/imgs/Tencent-log-bill-1.png)
-
-**Ⅲ.如果需要完全白嫖(即不需要任何费用)的话,可以切至[腾讯云日志服务页](https://console.cloud.tencent.com/cls/overview)**
-
-**Ⅳ.点击侧边栏的日志主题,并找到云函数所在地域,如图所示:**
-
-![Tencent-logpage-1.png](../docs/imgs/Tencent-logpage-1.png)
-
-**Ⅴ.点击删除,则将删除此日志主题,云函数因为无法定位到日志集,就不会产生额外费用。**
+# 腾讯云云函数(SCF)部署说明
+
+
+- [腾讯云云函数(SCF)部署说明](#腾讯云云函数scf部署说明)
+ - [1. 介绍](#1-介绍)
+ - [2. 注册账号](#2-注册账号)
+ - [3. 部署](#3-部署)
+ - [3.1. 方式一:Actions自动部署(推荐)](#31-方式一actions自动部署推荐)
+ - [3.1.1. 复刻本仓库到自己的GitHub仓库](#311-复刻本仓库到自己的github仓库)
+ - [3.1.2. 到腾讯云获取密钥](#312-到腾讯云获取密钥)
+ - [3.1.3. 通过 Secrets 添加配置](#313-通过-secrets-添加配置)
+ - [3.1.3.1. 密钥相关配置](#3131-密钥相关配置)
+ - [3.1.3.2. 云函数配置](#3132-云函数配置)
+ - [3.1.3.3. 自动定时更新部署配置](#3133-自动定时更新部署配置)
+ - [3.1.4. 手动执行Actions](#314-手动执行actions)
+ - [3.1.5. 测试云函数](#315-测试云函数)
+ - [3.2. 方式二:上传zip包部署](#32-方式二上传zip包部署)
+ - [3.2.1. 下载压缩包到本地](#321-下载压缩包到本地)
+ - [3.2.2. 云函数控制台新增函数服务](#322-云函数控制台新增函数服务)
+ - [3.2.3. 手动运行测试](#323-手动运行测试)
+ - [3.2.4. 配置触发器,设定运行时间和频率](#324-配置触发器设定运行时间和频率)
+ - [4. 测试](#4-测试)
+ - [5. 关于腾讯云日志](#5-关于腾讯云日志)
+
+
+
+## 1. 介绍
+见[腾讯云官网](https://cloud.tencent.com/document/product/583)
+
+## 2. 注册账号
+注册成功后,需要激活云函数 SCF 功能。因为会赠送免费额度,所以正常使用是免费的。
+
+## 3. 部署
+以下两种方式任选一个适合自己需求的即可。
+### 3.1. 方式一:Actions自动部署(推荐)
+该方式可以实现自动定期部署,保证代码始终的最新版本的。
+#### 3.1.1. 复刻本仓库到自己的GitHub仓库
+点击本 GitHub 仓库右上角的 `Fork` 按钮,复刻本项目到自己的仓库。
+
+#### 3.1.2. 到腾讯云获取密钥
+[官方对授权的说明](https://cloud.tencent.com/document/product/1154/43006)
+
+手动部署时,可以通过扫描二维码来进行授权。但为了避免人工的重复授权,我们将采用密钥授权的方式,步骤如下:
+
+**Ⅰ.登录腾讯云后,点击进入[腾讯云密钥管理](https://console.cloud.tencent.com/cam/capi)页面**
+
+如果提示创建子账号,可以先拒绝。简单起见,直接使用主账号创建即可。
+
+**Ⅱ.点击新建密钥按钮,创建一个密钥。复制并保存 `SecretId` 和 `SecretKey` 两项内容,待会儿会用到它们**
+
+如下图所示:
+![新建密钥](../docs/imgs/tencent-scf-secret.png)
+
+#### 3.1.3. 通过 Secrets 添加配置
+进入自己 fork 的仓库,点击 Settings-> Secrets-> New repository secret,添加如下 Secrets 作为配置:
+
+##### 3.1.3.1. 密钥相关配置
+这两个配置决定了会部署到哪个腾讯云账户的 SCF 下面。
+
+| 配置名称 | Name | Value |
+| :----: | :----: | :----: |
+| Id | `TENCENT_SECRET_ID` | 刚才在官网获取到的 SecretId |
+| Key | `TENCENT_SECRET_KEY` | 刚才在官网获取到的 SecretKey |
+
+##### 3.1.3.2. 云函数配置
+Actions 使用 `Serverless Framework` 来部署,通过 `serverless.yml` 来配置函数信息(如函数应用名称、区域、环境变量和触发器等)。
+
+配置步骤如下:
+
+**Ⅰ.拷贝或下载 [serverless.yml](./serverless.yml) 文件内容到本地文件中,开始编辑内容**
+
+其中主要需要改的是最下方的环境变量,这些环境变量在部署后会添加到云函数中(即云函数控制台看到的环境变量集合),它们将作为应用配置传入 bilibili_tool
+
+例如,你需要增加一个**环境变量**,在最下方添加内容应该是(注意缩进问题):
+
+```yaml
+ environment:
+ variables: # 根据自己的需要修改
+ Ray_BiliBiliCookies__1: 123 # cookie,必填
+ Ray_Security__RandomSleepMaxMin: 20
+ Ray_Security__IntervalSecondsBetweenRequestApi: 20
+```
+
+注意:其中 cookie 是必填项,其他应用配置的也可以通过添加相应的环境变量实现,建议自己添加UA、推送等配置。(更多配置项请参考[配置说明文档](../docs/configuration.md),仅用于参考环境变量,请只关注表格中的`环境变量`一项,并参照上面的方式添加)
+
+> 如果你不熟悉 yml 或者部署时遇到格式问题,建议花几分钟阅读 [YAML 入门教程](https://www.runoob.com/w3cnote/yaml-intro.html)
+> 常犯错误:
+> Q:我在 Github Secrets 中添加了 `NUMBEROFCOINS`,值为 2,为啥投币数量还是 5。
+> A:所有自定义配置项(环境变量) _不能通过 Github Secrets 添加_,只能写在 `serverless.yml` 中。你应该参考上面的例子添加环境变量 `Ray_DailyTaskConfig__NumberOfCoins`。
+
+其他 `serverless.yml` 可选配置内容请参考[官方说明](https://github.com/serverless-components/tencent-scf/blob/master/docs/configure.md)
+
+**Ⅱ.拷贝修改后的内容,将其整个添加到 secrets 中**
+
+| 配置名称 | Name | Value |
+| :----: | :----: | :----: |
+| serverless.yml内容 | `TENCENT_SERVERLESS_YML` | 刚才拷贝的整个文件内容 |
+
+如下图所示:
+![新增serverless.yml配置到secret](../docs/imgs/tencent-scf-secret_yml.png)
+
+##### 3.1.3.3. 自动定时更新部署配置
+
+添加如下配置开启自动定时部署:
+
+| 配置名称 | Name | Value |
+| :----: | :----: | :----: |
+| 定时自动部署 | `IS_AUTO_DEPLOY_TENCENT_SCF` | true |
+
+自动部署只是定时会将自己仓库的代码部署到云函数,想要自动更新,还需要开启仓库的自动同步,详见常见问题文档中的 《我 Fork 之后如何同步原作者的更新内容?》章节
+
+#### 3.1.4. 手动执行Actions
+在自己仓库页面,依次点击 Actions ——> auto-deploy-tencent-scf ——> Run workfolw ,手动触发部署工作流。
+
+如下图所示:
+![运行actions](../docs/imgs/tencent-scf-actions.png)
+
+#### 3.1.5. 测试云函数
+如果部署成功,那么登录自己的腾讯云函数控制台,就可以看到对应的函数应用了。
+
+请参考下节《测试》进行手动测试函数运行。
+
+### 3.2. 方式二:上传zip包部署
+该方式比较简单直观,但是代码是上传是固定版本,想更新的话需要再次手动上传。
+#### 3.2.1. 下载压缩包到本地
+点击[BiliBiliToolPro/release](https://github.com/RayWangQvQ/BiliBiliToolPro/releases),选择最新版本的 `tencent-scf.zip` ,下载到本地
+#### 3.2.2. 云函数控制台新增函数服务
+**Ⅰ.进入[云函数控制台](https://console.cloud.tencent.com/scf/),单击左侧导航栏【函数服务】,进入“函数服务”页面。顶部地域选择一个靠近自己地址的,点击新建按钮。**
+
+如下图:
+
+![tencent-scf-create.png](../docs/imgs/tencent-scf-create.png)
+
+**Ⅱ.填写基本信息**
+* 创建方式:选择自定义创建
+* 函数名称:bilibili_tool
+* 地域:刚才已经选过了
+* 运行环境:CustomRuntime
+* 函数代码提交方式:本地上传zip包
+* 执行方法:index.main_handler
+* 函数代码:点击后选择之前本地下载好的zip包
+
+如下图:
+
+![tencent-scf-create-basic.png](../docs/imgs/tencent-scf-create-basic.png)
+
+**Ⅲ.点击展开高级配置,添加配置**
+* 初始化超时时间:30
+* 执行超时时间:86400(会警告超范围,先不用管,下面开启异步之后就好了)
+* 环境变量(这里先加 2 个配置就行了,后续可以再添加其他的):
+ * cookie 配置:key 为 `Ray_BiliBiliCookies__1` , value 为之前浏览器抓取到的cookie字符串
+ * 随机睡眠配置:key 为 `Ray_Security__RandomSleepMaxMin` ,value 为 `0` (为了方便测试,所以先关掉,后面测好之后再删掉该配置,或者自己改一个value值)
+ * 指定任务:key 为 `Ray_RunTasks` ,value 为 `Test` (供首次部署时测试使用,后续将通过触发器传递功能任务)
+
+如下图:
+
+![tencent-scf-create-env.png](../docs/imgs/tencent-scf-create-env.png)
+
+**Ⅳ.继续下滚,找到执行配置模块:**
+* 异步执行:勾选启用
+* 状态追踪:勾选启用
+
+如下图:
+
+![tencent-scf-create-async.png](../docs/imgs/tencent-scf-create-async.png)
+
+**Ⅴ.点击完成按钮,创建函数**
+
+触发器配置先不用管,可以等测试完成后再添加
+
+#### 3.2.3. 手动运行测试
+参考下节《测试》进行手动测试。
+
+#### 3.2.4. 配置触发器,设定运行时间和频率
+**Ⅰ.点击左侧【触发管理】导航,点击“创建触发器”按钮**
+
+如下图:
+
+![tencent-scf-trigger-create.png](../docs/imgs/tencent-scf-trigger-create.png)
+
+**Ⅱ.填写触发器信息**
+* 触发方式:定时触发
+* 定时任务名称:DailyTask
+* 触发周期:自定义触发周期
+* Cron表达式:自己根据需求指定,10 15 * * * 表示每天15点10分运行,不会的可以做下搜索工作,规则很简单
+* 附加信息:是
+* 信息内容:`Daily`
+* 立即启用:勾选启用
+填完后点击提交按钮提交,即可完成。如下图:
+
+![tencent-scf-trigger-add.png](../docs/imgs/tencent-scf-trigger-add.png)
+
+这里的附加信息将作为runTasks(欲运行的任务编码)配置,通过命令行传入程序。想多个任务共用一个触发器的话,可以使用&号拼接任务编码,填入附加信息,如 `Daily&LiveLottery`
+
+等到触发器设定的时间,对应的触发器就会去运行应用,自动完成任务。
+
+## 4. 测试
+
+**Ⅰ.成功部署好函数后,会看到如下的函数管理页面,点击顶部函数代码 Tab 页,准备测试。**
+
+如下图:
+
+![tencent-scf-test-1.png](../docs/imgs/tencent-scf-test-1.png)
+
+**Ⅱ.下拉,找到测试按钮,点击运行测试,页面下方会同步显示日志。如果运行正常,则表示部署已成功。**
+
+如下图:
+
+![tencent-scf-test-2](../docs/imgs/tencent-scf-test-2.png)
+
+**Ⅲ.返回函数配置页面,将之前配置的环境变量`Ray_RunTasks`删除,后续函数将自动执行触发器中配置的功能任务**
+
+## 5. 关于腾讯云日志
+
+**Ⅰ.腾讯云关于CLS日志的免费额度说明如下:**
+
+![Tencent-log-docs-1.png](../docs/imgs/Tencent-log-docs-1.png)
+
+**Ⅱ.实测每日运行函数日志花费如图:**
+
+![Tencent-log-bill-1.png](../docs/imgs/Tencent-log-bill-1.png)
+
+**Ⅲ.如果需要完全白嫖(即不需要任何费用)的话,可以切至[腾讯云日志服务页](https://console.cloud.tencent.com/cls/overview)**
+
+**Ⅳ.点击侧边栏的日志主题,并找到云函数所在地域,如图所示:**
+
+![Tencent-logpage-1.png](../docs/imgs/Tencent-logpage-1.png)
+
+**Ⅴ.点击删除,则将删除此日志主题,云函数因为无法定位到日志集,就不会产生额外费用。**
diff --git a/test/BiliAgentTest/LiveApiTest.cs b/test/BiliAgentTest/LiveApiTest.cs
index c1114748c..5cbf686d8 100644
--- a/test/BiliAgentTest/LiveApiTest.cs
+++ b/test/BiliAgentTest/LiveApiTest.cs
@@ -10,6 +10,7 @@
using System.Threading.Tasks;
using Ray.BiliBiliTool.Infrastructure.Cookie;
using Xunit;
+using Ray.BiliBiliTool.DomainService.Interfaces;
namespace BiliAgentTest
{
@@ -123,7 +124,7 @@ public void WearMedalWall_Normal_Success()
}
[Fact]
- public void GetSpaceInfo_Normal_Success()
+ public async Task GetSpaceInfo_Normal_Success()
{
using var scope = Global.ServiceProviderRoot.CreateScope();
@@ -131,7 +132,25 @@ public void GetSpaceInfo_Normal_Success()
var api = scope.ServiceProvider.GetRequiredService();
var biliCookie = scope.ServiceProvider.GetRequiredService();
- BiliApiResponse re = api.GetSpaceInfo(919174).Result;
+ var domainService = scope.ServiceProvider.GetRequiredService();
+
+ var req = new GetSpaceInfoDto()
+ {
+ mid = 919174L
+ };
+
+ var w_ridDto = await domainService.GetWridAsync(req);
+
+ var fullDto = new GetSpaceInfoFullDto()
+ {
+ mid = 919174L,
+ w_rid = w_ridDto.w_rid,
+ wts = w_ridDto.wts
+ };
+
+
+
+ BiliApiResponse re = api.GetSpaceInfo(fullDto).Result;
Assert.True(re.Code == 0);
Assert.NotNull(re.Data);