Skip to content

Commit

Permalink
Merge branch 'release/0.0.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
RayWangQvQ committed Feb 19, 2022
2 parents 2ea8865 + f034c32 commit 7bae43a
Show file tree
Hide file tree
Showing 13 changed files with 102 additions and 30 deletions.
1 change: 1 addition & 0 deletions .github/workflows/live-lottery-task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ env:
Ray_LiveLotteryTaskConfig__ExcludeAwardNames: ${{secrets.EXCLUDEAWARDNAMES}} # 天选抽奖指定排除关键字
Ray_LiveLotteryTaskConfig__IncludeAwardNames: ${{secrets.INCLUDEAWARDNAMES}} # 天选抽奖指定包含关键字
Ray_LiveLotteryTaskConfig__AutoGroupFollowings: ${{secrets.AUTOGROUPFOLLOWINGS}} # 抽奖结束后是否将关注主播自动分组
Ray_LiveLotteryTaskConfig__DenyUids: ${{secrets.LIVELOTTERYDENYUIDS}} # 天选筹抽奖主播Uid黑名单
# 推送:
Ray_Serilog__WriteTo__3__Args__botToken: ${{secrets.PUSHTGTOKEN}} # Telegram
Ray_Serilog__WriteTo__3__Args__chatId: ${{secrets.PUSHTGCHATID}}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/unfollow-batched-task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ env:
# 批量取关任务:
Ray_UnfollowBatchedTaskConfig__GroupName: ${{ github.event.inputs.group }}
Ray_UnfollowBatchedTaskConfig__Count: ${{ github.event.inputs.count }}
Ray_UnfollowBatchedTaskConfig__RetainUids: ${{secrets.UNFOLLOWBATCHEDRETAINUIDS}}

