diff --git a/CHANGELOG.md b/CHANGELOG.md
index 40f920e66..2bc05e509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -55,3 +55,11 @@
- Feature(#240):新增gotify推送
- Feature(#259):大会员状态改为枚举类型,当非会员时自动跳过大积分任务
- Feature:更新、优化docker部署文档
+## 0.2.2
+- 新增`podman`部署教程
+- 合并PR(#264),腾讯云定时任务补充新增的大会员大积分任务,感谢@layui0320
+- 合并PR(#262),更新docker的entry.sh,感谢@syrinka
+- 合并PR(#308 #312),新增Chart部署,感谢@chenliu1993
+- 合并PR(#309)新增lv6后开启白嫖模式的配置(多账号时可以实现不足lv6的继续投币,达到lv6的开始白嫖),感谢@cluom
+- 优化青龙安装dotnet的脚本,改为使用官方`dotnet-install.sh`脚本安装(之前测试网络不通,后发现--no-cdn可以)
+- 优化青龙的执行脚本,提取公共部分,并且在执行前会尝试安装一次dotnet,会清理一次缓存
diff --git a/Dockerfile b/Dockerfile
index 350b2972d..793987493 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -35,7 +35,7 @@ FROM base AS final
WORKDIR /app
ENV TIME_ZONE=Asia/Shanghai
COPY --from=publish /app/publish .
-COPY ./docker/entry.sh ./docker/crontab /app/
+COPY ./docker/scripts/* ./docker/crontab /app/scripts/
RUN ln -fs /usr/share/zoneinfo/$TIME_ZONE /etc/localtime \
&& echo $TIME_ZONE > /etc/timezone \
&& cp /etc/apt/sources.list /etc/apt/sources.list.bak \
@@ -45,7 +45,9 @@ RUN ln -fs /usr/share/zoneinfo/$TIME_ZONE /etc/localtime \
&& apt-get update \
&& apt-get install -y cron tzdata tofrodos \
&& apt-get clean \
- && fromdos /app/entry.sh \
- && chmod +x /app/entry.sh \
- && fromdos /app/crontab
-ENTRYPOINT ["/bin/bash", "-c", "/app/entry.sh"]
+ && fromdos /app/scripts/entry_before.sh \
+ && fromdos /app/scripts/entry.sh \
+ && fromdos /app/scripts/entry_after.sh \
+ && chmod -R +x /app/scripts/ \
+ && fromdos /app/scripts/crontab
+ENTRYPOINT ["/bin/bash", "-c", "/app/scripts/entry.sh"]
diff --git a/README.md b/README.md
index 7630ba1a9..3cb5d732f 100644
--- a/README.md
+++ b/README.md
@@ -40,13 +40,15 @@ BiliBiliTool
- [1. 如何使用](#1-如何使用)
- - [1.1. 第一步:获取BiliBili的 Cookie](#11-第一步获取BiliBili的-cookie)
+ - [1.1. 第一步:获取BiliBili的 Cookie](#11-第一步获取bilibili的-cookie)
- [1.2. 第二步:配置 Cookie 并运行 BiliBiliTool](#12-第二步配置-cookie-并运行-bilibilitool)
- - [1.2.1. 方式一:Docker容器化运行(推荐)](#121-方式一docker容器化运行推荐)
- - [1.2.2. 方式二:青龙运行](#122-方式二青龙运行)
+ - [1.2.1. 方式一:青龙运行(推荐)](#121-方式一青龙运行推荐)
+ - [1.2.2. 方式二:Docker或Podman容器化运行](#122-方式二docker或podman容器化运行)
- [1.2.3. 方式三:下载程序包到本地或服务器运行](#123-方式三下载程序包到本地或服务器运行)
- [1.2.4. 方式四:腾讯云函数SCF](#124-方式四腾讯云函数scf)
- - ~~[1.2.5. 方式五:GitHub Actions](#125-方式五github-actions)~~
+ - [1.2.5. 方式五:~~GitHub Actions~~](#125-方式五github-actions)
+ - [1.2.6. 方式六:Chart部署](#126-方式六chart部署)
+ - [1.3. 消息推动(可选)](#13-消息推动可选)
- [2. 功能任务说明](#2-功能任务说明)
- [3. 个性化自定义配置](#3-个性化自定义配置)
- [4. 多账号支持](#4-多账号支持)
@@ -67,8 +69,7 @@ BiliBiliTool
- **本应用仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!**
- **所有代码都是开源且透明的,任何人均可查看,程序不会保存或滥用任何用户的个人信息**
-- **应用内几乎所有功能都开放为了配置(如任务开关、日期、upId等),请仔细阅读配置文档,自己对自己的配置负责**
-
+- **应用内几乎所有功能都开放为了配置(如任务开关、日期、id等),详细信息可阅读配置文档,请自己对配置负责**
本地运行图示:
@@ -95,14 +96,16 @@ BiliBiliTool 实现自动完成任务的原理,是通过调用一系列开放
### 1.2. 第二步:配置 Cookie 并运行 BiliBiliTool
-#### 1.2.1. 方式一:Docker容器化运行(推荐)
+#### 1.2.1. 方式一:青龙运行(推荐)
-[>>Docker部署说明](docker/README.md)
+[>>青龙部署教程](qinglong/README.md)
+#### 1.2.2. 方式二:Docker或Podman容器化运行
-#### 1.2.2. 方式二:青龙运行
+[>>Docker部署说明](docker/README.md)
+
+[>>Podman部署说明](podman/README.md)
-[>>青龙部署教程](qinglong/README.md)
#### 1.2.3. 方式三:下载程序包到本地或服务器运行
如果是 DotNet 开发者,直接 Clone 源码,然后 VS 打开解决方案,配置 Cookie 后即可直接本地进行运行和调试。
@@ -162,16 +165,24 @@ Ray.BiliBiliTool.Console
#### 1.2.4. 方式四:腾讯云函数SCF
+当前腾讯云函数已改为收费模式,不推荐。
+
[>>腾讯云函数部署说明](tencentScf/README.md)
-#### 1.2.5. 方式五:GitHub Actions
+#### 1.2.5. 方式五:~~GitHub Actions~~
+
暂时删掉该方式避避风头。
**建议所有使用该方式运行的朋友,暂时先替换其他运行方式,避免造成不必要的损失。**
+#### 1.2.6. 方式六:Chart部署
+
+[>>Chart部署说明](helm/README.md)
+
+### 1.3. 消息推动(可选)
-如果配置了推送,执行成功后接收端会收到推送消息,推送效果如下所示:
+如果配置了推送,执行成功后,指定的接收端会收到推送消息,推送效果如下所示:
![微信推送图示](docs/imgs/wechat-push.png)
diff --git a/common.props b/common.props
index 4a3626e8a..0300fb102 100644
--- a/common.props
+++ b/common.props
@@ -1,7 +1,7 @@
Ray
- 0.2.1
+ 0.2.2
$(NoWarn);CS1591;CS0436
diff --git a/docker/README.md b/docker/README.md
index 6c9269452..656eca55d 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -56,7 +56,7 @@ wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/sa
docker compose up -d
# 查看启动日志
-docker logs -f bilibili_tool_pro
+docker logs -f bili
```
### 2.2. 修改bili下的docker-compose.yml,填入cookie
@@ -83,10 +83,10 @@ docker compose up -d
docker compose stop
# 查看实时日志
-docker logs -f bilibili_tool_pro
+docker logs -f bili
# 进入容器
-docker exec -it bilibili_tool_pro /bin/bash
+docker exec -it bili /bin/bash
# 手动更新容器
docker compose pull && docker compose up -d
@@ -98,8 +98,8 @@ docker compose pull && docker compose up -d
```
# 生成并运行容器
-docker run -d --name="bilibili_tool_pro" \
- -v /bilibili_tool/Logs:/app/Logs \
+docker run -d --name="bili" \
+ -v /bili/Logs:/app/Logs \
-e Ray_BiliBiliCookies__1="cookie" \
-e Ray_DailyTaskConfig__Cron="0 15 * * *" \
-e Ray_LiveLotteryTaskConfig__Cron="0 22 * * *" \
@@ -108,7 +108,7 @@ docker run -d --name="bilibili_tool_pro" \
zai7lou/bilibili_tool_pro
# 查看实时日志
-docker logs -f bilibili_tool_pro
+docker logs -f bili
```
其中,`cookie`需要替换为自己真实的cookie字符串
@@ -117,16 +117,16 @@ docker logs -f bilibili_tool_pro
```
# 启动容器
-docker start bilibili_tool_pro
+docker start bili
# 停止容器
-docker stop bilibili_tool_pro
+docker stop bili
# 删除容器
-docker rm bilibili_tool_pro
+docker rm bili
# 进入容器
-docker exec -it bilibili_tool_pro /bin/bash
+docker exec -it bili /bin/bash
```
### 3.3. 使用Watchtower更新容器
@@ -135,7 +135,7 @@ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once --cleanup \
- bilibili_tool_pro
+ bili
```
## 4. 自己构建镜像(非必须)
diff --git a/docker/build/buildImage.cmd b/docker/build/buildImage.cmd
index f4916cb54..2f9d0676a 100644
--- a/docker/build/buildImage.cmd
+++ b/docker/build/buildImage.cmd
@@ -3,6 +3,6 @@
REM start to build
echo Start to build docker image
@echo on
-docker build --tag zai7lou/bilibili_tool_pro:0.2.1 --tag zai7lou/bilibili_tool_pro:latest ../..
+docker build --tag zai7lou/bilibili_tool_pro:0.2.2 --tag zai7lou/bilibili_tool_pro:latest ../..
@echo off
pause
diff --git a/docker/entry.sh b/docker/entry.sh
deleted file mode 100644
index 186b86c77..000000000
--- a/docker/entry.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-set -e
-
-# https://stackoverflow.com/questions/27771781/how-can-i-access-docker-set-environment-variables-from-a-cron-job
-echo "[step 1/4]导入环境变量"
-printenv | grep -v "no_proxy" > /etc/environment
-declare -p | grep -v "no_proxy" > /etc/cron.env
-echo "=>完成"
-
-echo "[step 2/4]配置cron定时任务"
-echo "BASH_ENV=/etc/cron.env" > /etc/cron.d/bilicron
-if [ -z "$Ray_DailyTaskConfig__Cron$Ray_LiveLotteryTaskConfig__Cron$Ray_UnfollowBatchedTaskConfig__Cron$Ray_VipBigPointConfig__Cron" ]; then
- echo "=>使用默认cron定时任务配置"
- cat /app/crontab >> /etc/cron.d/bilicron
-else
- echo "=>检测到对应的环境变量,使用其值作为Cron配置"
- echo "$Ray_Crontab" >> /etc/cron.d/bilicron
- if ! [ -z "$Ray_DailyTaskConfig__Cron" ]; then
- echo "$Ray_DailyTaskConfig__Cron dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=Daily >> /var/log/cron.log" >> /etc/cron.d/bilicron
- fi
- if ! [ -z "$Ray_LiveLotteryTaskConfig__Cron" ]; then
- echo "$Ray_LiveLotteryTaskConfig__Cron dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=LiveLottery >> /var/log/cron.log" >> /etc/cron.d/bilicron
- fi
- if ! [ -z "$Ray_UnfollowBatchedTaskConfig__Cron" ]; then
- echo "$Ray_UnfollowBatchedTaskConfig__Cron dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=UnfollowBatched >> /var/log/cron.log" >> /etc/cron.d/bilicron
- fi
- if ! [ -z "$Ray_VipBigPointConfig__Cron" ]; then
- echo "$Ray_VipBigPointConfig__Cron dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=VipBigPoint >> /var/log/cron.log" >> /etc/cron.d/bilicron
- fi
-fi
-echo "=>完成"
-
-echo "[step 3/4]启动定时任务,开启每日定时运行"
-cat /etc/cron.d/bilicron
-chmod 0644 /etc/cron.d/bilicron
-crontab /etc/cron.d/bilicron
-touch /var/log/cron.log
-cron
-echo "=>完成"
-
-echo "[step 4/4]初始启动容器,尝试测试Cookie"
-dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=Test
-echo "=>完成"
-
-echo "[step 全部已完成]"
-
-tail -f /var/log/cron.log # 追踪cron日志
diff --git a/docker/sample/appsettings.json b/docker/sample/appsettings.json
index a32cb5712..0916bf387 100644
--- a/docker/sample/appsettings.json
+++ b/docker/sample/appsettings.json
@@ -11,6 +11,7 @@
"IsWatchVideo": true, //是否观看视频
"IsShareVideo": true, //是否分享视频
"NumberOfCoins": 5, //每日设定的投币数 [0,5]
+ "SaveCoinsWhenLv6": false, //达到六级后是否开始白嫖
"SelectLike": true, //投币时是否同时点赞[false,true]
"SupportUpIds": "", //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置或配置为-1则表示没有特别支持的up,会从关注和排行耪中随机获取支持视频
"DayOfAutoCharge": -1, //每月几号自动充电[-1,31],-1表示不指定,默认月底最后一天;0表示不充电
diff --git a/docker/sample/docker-compose.yml b/docker/sample/docker-compose.yml
index 5c9cad5f8..59d42b68a 100644
--- a/docker/sample/docker-compose.yml
+++ b/docker/sample/docker-compose.yml
@@ -3,48 +3,51 @@ version: '3.9'
services:
bilibili_tool:
image: zai7lou/bilibili_tool_pro
- container_name: bilibili_tool_pro
+ container_name: bili
# restart: always
volumes:
- ./Logs:/app/Logs
+ - ./appsettings.json:/app/appsettings.json
tty: true
environment:
- - ASPNETCORE_ENVIRONMENT=Production
- - Ray_Security__IsSkipDailyTask=false
+ - ASPNETCORE_ENVIRONMENT: Production
+ - Ray_Security__IsSkipDailyTask: false
# Cookie字符串(必填):
- - Ray_BiliBiliCookies__1=
- - Ray_BiliBiliCookies__2=
+ - Ray_BiliBiliCookies__1:
+ - Ray_BiliBiliCookies__2:
# 定时任务
- - Ray_DailyTaskConfig__Cron=0 15 * * *
- - Ray_LiveLotteryTaskConfig__Cron=0 22 * * *
- - Ray_UnfollowBatchedTaskConfig__Cron=0 6 1 * *
- - Ray_VipBigPointConfig__Cron=7 1 * * *
+ - Ray_DailyTaskConfig__Cron: 0 15 * * *
+ - Ray_LiveLotteryTaskConfig__Cron: 0 22 * * *
+ - Ray_UnfollowBatchedTaskConfig__Cron: 0 6 1 * *
+ - Ray_VipBigPointConfig__Cron: 7 1 * * *
# UA:
- - Ray_Security__UserAgent=
+ - Ray_Security__UserAgent:
# 开始运行前随机随眠最大分钟数:
- - Ray_Security__RandomSleepMaxMin=2
+ - Ray_Security__RandomSleepMaxMin: 2
# 调用接口间的间隔秒数:
- - Ray_Security__IntervalSecondsBetweenRequestApi=
+ - Ray_Security__IntervalSecondsBetweenRequestApi:
# 目标投币数量:
- - Ray_DailyTaskConfig__NumberOfCoins=
+ - Ray_DailyTaskConfig__NumberOfCoins:
+ # 达到六级后是否开始白嫖:
+ - Ray_DailyTaskConfig__SaveCoinsWhenLv6:
# 天选抽奖指定排除关键字
- - Ray_LiveLotteryTaskConfig__ExcludeAwardNames=
+ - Ray_LiveLotteryTaskConfig__ExcludeAwardNames:
# 天选抽奖指定包含关键字
- - Ray_LiveLotteryTaskConfig__IncludeAwardNames=
+ - Ray_LiveLotteryTaskConfig__IncludeAwardNames:
# 企业微信推送地址:
- - Ray_Serilog__WriteTo__4__Args__webHookUrl=
+ - Ray_Serilog__WriteTo__4__Args__webHookUrl:
# 钉钉:
- - Ray_Serilog__WriteTo__5__Args__webHookUrl=
+ - Ray_Serilog__WriteTo__5__Args__webHookUrl:
# PushPlus推送:
- - Ray_Serilog__WriteTo__9__Args__token=
- - Ray_Serilog__WriteTo__9__Args__topic=
- - Ray_Serilog__WriteTo__9__Args__channel=
- - Ray_Serilog__WriteTo__9__Args__webhook=
+ - Ray_Serilog__WriteTo__9__Args__token:
+ - Ray_Serilog__WriteTo__9__Args__topic:
+ - Ray_Serilog__WriteTo__9__Args__channel:
+ - Ray_Serilog__WriteTo__9__Args__webhook:
# Server酱推送scKey:
- - Ray_Serilog__WriteTo__6__Args__turboScKey=
+ - Ray_Serilog__WriteTo__6__Args__turboScKey:
diff --git a/docker/scripts/entry.sh b/docker/scripts/entry.sh
new file mode 100644
index 000000000..dbe534c71
--- /dev/null
+++ b/docker/scripts/entry.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -e
+
+. /app/scripts/entry_before.sh
+
+CONSOLE_DLL="Ray.BiliBiliTool.Console.dll"
+CRON_FILE="/etc/cron.d/bilicron"
+
+# https://stackoverflow.com/questions/27771781/how-can-i-access-docker-set-environment-variables-from-a-cron-job
+echo "[step 1/4]导入环境变量"
+printenv | grep -v "no_proxy" > /etc/environment
+declare -p | grep -v "no_proxy" > /etc/cron.env
+echo -e "=>完成\n"
+
+echo "[step 2/4]配置cron定时任务"
+echo "SHELL=/bin/bash" > $CRON_FILE
+echo "BASH_ENV=/etc/cron.env" >> $CRON_FILE
+if [ -z "$Ray_LiveLotteryTaskConfig__Cron$Ray_UnfollowBatchedTaskConfig__Cron$Ray_VipBigPointConfig__Cron" ]; then
+ echo "=>使用默认的定时任务配置"
+ cat /app/crontab >> $CRON_FILE
+else
+ echo "=>使用用户指定的定时任务配置"
+ if ! [ -z "$Ray_DailyTaskConfig__Cron" ]; then
+ echo "$Ray_DailyTaskConfig__Cron cd /app && dotnet $CONSOLE_DLL --runTasks=Daily" >> $CRON_FILE
+ fi
+ if ! [ -z "$Ray_LiveLotteryTaskConfig__Cron" ]; then
+ echo "$Ray_LiveLotteryTaskConfig__Cron cd /app && dotnet $CONSOLE_DLL --runTasks=LiveLottery" >> $CRON_FILE
+ fi
+ if ! [ -z "$Ray_UnfollowBatchedTaskConfig__Cron" ]; then
+ echo "$Ray_UnfollowBatchedTaskConfig__Cron cd /app && dotnet $CONSOLE_DLL --runTasks=UnfollowBatched" >> $CRON_FILE
+ fi
+ if ! [ -z "$Ray_VipBigPointConfig__Cron" ]; then
+ echo "$Ray_VipBigPointConfig__Cron cd /app && dotnet $CONSOLE_DLL --runTasks=VipBigPoint" >> $CRON_FILE
+ fi
+fi
+
+if ! [ -z "$Ray_Crontab" ]; then
+ echo "=>检测到自定义定时任务"
+ echo "$Ray_Crontab" >> $CRON_FILE
+fi
+
+cat $CRON_FILE
+chmod 0644 $CRON_FILE
+crontab $CRON_FILE # 指定定时列表文件
+
+echo -e "=>完成\n"
+
+echo "[step 3/4]启动定时任务,开启每日定时运行"
+cron
+echo -e "=>完成\n"
+
+echo "[step 4/4]初始运行,尝试测试Cookie"
+cd /app && dotnet Ray.BiliBiliTool.Console.dll --runTasks=Test
+echo -e "=>完成\n"
+
+echo -e "[step 全部已完成]\n"
+
+. /app/scripts/entry_after.sh
+
+touch /var/log/cron.log #todo:debian似乎并没有记录cron的日志。。。
+tail -f /var/log/cron.log # 追踪cron日志,避免当前脚本终止导致容器终止
\ No newline at end of file
diff --git a/docker/scripts/entry_after.sh b/docker/scripts/entry_after.sh
new file mode 100644
index 000000000..68c4ee29b
--- /dev/null
+++ b/docker/scripts/entry_after.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+set -e
+echo -e "entry_after\n"
\ No newline at end of file
diff --git a/docker/scripts/entry_before.sh b/docker/scripts/entry_before.sh
new file mode 100644
index 000000000..90845e723
--- /dev/null
+++ b/docker/scripts/entry_before.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+set -e
+echo -e "entry_before\n"
\ No newline at end of file
diff --git a/docs/configuration.md b/docs/configuration.md
index ae37acb26..b44181e75 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -71,7 +71,9 @@
- [3.7. 日志相关](#37-日志相关)
- [3.7.1. Console日志输出等级](#371-console日志输出等级)
- [3.7.2. Console日志输出样式](#372-console日志输出样式)
- - [3.7.3. crontab相关](#373-crontab相关)
+ - [3.8. 定时任务相关](#38-定时任务相关)
+ - [3.8.1. 定时任务](#381-定时任务)
+ - [3.8.2. Crontab](#382-Crontab)
@@ -846,11 +848,35 @@ BiliBiliTool 使用 Serilog 作为日志组件,所以可以参考 Serilog 的
| 环境变量 | `Ray_Serilog__WriteTo__0__Args__outputTemplate` |
| GitHub Secrets | `CONSOLELOGTEMPLATE` |
-
-#### 3.7.3. crontab相关
-适用于 [方式四:docker容器化运行(推荐)](../docker/README.md),用于配置定时任务,效果与 `my_crontab` 文件相同,且优先级高于 `my_crontab`。
+
+#### 3.8. 定时任务相关
+适用于 [方式四:docker容器化运行(推荐)](../docker/README.md),用于配置定时任务。
+
+
+#### 3.8.1 定时任务
+以下环境变量的值应为有效的 [cron 表达式](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm)。
+
+当被设置时,对应定时任务将开启。
+
+| 环境变量 | 定时任务 |
+| ---------- | -------------- |
+| `Ray_DailyTaskConfig__Cron` | 每日任务 |
+| `Ray_LiveLotteryTaskConfig__Cron` | 天选时刻抽奖 |
+| `Ray_UnfollowBatchedTaskConfig__Cron` | 批量取关 |
+| `Ray_VipBigPointConfig__Cron` | 大会员大积分 |
+
+
+#### 3.8.2 Crontab
+若该环境变量被设置,其值将直接追加在 cron 文件的末尾,可用于设置额外的定时任务。
+
+| TITLE | CONTENT |
+| ---------- | -------------- |
+| 值域 | 一串字符串 |
+| 默认值 | 空 |
+| 环境变量 | `Ray_Crontab` |
+
+使用例
-使用例:
```yaml
environment:
Ray_BiliBiliCookies: somecookies
@@ -858,9 +884,3 @@ environment:
0 15 * * * dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=Daily >> /var/log/cron.log
0 22 * * * dotnet /app/Ray.BiliBiliTool.Console.dll --runTasks=LiveLottery >> /var/log/cron.log
```
-
-| TITLE | CONTENT |
-| ---------- | -------------- |
-| 值域 | 一串字符串 |
-| 默认值 | 空 |
-| 环境变量 | `Ray_Crontab` |
diff --git a/gitHubActions/bak/bilibili-daily-task.yml b/gitHubActions/bak/bilibili-daily-task.yml
index 580dce210..b4284406d 100644
--- a/gitHubActions/bak/bilibili-daily-task.yml
+++ b/gitHubActions/bak/bilibili-daily-task.yml
@@ -46,6 +46,7 @@ env:
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# 每日任务:
Ray_DailyTaskConfig__NumberOfCoins: ${{secrets.NUMBEROFCOINS}}
+ Ray_DailyTaskConfig__SaveCoinsWhenLv6: ${{secrets.SAVECOINSWHENLV6}}
Ray_DailyTaskConfig__SelectLike: ${{secrets.SELECTLIKE}}
Ray_DailyTaskConfig__SupportUpIds: ${{secrets.SUPPORTUPIDS}}
Ray_DailyTaskConfig__DayOfAutoCharge: ${{secrets.DAYOFAUTOCHARGE}}
diff --git a/gitHubActions/bak/empty-task.yml b/gitHubActions/bak/empty-task.yml
index c8a6b6d93..5a3cda2a2 100644
--- a/gitHubActions/bak/empty-task.yml
+++ b/gitHubActions/bak/empty-task.yml
@@ -44,6 +44,7 @@ env:
Ray_Security__RandomSleepMaxMin: ${{secrets.RANDOMSLEEPMAXMIN}}
# 每日任务:
Ray_DailyTaskConfig__NumberOfCoins: ${{secrets.NUMBEROFCOINS}}
+ Ray_DailyTaskConfig__SaveCoinsWhenLv6: ${{secrets.SAVECOINSWHENLV6}}
Ray_DailyTaskConfig__SelectLike: ${{secrets.SELECTLIKE}}
Ray_DailyTaskConfig__SupportUpIds: ${{secrets.SUPPORTUPIDS}}
Ray_DailyTaskConfig__DayOfAutoCharge: ${{secrets.DAYOFAUTOCHARGE}}
diff --git a/helm/README.md b/helm/README.md
new file mode 100644
index 000000000..18718c956
--- /dev/null
+++ b/helm/README.md
@@ -0,0 +1,143 @@
+
+
+# BiliBili Tool
+
+BiliBiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个贴心小助手,按照我们预先吩咐它的命令,在指定频率、时间范围内帮助我们完成计划的任务。
+
+[Overview of BiliBili Tool](https://github.com/RayWangQvQ/BiliBiliToolPro)
+
+## TL;DR
+
+### 在集群中通过本地代码直接部署
+
+```console
+$ git clone https://github.com/RayWangQvQ/BiliBiliToolPro.git
+$ cd ${local_code_repo}/helm/bilibili-tool
+$ vim values.yaml # provides your cookie and cron
+$ helm install .
+```
+
+### 在集群中通过chart部署
+
+```console
+$ git clone https://github.com/RayWangQvQ/BiliBiliToolPro.git
+$ cd ${local_code_repo}/helm/bilibili-tool
+$ helm cm-push .
+```
+Then on the cluster control plane
+```console
+$ mkdir /tmp/bilibili-tool && cd /tmp/bilibili-tool
+$ helm repo add
+$ helm update && helm pull /bilibili-tool
+$ tar -zvxf -C . && cd
+$ vim values.yaml # provides your cookie and cron
+$ helm install .
+```
+
+## Introduction
+
+这个chart通过[Helm](https://helm.sh)在[Kubernetes](https://kubernetes.io)集群上拉起一个[BiliBiliToolPro](https://github.com/RayWangQvQ/BiliBiliToolPro)deployment
+
+
+## Prerequisites
+
+- Kubernetes
+- Helm
+
+或者
+
+- Kind
+- Helm
+
+## 安装Chart
+
+安装Chart并命名为 `my-release`:
+
+```console
+$ helm repo add my-repo
+$ helm install my-release my-repo/bilibili-tool(:0.2.1)
+```
+
+上述命令需要用户在values.yaml里提供cookie等必须信息
+[Parameters](#parameters) 部分列出了所有可供自定义的值
+
+> **Tip**: `helm list` 可以列出当前已经列出的所有的release
+
+## 卸载 Chart
+
+卸载 `my-release` deployment:
+
+```console
+$ helm delete my-release
+```
+
+上述命令卸载掉所有的release相关资源
+
+## Parameters
+
+| Name | Description | Value | Required |
+| ------------------------- | ----------------------------------------------- | ----- | -------- |
+| `replicaCount` | Deployment Relicas Count | `1` | true |
+| `image.repository` | Global Dockevr registry | `zai7lou/bilibili_tool_pro` | true |
+| `image.tag` | Image Tag | `0.2.1` | true |
+| `image.pullPolicy` | Image Pull Policy | `IfNotPresent` | true |
+| `imagePullSecrets` | Image Pull Secrets | `[]` | false |
+| `nameOverride` | Deployment name in the Chart | `""` | false |
+| `fullnameOverride` | Release name when set | `""` | false |
+| `resources.limits` | The resources limits for the BiliBili Tool containers | `{}` | true |
+| `resources.limits.memory` | The limited memory for the BiliBili Tool containers | `180Mi` | true |
+| `resources.limits.cpu` | The limited cpu for the BiliBili Tool containers | `100m` | true |
+| `resources.requests` | The resources requests for the BiliBili Tool containers | `{}` | true |
+| `resources.requests.memory` | The requested memory for the BiliBili Tool containers | `180Mi` | true |
+| `resources.requests.cpu` | The requested cpu for the BiliBili Tool containers | `100m` | true |
+| `affinity` | Affinity for pod assignment | `{}` | false |
+| `nodeSelector` | Node labels for pod assignment | `{}` | false |
+| `tolerations` | Tolerations for pod assignment | `[]` | false |
+| `env` | Environment variables for the BiliBili Tool container, Ray_BiliBiliCookies__1 and Ray_DailyTaskConfig__Cron are required, others vars pls take a look at [supported envvars](https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/docs/configuration.md) | `[]` | true |
+| `volumes.enabled` | Enable persistent log volume for BiliBili Tool or not | `"false"` | true |
+| `volumes.path` | The host path mounted into pod | `"/tmp/Logs"` | false |
+| `volumes.name` | The volume name | `"bili-tool-vol"` | false |
+| `podAnnotations` | The annotations for the BiliBili Tool pod | `{}` | false |
+
+可以用指定helm install命令行参数 `--set key=value[,key=value]`, 比如
+
+```console
+$ helm install my-release \
+ --set \
+ relicas=1
+```
+
+也可以通过指定一个YAML格式的values文件来配置以上参数,比如
+
+```console
+$ helm install my-release -f values.yaml my_chart_repo/bilibili-tool
+```
+
+> **Tip**: 你可以使用默认的 [values.yaml](bilibili-tool/values.yaml)进行配置
+
+
+当想更新一些变量时,可以通过指定参数或者直接修改YAML的values文件进行更新
+
+```console
+$ helm upgrade my-release my_chart_repo/bilibili-tool <-f values> or <--set-file ...>
+```
+
+## [Optional]本地Cluster运行
+
+通过安装[kind](https://kind.sigs.k8s.io/docs/user/quick-start/)工具在本地运行一个Kubernetes Cluster
+
+### Prerequisites
+
+go 1.17+ and Docker installed
+
+```console
+$ go install sigs.k8s.io/kind@v0.17.0 && kind create cluster <--config kind_config_file>
+$ cat
+$ kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+nodes:
+- role: control-plane
+- role: worker
+$ EOF
+```
+at least one worker node otherwise you have to provides tolerations in the values.yaml to schedule on master node
diff --git a/helm/bilibili-tool/Chart.yaml b/helm/bilibili-tool/Chart.yaml
new file mode 100644
index 000000000..4c2e181b0
--- /dev/null
+++ b/helm/bilibili-tool/Chart.yaml
@@ -0,0 +1,24 @@
+apiVersion: v2
+name: bilibili-tool
+description: A Helm chart for running bilibili tool in Kubernetes
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+# Versions are expected to follow Semantic Versioning (https://semver.org/)
+version: 0.1.0
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application. Versions are not expected to
+# follow Semantic Versioning. They should reflect the version the application is using.
+# It is recommended to use it with quotes.
+appVersion: "0.2.1"
diff --git a/helm/bilibili-tool/templates/NOTES.txt b/helm/bilibili-tool/templates/NOTES.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/helm/bilibili-tool/templates/_helpers.tpl b/helm/bilibili-tool/templates/_helpers.tpl
new file mode 100644
index 000000000..05b6d00d6
--- /dev/null
+++ b/helm/bilibili-tool/templates/_helpers.tpl
@@ -0,0 +1,62 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "bilibili_tool.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "bilibili_tool.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "bilibili_tool.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "bilibili_tool.labels" -}}
+helm.sh/chart: {{ include "bilibili_tool.chart" . }}
+{{ include "bilibili_tool.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "bilibili_tool.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "bilibili_tool.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "bilibili_tool.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "bilibili_tool.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/helm/bilibili-tool/templates/deployment.yaml b/helm/bilibili-tool/templates/deployment.yaml
new file mode 100644
index 000000000..10a63b687
--- /dev/null
+++ b/helm/bilibili-tool/templates/deployment.yaml
@@ -0,0 +1,54 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "bilibili_tool.fullname" . }}
+ labels:
+ {{- include "bilibili_tool.labels" . | nindent 4 }}
+spec:
+ selector:
+ matchLabels:
+ {{- include "bilibili_tool.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ {{- with .Values.podAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ labels:
+ {{- include "bilibili_tool.selectorLabels" . | nindent 8 }}
+ spec:
+ {{- if .Values.volumes.enabled }}
+ volumes:
+ - name: {{ .Values.volumes.name }}
+ hostPath:
+ path: {{ .Values.volumes.path }}
+ {{- end }}
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ containers:
+ - name: {{ .Chart.Name }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ env:
+ {{- toYaml .Values.env | nindent 12 }}
+ {{- if .Values.volumes.enabled }}
+ volumeMounts:
+ - mountPath: "/bilibili_tool/Logs"
+ name: {{ .Values.volumes.name }}
+ {{- end }}
+ resources:
+ {{- toYaml .Values.resources | nindent 12 }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
diff --git a/helm/bilibili-tool/values.yaml b/helm/bilibili-tool/values.yaml
new file mode 100644
index 000000000..f061f0c5d
--- /dev/null
+++ b/helm/bilibili-tool/values.yaml
@@ -0,0 +1,57 @@
+# Default values for bilibili_tool.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+ repository: zai7lou/bilibili_tool_pro
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: "0.2.1"
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+# For more envs pls take a view at https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/docs/configuration.md
+env:
+ # cookie - required
+ - name: Ray_BiliBiliCookies__1
+ # past your cookie value
+ value: ""
+ # DailyTrigger - required
+ - name: Ray_DailyTaskConfig__Cron
+ # This means BiliBili Toll triggers at every day's 08:10 AM
+ value: "10 8 * * *"
+
+ # Add your custom env vars like
+ # - name: Ray_Security__IntervalSecondsBetweenRequestApi
+ # value: "20"
+ # - name: Ray_Security__RandomSleepMaxMin
+ # value: "20"
+ # - name: Ray_LiveLotteryTaskConfig__Cron
+ # value: ""
+
+volumes:
+ enabled: false
+ # if `enabled=true`, then path and name is required
+ path: "/tmp/Logs"
+ name: "bili-tool-vol"
+
+podAnnotations: {}
+
+resources:
+ # Recommended to set this resources field
+ limits:
+ cpu: 100m
+ memory: 180Mi
+ requests:
+ cpu: 100m
+ memory: 180Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
diff --git a/podman/README.md b/podman/README.md
new file mode 100644
index 000000000..6aef954b8
--- /dev/null
+++ b/podman/README.md
@@ -0,0 +1,116 @@
+# Podman 使用说明
+
+
+- [1. 前期工作](#1-前期工作)
+ - [1.1. Podman环境](#11-podman环境)
+ - [从Docker迁移](#从docker迁移)
+- [2. 运行容器](#2-运行容器)
+ - [2.1. 极简版](#21-极简版)
+ - [2.2. 综合版](#22-综合版)
+- [3. 自己构建镜像(非必须)](#3-自己构建镜像非必须)
+- [4. 其他](#4-其他)
+
+
+
+## 1. 前期工作
+
+### 1.1. Podman环境
+
+请确认已安装了Podman所需环境([Podman](https://podman.io/)
+
+安装完成后,请执行`podman -v`检查是否安装成功,请执行`podman info`检查虚拟机环境是否正常。
+
+常用命令参考:
+
+```
+# 查看版本
+podman -v
+
+# 初始化虚拟机
+podman machine init
+
+# 启动虚拟机
+podman machine start
+
+# 查看信息
+podman info
+```
+
+### 从Docker迁移
+
+Podman可以和Docker共存,命令也基本可以通用。
+
+但挂载逻辑有点区别,podman挂载时,如果宿主机下没有指定的文件夹,podman不会像docker一样去自动创建文件夹,而是会报异常。
+
+所以在挂载文件夹时,需要先手动在宿主机上mkdir创建文件夹。
+
+## 2. 运行容器
+
+以下提供极简版和综合版两个版本,一个简单一个复杂,供参考
+
+### 2.1. 极简版
+
+```
+# 生成并运行容器
+podman run -itd --name="bili" \
+ -e Ray_BiliBiliCookies__1="cookie" \
+ docker.io/zai7lou/bilibili_tool_pro
+
+# 查看实时日志
+podman logs -f bili
+```
+
+其中,`cookie`需要替换为自己真实的cookie字符串
+
+### 2.2. 综合版
+
+```
+# 创建文件和文件夹
+mkdir -p /bili && cd /bili
+mkdir -p Logs
+
+# 下载appsettings.json
+wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/src/Ray.BiliBiliTool.Console/appsettings.json
+
+# 运行
+podman run -itd --name="bili" \
+ -v /bili/Logs:/app/Logs \
+ -v /bili/appsettings.json:/app/appsettings.json \
+ -e Ray_BiliBiliCookies__1="cookie" \
+ -e Ray_BiliBiliCookies__2="cookie" \
+ -e Ray_DailyTaskConfig__Cron="0 15 * * *" \
+ -e Ray_LiveLotteryTaskConfig__Cron="0 22 * * *" \
+ -e Ray_UnfollowBatchedTaskConfig__Cron="0 6 1 * *" \
+ -e Ray_VipBigPointConfig__Cron="7 1 * * *" \
+ -e Ray_DailyTaskConfig__NumberOfCoins="5"
+ docker.io/zai7lou/bilibili_tool_pro
+
+# 查看实时日志
+podman logs -f bili
+```
+
+其他指令参考:
+
+```
+# 查看容器运行状态
+podman ps -a
+
+# 进入容器
+podman exec -it bili bash
+```
+
+## 3. 自己构建镜像(非必须)
+
+目前我提供和维护的镜像:`[zai7lou/bilibili_tool_pro](https://hub.docker.com/repository/docker/zai7lou/bilibili_tool_pro)`;
+
+如果有需要(大部分都不需要),可以使用源码自己构建镜像,如下:
+
+在有项目的Dockerfile的目录运行
+
+`podman build -t TARGET_NAME .`
+
+ `TARGET_NAME`为镜像名称和版本,可以自己起个名字
+
+## 4. 其他
+
+镜像使用的是docker仓库的镜像。
diff --git a/podman/build/buildImage.cmd b/podman/build/buildImage.cmd
new file mode 100644
index 000000000..087533c3b
--- /dev/null
+++ b/podman/build/buildImage.cmd
@@ -0,0 +1,8 @@
+@echo off
+
+REM start to build
+echo Start to build image
+@echo on
+podman build -t docker.io/zai7lou/bilibili_tool_pro:0.2.2 -t docker.io/zai7lou/bilibili_tool_pro:latest ../..
+@echo off
+pause
diff --git a/qinglong/DefaultTasks/bili_dev_task_base.sh b/qinglong/DefaultTasks/bili_dev_task_base.sh
new file mode 100644
index 000000000..50be9cabe
--- /dev/null
+++ b/qinglong/DefaultTasks/bili_dev_task_base.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+# new Env("bili_dev_task_base")
+# cron 0 0 1 1 * bili_dev_task_base.sh
+
+dir_shell=$QL_DIR/shell
+. $dir_shell/share.sh
+
+## 安装dotnet
+apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib
+curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 6.0 --no-cdn
+rm -f /usr/local/bin/dotnet
+ln -s ~/.dotnet/dotnet /usr/local/bin
+dotnet --version
+
+bili_repo="raywangqvq_bilibilitoolpro_develop"
+
+echo -e "\nrepo目录: $dir_repo"
+bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
+echo -e "bili仓库目录: $bili_repo_dir\n"
+
+cd $bili_repo_dir
\ No newline at end of file
diff --git a/qinglong/DefaultTasks/bili_dev_task_daily.sh b/qinglong/DefaultTasks/bili_dev_task_daily.sh
index 53c53f0da..574d3d0df 100644
--- a/qinglong/DefaultTasks/bili_dev_task_daily.sh
+++ b/qinglong/DefaultTasks/bili_dev_task_daily.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili每日任务[dev先行版]")
# cron 0 9 * * * bili_dev_task_daily.sh
+. bili_dev_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro_develop"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=Daily && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh b/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh
index 0dbf48d52..521b03a48 100644
--- a/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh
+++ b/qinglong/DefaultTasks/bili_dev_task_liveLottery.sh
@@ -1,17 +1,10 @@
#!/usr/bin/env bash
# new Env("bili天选时刻[dev先行版]")
# cron 0 13 * * * bili_dev_task_liveLottery.sh
+. bili_dev_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
+cd ./src/Ray.BiliBiliTool.Console
-bili_repo="raywangqvq_bilibilitoolpro_develop"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
export ENVIRONMENT=Production && \
export Ray_RunTasks=LiveLottery && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_dev_task_test.sh b/qinglong/DefaultTasks/bili_dev_task_test.sh
index e79a07b7e..a175c5bd5 100644
--- a/qinglong/DefaultTasks/bili_dev_task_test.sh
+++ b/qinglong/DefaultTasks/bili_dev_task_test.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili测试ck[dev先行版]")
# cron 0 8 * * * bili_dev_task_test.sh
+. bili_dev_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro_develop"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=Test && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_dev_task_tryFix.sh b/qinglong/DefaultTasks/bili_dev_task_tryFix.sh
new file mode 100644
index 000000000..3f63c17e7
--- /dev/null
+++ b/qinglong/DefaultTasks/bili_dev_task_tryFix.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+# new Env("bili尝试修复异常[dev先行版]")
+# cron 0 0 1 1 * bili_dev_task_tryFix.sh
+
+dir_shell=$QL_DIR/shell
+. $dir_shell/share.sh
+
+bili_repo="raywangqvq_bilibilitoolpro_develop"
+
+echo -e "\nrepo目录: $dir_repo"
+bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
+echo -e "bili仓库目录: $bili_repo_dir\n"
+
+echo -e "清理缓存...\n"
+cd $bili_repo_dir
+find . -type d -name "bin" -exec rm -rf {} +
+find . -type d -name "obj" -exec rm -rf {} +
\ No newline at end of file
diff --git a/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh b/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh
index 8a339da23..71cd7be83 100644
--- a/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh
+++ b/qinglong/DefaultTasks/bili_dev_task_unfollowBatched.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili批量取关主播[dev先行版]")
# cron 0 12 1 * * bili_dev_task_unfollowBatched.sh
+. bili_dev_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro_develop"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=UnfollowBatched && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_dev_task_vipBigPoint.sh b/qinglong/DefaultTasks/bili_dev_task_vipBigPoint.sh
index a5a63e2a1..3dbcfbb8e 100644
--- a/qinglong/DefaultTasks/bili_dev_task_vipBigPoint.sh
+++ b/qinglong/DefaultTasks/bili_dev_task_vipBigPoint.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili大会员大积分[dev先行版]")
# cron 7 1 * * * bili_dev_task_vipBigPoint.sh
+. bili_dev_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro_develop"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=VipBigPoint && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_task_base.sh b/qinglong/DefaultTasks/bili_task_base.sh
new file mode 100644
index 000000000..801573c47
--- /dev/null
+++ b/qinglong/DefaultTasks/bili_task_base.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+# new Env("bili_base")
+# cron 0 0 1 1 * bili_base.sh
+
+dir_shell=$QL_DIR/shell
+. $dir_shell/share.sh
+
+## 安装dotnet
+apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib
+curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 6.0 --no-cdn
+rm -f /usr/local/bin/dotnet
+ln -s ~/.dotnet/dotnet /usr/local/bin
+dotnet --version
+
+bili_repo="raywangqvq_bilibilitoolpro_develop"
+
+echo -e "\nrepo目录: $dir_repo"
+bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
+echo -e "bili仓库目录: $bili_repo_dir\n"
+
+cd $bili_repo_dir
\ No newline at end of file
diff --git a/qinglong/DefaultTasks/bili_task_daily.sh b/qinglong/DefaultTasks/bili_task_daily.sh
index a03aad201..55cef2f06 100644
--- a/qinglong/DefaultTasks/bili_task_daily.sh
+++ b/qinglong/DefaultTasks/bili_task_daily.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili每日任务")
# cron 0 9 * * * bili_task_daily.sh
+. bili_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=Daily && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_task_liveLottery.sh b/qinglong/DefaultTasks/bili_task_liveLottery.sh
index 6793ac3ae..b3caa3b0c 100644
--- a/qinglong/DefaultTasks/bili_task_liveLottery.sh
+++ b/qinglong/DefaultTasks/bili_task_liveLottery.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili天选时刻")
# cron 0 13 * * * bili_task_liveLottery.sh
+. bili_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=LiveLottery && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_task_test.sh b/qinglong/DefaultTasks/bili_task_test.sh
index f48c7d41f..38e740aaa 100644
--- a/qinglong/DefaultTasks/bili_task_test.sh
+++ b/qinglong/DefaultTasks/bili_task_test.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili测试ck")
# cron 0 8 * * * bili_task_test.sh
+. bili_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=Test && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_task_tryFix.sh b/qinglong/DefaultTasks/bili_task_tryFix.sh
new file mode 100644
index 000000000..8a1ed4a45
--- /dev/null
+++ b/qinglong/DefaultTasks/bili_task_tryFix.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+# new Env("bili尝试修复异常")
+# cron 0 0 1 1 * bili_task_tryFix.sh
+
+dir_shell=$QL_DIR/shell
+. $dir_shell/share.sh
+
+bili_repo="raywangqvq_bilibilitoolpro_develop"
+
+echo -e "\nrepo目录: $dir_repo"
+bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
+echo -e "bili仓库目录: $bili_repo_dir\n"
+
+echo -e "清理缓存...\n"
+cd $bili_repo_dir
+find . -type d -name "bin" -exec rm -rf {} +
+find . -type d -name "obj" -exec rm -rf {} +
\ No newline at end of file
diff --git a/qinglong/DefaultTasks/bili_task_unfollowBatched.sh b/qinglong/DefaultTasks/bili_task_unfollowBatched.sh
index 73b6c3135..7fa37a101 100644
--- a/qinglong/DefaultTasks/bili_task_unfollowBatched.sh
+++ b/qinglong/DefaultTasks/bili_task_unfollowBatched.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili批量取关主播")
# cron 0 12 1 * * bili_task_unfollowBatched.sh
+. bili_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=UnfollowBatched && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/DefaultTasks/bili_task_vipBigPoint.sh b/qinglong/DefaultTasks/bili_task_vipBigPoint.sh
index 1dada710d..f6f9792a2 100644
--- a/qinglong/DefaultTasks/bili_task_vipBigPoint.sh
+++ b/qinglong/DefaultTasks/bili_task_vipBigPoint.sh
@@ -1,17 +1,9 @@
#!/usr/bin/env bash
# new Env("bili大会员大积分")
# cron 7 1 * * * bili_task_vipBigPoint.sh
+. bili_task_base.sh
-dir_shell=$QL_DIR/shell
-. $dir_shell/share.sh
-
-bili_repo="raywangqvq_bilibilitoolpro"
-
-echo "repo目录: $dir_repo"
-bili_repo_dir="$(find $dir_repo -type d -iname $bili_repo | head -1)"
-echo -e "bili仓库目录: $bili_repo_dir\n"
-
-cd $bili_repo_dir
+cd ./src/Ray.BiliBiliTool.Console
export ENVIRONMENT=Production && \
export Ray_RunTasks=VipBigPoint && \
-dotnet run --project ./src/Ray.BiliBiliTool.Console
+dotnet run
diff --git a/qinglong/ray-dotnet-install.sh b/qinglong/ray-dotnet-install.sh
index a90686ff8..5549a7e3f 100644
--- a/qinglong/ray-dotnet-install.sh
+++ b/qinglong/ray-dotnet-install.sh
@@ -1,41 +1,13 @@
#!/usr/bin/env bash
echo -e "\n-------set up dot net env-------"
-DOWNLOAD_X64=https://download.visualstudio.microsoft.com/download/pr/70fb6022-ef53-473b-bfde-dc8cd6b673ca/2c04303064ed5c5158998c3a0d11fcc1/dotnet-sdk-6.0.201-linux-musl-x64.tar.gz
-DOWNLOAD_ARM32=https://download.visualstudio.microsoft.com/download/pr/09df51a1-5ef7-4db6-90cd-302ae92b7c84/3d000f08ab919f43f61184a3c48b46a8/dotnet-sdk-6.0.201-linux-musl-arm.tar.gz
-DOWNLOAD_ARM64=https://download.visualstudio.microsoft.com/download/pr/0038906f-0d85-41ad-897d-2579359eeb77/78bb1d3b9df9d8017222f0bed5df23ab/dotnet-sdk-6.0.201-linux-musl-arm64.tar.gz
-
-get_download_url_by_machine_architecture() {
- if command -v uname > /dev/null; then
- CPUName=$(uname -m)
- case $CPUName in
- armv*l)
- echo $DOWNLOAD_ARM32
- return 0
- ;;
- aarch64|arm64)
- echo $DOWNLOAD_ARM64
- return 0
- ;;
- esac
- fi
- # Always default to 'x64'
- echo $DOWNLOAD_X64
- return 0
-}
-
-DOWNLOAD_URL="$(get_download_url_by_machine_architecture)"
-DOTNET_FILE=dotnet-sdk.tar.gz
-
+## 安装dotnet
apk add bash icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib
+curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 6.0 --no-cdn --verbose
-wget -O $DOTNET_FILE $DOWNLOAD_URL
-DOTNET_ROOT=/home/dotnet
-mkdir -p "$DOTNET_ROOT" && tar zxf "$DOTNET_FILE" -C "$DOTNET_ROOT"
-
-export PATH=$PATH:$DOTNET_ROOT
-ln -s /home/dotnet/dotnet /usr/local/bin
+rm -f /usr/local/bin/dotnet
+ln -s ~/.dotnet/dotnet /usr/local/bin
-dotnet --version
+dotnet --info
echo -e "\n-------set up dot net env finish-------"
\ No newline at end of file
diff --git a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
index 7fd5aeefa..aa92b62c0 100644
--- a/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
+++ b/src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
@@ -63,7 +63,7 @@ public override void DoTask()
UserInfo userInfo = Login();
DailyTaskInfo dailyTaskInfo = GetDailyTaskStatus();
WatchAndShareVideo(dailyTaskInfo);
- AddCoinsForVideo();
+ AddCoinsForVideo(userInfo);
//签到:
LiveSign();
@@ -122,8 +122,13 @@ private void WatchAndShareVideo(DailyTaskInfo dailyTaskInfo)
/// 投币任务
///
[TaskInterceptor("投币", rethrowWhenException: false)]
- private void AddCoinsForVideo()
+ private void AddCoinsForVideo(UserInfo userInfo)
{
+ if (_dailyTaskOptions.SaveCoinsWhenLv6 && userInfo.Level_info.Current_level >= 6)
+ {
+ _logger.LogInformation("已经为LV6大佬,开始白嫖");
+ return;
+ }
_donateCoinDomainService.AddCoinsForVideos();
}
diff --git a/src/Ray.BiliBiliTool.Config/Options/DailyTaskOptions.cs b/src/Ray.BiliBiliTool.Config/Options/DailyTaskOptions.cs
index 01933b8f2..da828c8e7 100644
--- a/src/Ray.BiliBiliTool.Config/Options/DailyTaskOptions.cs
+++ b/src/Ray.BiliBiliTool.Config/Options/DailyTaskOptions.cs
@@ -23,6 +23,12 @@ public class DailyTaskOptions
///
public int NumberOfCoins { get; set; } = 5;
+ ///
+ /// 达到六级后是否开始白嫖
+ ///
+ public bool SaveCoinsWhenLv6 { get; set; } = false;
+
+
///
/// 投币时是否点赞[false,true]
///
diff --git a/src/Ray.BiliBiliTool.Console/appsettings.json b/src/Ray.BiliBiliTool.Console/appsettings.json
index 5f93234d9..a9103aac4 100644
--- a/src/Ray.BiliBiliTool.Console/appsettings.json
+++ b/src/Ray.BiliBiliTool.Console/appsettings.json
@@ -12,6 +12,7 @@
"IsWatchVideo": true, //是否观看视频
"IsShareVideo": true, //是否分享视频
"NumberOfCoins": 5, //每日设定的投币数 [0,5]
+ "SaveCoinsWhenLv6": false, //达到六级后是否开始白嫖[false,true]
"SelectLike": true, //投币时是否同时点赞[false,true]
"SupportUpIds": "", //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置或配置为-1则表示没有特别支持的up,会从关注和排行耪中随机获取支持视频
"DayOfAutoCharge": -1, //每月几号自动充电[-1,31],-1表示不指定,默认月底最后一天;0表示不充电
diff --git a/src/Ray.BiliBiliTool.Console/commandLineMappings.json b/src/Ray.BiliBiliTool.Console/commandLineMappings.json
index a090b9a3d..40be99cda 100644
--- a/src/Ray.BiliBiliTool.Console/commandLineMappings.json
+++ b/src/Ray.BiliBiliTool.Console/commandLineMappings.json
@@ -6,6 +6,7 @@
"--runTasks": "RunTasks",
"--numberOfCoins": "DailyTaskConfig:NumberOfCoins",
+ "--saveCoinsWhenLv6": "DailyTaskConfig:SaveCoinsWhenLv6",
"--selectLike": "DailyTaskConfig:SelectLike",
"--supportUpIds": "DailyTaskConfig:SupportUpIds",
"--dayOfAutoCharge": "DailyTaskConfig:DayOfAutoCharge",
@@ -35,6 +36,7 @@
"-runTasks": "RunTasks",
"-numberOfCoins": "DailyTaskConfig:NumberOfCoins",
+ "-saveCoinsWhenLv6": "DailyTaskConfig:SaveCoinsWhenLv6",
"-selectLike": "DailyTaskConfig:SelectLike",
"-supportUpIds": "DailyTaskConfig:SupportUpIds",
"-dayOfAutoCharge": "DailyTaskConfig:DayOfAutoCharge",
diff --git a/src/Ray.BiliBiliTool.DomainService/DonateCoinDomainService.cs b/src/Ray.BiliBiliTool.DomainService/DonateCoinDomainService.cs
index 619e8850d..5defe7e9c 100644
--- a/src/Ray.BiliBiliTool.DomainService/DonateCoinDomainService.cs
+++ b/src/Ray.BiliBiliTool.DomainService/DonateCoinDomainService.cs
@@ -194,11 +194,13 @@ private int GetNeedDonateCoinNum()
{
//获取自定义配置投币数
int configCoins = _dailyTaskOptions.NumberOfCoins;
+
if (configCoins <= 0)
{
_logger.LogInformation("已配置为跳过投币任务");
return configCoins;
}
+
//已投的硬币
int alreadyCoins = _coinDomainService.GetDonatedCoins();
diff --git a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.GotifyBatched/Ray.Serilog.Sinks.GotifyBatched.csproj b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.GotifyBatched/Ray.Serilog.Sinks.GotifyBatched.csproj
index 55eb04647..ebfaae80a 100644
--- a/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.GotifyBatched/Ray.Serilog.Sinks.GotifyBatched.csproj
+++ b/src/Ray.Serilog.Sinks/Ray.Serilog.Sinks.GotifyBatched/Ray.Serilog.Sinks.GotifyBatched.csproj
@@ -3,7 +3,7 @@
net6.0
enable
- enable
+
diff --git a/tencentScf/serverless.yml b/tencentScf/serverless.yml
index c3b88c18d..cf376a71d 100644
--- a/tencentScf/serverless.yml
+++ b/tencentScf/serverless.yml
@@ -38,6 +38,12 @@ inputs:
cronExpression: "0 0 0 * * MON *"
enable: true
argument: UnfollowBatched
+ - timer: # 大会员积分
+ parameters:
+ name: VipBigPointTask
+ cronExpression: "0 07 01 * * * *"
+ enable: true
+ argument: VipBigPoint
environment:
variables: # 根据自己的需要修改
Ray_BiliBiliCookies__1: 123 # cookie,必填