jobs:
run-task:
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## 0.0.1
- 重启项目
- 支持[青龙面板](https://github.com/whyour/qinglong)部署
## 0.0.2
- 更新文档
- 天选抽奖新增黑名单功能
- 批量取关新增白名单功能
17 changes: 7 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![2233](https://cdn.jsdelivr.net/gh/RayWangQvQ/BiliBiliTool.Docs@main/imgs/2233.png)
![2233](docs/imgs/2233.png)

<div align="center">

Expand Down Expand Up @@ -29,6 +29,7 @@ BiliBiliTool
- [1.2.2. 方式二:下载程序包到本地或服务器运行](#122-方式二下载程序包到本地或服务器运行)
- [1.2.3. 方式三:腾讯云函数SCF](#123-方式三腾讯云函数scf)
- [1.2.4. 方式四:docker容器化运行(推荐)](#124-方式四docker容器化运行推荐)
- [1.2.5. 方式五:青龙运行](#125-方式五青龙运行)
- [2. 功能任务说明](#2-功能任务说明)
- [3. 个性化自定义配置](#3-个性化自定义配置)
- [4. 多账号支持](#4-多账号支持)
Expand All @@ -42,9 +43,7 @@ BiliBiliTool

<!-- /TOC -->

**BiliBiliTool 是一个 B 站自动执行任务的工具,当我们忘记做 B 站的某项任务时,它会像一个小助手一样,按照我们预先吩咐她的命令,在指定时间、按照指定频率,帮助我们自动完成计划的任务。**

比如,当我们忘记领取自己的大会员福利时,她会帮助我们在月初自动领取;当我们忘记完成每日任务时,她会辅助我们自动完成所有任务,获取每日的满额65点经验值,快速升级 Lv6 ;当然我们也可以用她来支持我们喜欢的up主,拒绝白嫖~
**BiliBiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个小助手一样,按照我们预先吩咐她的命令,在指定时间、按照指定频率,帮助我们自动完成计划的任务。**

详细功能如下:

Expand All @@ -62,9 +61,9 @@ BiliBiliTool

还有其他一些辅助小功能,大家可以自己去自由探索~

![运行图示](https://cdn.jsdelivr.net/gh/RayWangQvQ/BiliBiliTool.Docs@main/imgs/run-exe.png)
![运行图示](docs/imgs/run-exe.png)

**Github 仓库地址:[RayWangQvQ/BiliBiliTool](https://github.com/RayWangQvQ/BiliBiliToolPro)**
**Github 仓库地址:[RayWangQvQ/BiliBiliToolPro](https://github.com/RayWangQvQ/BiliBiliToolPro)**

**注意:**

Expand All @@ -76,9 +75,7 @@ _(如果图片挂了,是因为 GitHub 的服务器在国外,经常会刷

## 1. 如何使用

BiliBiliTool 实现自动完成任务的原理,是通过调用一系列 B 站开放的api实现的。

BiliBiliTool 就是收集了一系列api,通过每日自动运行程序,依次调用接口,来实现各任务的。
BiliBiliTool 实现自动完成任务的原理,是通过调用一系列开放的api实现的。

**要使用 BiliBiliTool,我们只需要做两步:获取自己的 Cookie 作为配置,然后将其输入 BiliBiliTool 并运行即可。**

Expand Down Expand Up @@ -289,7 +286,7 @@ dotnet Ray.BiliBiliTool.Console.dll --runTasks=Daily&LiveLottery

**☟☟☟ 扫码自动赞赏 1 元:☟☟☟**

![赞赏码](https://cdn.jsdelivr.net/gh/RayWangQvQ/BiliBiliTool.Docs@main/imgs/donate.jpg)
![赞赏码](docs/imgs/donate.jpg)

另外,应用中的优先支持的UP主的配置项,默认是作者的 UpId (只是作为了 json 配置文件的默认值,代码是干净的),需要更改的话,直接修改相应配置即可(secrets或环境变量等各种方式都行)。

Expand Down
2 changes: 1 addition & 1 deletion common.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<Authors>Ray</Authors>
<Version>0.0.1</Version>
<Version>0.0.2</Version>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
</PropertyGroup>
</Project>
46 changes: 41 additions & 5 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- [1.2. 方式二:命令启动时通过命令行参数配置](#12-方式二命令启动时通过命令行参数配置)
- [1.3. 方式三:添加环境变量(推荐)](#13-方式三添加环境变量推荐)
- [1.4. 方式四:托管在GitHub Actions上,使用GitHub Secrets配置](#14-方式四托管在github-actions上使用github-secrets配置)
- [1.5. 方式五:托管在青龙面板上,使用面板的配置文件页配置](#15-方式五托管在青龙面板上使用面板的配置文件页配置)
- [2. 优先级](#2-优先级)
- [3. 详细配置说明](#3-详细配置说明)
- [3.1. Cookie字符串](#31-cookie字符串)
Expand All @@ -31,9 +32,11 @@
- [3.4.1. 根据关键字排除奖品](#341-根据关键字排除奖品)
- [3.4.2. 根据关键字指定奖品](#342-根据关键字指定奖品)
- [3.4.3. 天选抽奖后是否自动分组关注的主播](#343-天选抽奖后是否自动分组关注的主播)
- [3.4.4. 天选筹抽奖主播Uid黑名单](#344-天选筹抽奖主播uid黑名单)
- [3.5. 批量取关相关](#35-批量取关相关)
- [3.5.1. 想要批量取关的分组名称](#351-想要批量取关的分组名称)
- [3.5.2. 批量取关的人数](#352-批量取关的人数)
- [3.5.3. 取关白名单](#353-取关白名单)
- [3.6. 推送相关](#36-推送相关)
- [3.6.1. Telegram机器人](#361-telegram机器人)
- [3.6.1.1. botToken](#3611-bottoken)
Expand Down Expand Up @@ -139,16 +142,26 @@ Secret Value:`123abc`

![添加GitHub Secrets](imgs/git-secrets.png)

<a id="markdown-15-方式五托管在青龙面板上使用面板的配置文件页配置" name="15-方式五托管在青龙面板上使用面板的配置文件页配置"></a>
### 1.5. 方式五:托管在青龙面板上,使用面板的配置文件页配置
青龙面板配置,其本质还是通过环境变量进行配置。Linux使用export关键字来添加环境变量,青龙面板中的`配置文件`页面可以用来保存这些export指令。

例如,配置Cookie和推送:

```
export Ray_BiliBiliCookies__1="_uuid=abc..."
export Ray_Serilog__WriteTo__9__Args__token="abcde"
```

当然,Cookie还可以在青龙面板的`环境变量`页配置,名称是`Ray_BiliBiliCookies__1``Ray_BiliBiliCookies__2`,指就是对应的CK。好处是可以方便地通过点击禁用或开启来管理多账号。


<a id="markdown-2-优先级" name="2-优先级"></a>
## 2. 优先级

以上 4 种配置源,其优先级由低到高依次是:json文件 < 环境变量(和Github Secrets) < 命令行。

即,如果既在配置文件中写入了配置值,又在命令行启动时使用命令行参数指定了配置值,则最后会使用命令行的。

**对于使用 Github Action 线上运行的朋友,建议只使用 Secrets 进行配置。** 因为 Fork 项目后,不会拷贝源仓库中的 Secrets,可自由的在自己的仓库中进行私人配置。当有新版本发布时,同步仓库会很顺滑,不会影响到已配置的值。

当然, Fork 之后自己改了 appsettings.json 文件再提交,也是可以实现配置的。但是一则你的配置值将被暴露出来(别人可通过访问你的仓库里的配置查看到值),二是以后如果需要 PR 源仓库的更新到自己仓库,则要注意保留自己的修改不要被同步操作覆盖。
高优先级的配置会覆盖低优先级的配置。

<a id="markdown-3-详细配置说明" name="3-详细配置说明"></a>
## 3. 详细配置说明
Expand Down Expand Up @@ -396,6 +409,18 @@ Secret Value:`123abc`
| 环境变量 | `Ray_LiveLotteryTaskConfig__AutoGroupFollowings` |
| GitHub Secrets | `AUTOGROUPFOLLOWINGS` Value: `true`|

<a id="markdown-344-天选筹抽奖主播uid黑名单" name="344-天选筹抽奖主播uid黑名单"></a>
#### 3.4.4. 天选筹抽奖主播Uid黑名单

不想参与抽奖的主播Upid集合,多个用英文逗号分隔,配置后不会参加黑名单中的主播的抽奖活动。默认值是目前已知的中奖后拒绝发奖的Up,后期还会继续补充,也反映反馈。
| TITLE | CONTENT |
| ---------- | -------------- |
| 配置Key | `LiveLotteryTaskConfig__DenyUids` |
| 值域 | 字符串,如"65566781,1277481241" |
| 默认值 | "65566781,1277481241,1643654862,603676925" |
| 环境变量 | `Ray_LiveLotteryTaskConfig__DenyUids` |
| GitHub Secrets | `LIVELOTTERYDENYUIDS` Value: `65566781,1277481241,1643654862,603676925`|

<a id="markdown-35-批量取关相关" name="35-批量取关相关"></a>
### 3.5. 批量取关相关

Expand All @@ -421,6 +446,17 @@ Secret Value:`123abc`
| 环境变量 | `Ray_UnfollowBatchedTaskConfig__Count` |
| GitHub Secrets | 无,在unfollow-batched-task.yml工作流中通过input输入 |

<a id="markdown-353-取关白名单" name="353-取关白名单"></a>
#### 3.5.3. 取关白名单

| TITLE | CONTENT |
| ---------- | -------------- |
| 配置Key | `Ray_UnfollowBatchedTaskConfig__RetainUids` |
| 值域 | 字符串,多个使用英文逗号分隔 |
| 默认值 | 108569350 |
| 环境变量 | `Ray_UnfollowBatchedTaskConfig__RetainUids` |
| GitHub Secrets | `UNFOLLOWBATCHEDRETAINUIDS` |

<a id="markdown-36-推送相关" name="36-推送相关"></a>
### 3.6. 推送相关
v1.0.x仅支持推送到Server酱,v1.1.x之后重新定义了推送地概念,将推送仅看作不同地日志输出端,与Console、File没有本质区别。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ IAccountDomainService accountDomainService
[TaskInterceptor("批量取关", TaskLevel.One)]
public override void DoTask()
{
_accountDomainService.UnfollowBatched(_unfollowBatchedTaskOptions.GroupName,
_unfollowBatchedTaskOptions.Count);
_accountDomainService.UnfollowBatched();
}
}
}
7 changes: 7 additions & 0 deletions src/Ray.BiliBiliTool.Config/Options/LiveLotteryTaskOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,12 @@ public class LiveLotteryTaskOptions


public bool AutoGroupFollowings { get; set; } = true;

public string DenyUids { get; set; }

public List<string> DenyUidList =>
DenyUids?.Split(",",
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList()
?? new List<string>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,12 @@ public class UnfollowBatchedTaskOptions
public string GroupName { get; set; }

public int Count { get; set; } = 0;

public string RetainUids { get; set; }

public List<string> RetainUidList =>
RetainUids?.Split(",",
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList()
?? new List<string>();
}
}
8 changes: 5 additions & 3 deletions src/Ray.BiliBiliTool.Console/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
""
],

"RunTasks": "Daily", //要运行的任务名称[Daily,LiveLottery],多个使用&分隔,如“Daily&LiveLottery”,建议使用命令行参数指定
"RunTasks": "Daily", //要运行的任务名称[Daily,LiveLottery,UnfollowBatched,Test],多个使用&分隔,如“Daily&LiveLottery”,建议使用命令行参数指定

//程序自定义个性化配置
"DailyTaskConfig": {
Expand All @@ -24,12 +24,14 @@
"LiveLotteryTaskConfig": {
"ExcludeAwardNames": "舰|船|航海|代金券|自拍|照|写真|图|提督", //根据关键字排除包含这些文字的奖品名称,多个用“|”分隔,如“照|舰|船|航海|代金券|自拍”
"IncludeAwardNames": "", //根据关键字指定奖品名称必须包含的文字,多个用“|”分隔,如“红包|现金|块|元”
"AutoGroupFollowings": true //抽奖结束后是否自动将关注的主播分组到“天选时刻”分组,值域[true,false]
"AutoGroupFollowings": true, //抽奖结束后是否自动将关注的主播分组到“天选时刻”分组,值域[true,false]
"DenyUids": "65566781,1277481241,1643654862,603676925" //主播Uid黑名单(一般是中奖后的老赖),多个用英文逗号分隔,配置后不会参加黑名单中的主播的抽奖活动
},

"UnfollowBatchedTaskConfig": {
"GroupName": "天选时刻", //取关的分组名称
"Count": 5 //本次取关个数(倒序,从后往前取关)
"Count": 1, //本次取关个数(倒序,从后往前取关)
"RetainUids": "108569350" //白名单(保留的UpId),多个用英文都好分隔,配置后,批量取关时不会取关配置的Up
},

//安全相关配置
Expand Down
22 changes: 16 additions & 6 deletions src/Ray.BiliBiliTool.DomainService/AccountDomainService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Relation;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces;
using Ray.BiliBiliTool.Config;
using Ray.BiliBiliTool.Config.Options;
using Ray.BiliBiliTool.DomainService.Interfaces;

namespace Ray.BiliBiliTool.DomainService
Expand All @@ -21,21 +22,24 @@ public class AccountDomainService : IAccountDomainService
private readonly IDailyTaskApi _dailyTaskApi;
private readonly IUserInfoApi _userInfoApi;
private readonly IRelationApi _relationApi;
private readonly UnfollowBatchedTaskOptions _unfollowBatchedTaskOptions;
private readonly BiliCookie _cookie;

public AccountDomainService(
ILogger<AccountDomainService> logger,
IDailyTaskApi dailyTaskApi,
BiliCookie cookie,
IUserInfoApi userInfoApi,
IRelationApi relationApi
IRelationApi relationApi,
IOptionsMonitor<UnfollowBatchedTaskOptions> unfollowBatchedTaskOptions
)
{
_logger = logger;
_dailyTaskApi = dailyTaskApi;
_cookie = cookie;
_userInfoApi = userInfoApi;
_relationApi = relationApi;
_unfollowBatchedTaskOptions = unfollowBatchedTaskOptions.CurrentValue;
}

/// <summary>
Expand Down Expand Up @@ -102,12 +106,12 @@ public DailyTaskInfo GetDailyTaskStatus()
/// </summary>
/// <param name="groupName"></param>
/// <param name="count"></param>
public void UnfollowBatched(string groupName, int count)
public void UnfollowBatched()
{
_logger.LogInformation("【分组名】{group}", groupName);
_logger.LogInformation("【分组名】{group}", _unfollowBatchedTaskOptions.GroupName);

//根据分组名称获取tag
TagDto tag = GetTag(groupName);
TagDto tag = GetTag(_unfollowBatchedTaskOptions.GroupName);
int? tagId = tag?.Tagid;
int total = tag?.Count ?? 0;

Expand All @@ -122,7 +126,7 @@ public void UnfollowBatched(string groupName, int count)
_logger.LogWarning("分组下不存在up");
return;
}

int count = _unfollowBatchedTaskOptions.Count;
if (count == -1) count = total;

_logger.LogInformation("【分组下共有】{count}人", total);
Expand Down Expand Up @@ -174,6 +178,12 @@ public void UnfollowBatched(string groupName, int count)
_logger.LogInformation("【序号】{num}", i);
_logger.LogInformation("【UP】{up}", info.Uname);

if (_unfollowBatchedTaskOptions.RetainUidList.Contains(info.Mid.ToString()))
{
_logger.LogInformation("【取关结果】白名单,跳过" + Environment.NewLine);
continue;
}

string modifyReferer = string.Format(RelationApiConstant.ModifyReferer, _cookie.UserId, tagId);
var modifyReq = new ModifyRelationRequest(info.Mid, _cookie.BiliJct);
var re = _relationApi.ModifyRelation(modifyReq, modifyReferer)
Expand All @@ -194,7 +204,7 @@ public void UnfollowBatched(string groupName, int count)
_logger.LogInformation("【本次共取关】{count}人", success);

//计算剩余
tag = GetTag(groupName);
tag = GetTag(_unfollowBatchedTaskOptions.GroupName);
_logger.LogInformation("【分组下剩余】{count}人", tag?.Count ?? 0);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ public interface IAccountDomainService : IDomainService
/// <summary>
/// 批量取关
/// </summary>
/// <param name="groupName"></param>
/// <param name="count"></param>
void UnfollowBatched(string groupName, int count);
void UnfollowBatched();
}
}
7 changes: 7 additions & 0 deletions src/Ray.BiliBiliTool.DomainService/LiveDomainService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,13 @@ public void TryJoinTianXuan(ListItemDto target)
_logger.LogDebug("【房间】{name}", target.Title);
try
{
//黑名单
if (_liveLotteryTaskOptions.DenyUidList.Contains(target.Uid.ToString()))
{
_logger.LogDebug("黑名单,跳过");
return;
}

CheckTianXuanDto check = _liveApi.CheckTianXuan(target.Roomid)
.GetAwaiter().GetResult()
.Data;
Expand Down

0 comments on commit 7bae43a

Please sign in to comment.