Skip to content

Commit

Permalink
Merge branch 'release/0.2.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
RayWangQvQ committed Nov 14, 2022
2 parents d3dd62a + d3e0097 commit ae75232
Show file tree
Hide file tree
Showing 45 changed files with 777 additions and 255 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,会清理一次缓存
12 changes: 7 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -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"]
35 changes: 23 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ BiliBiliTool
<!-- TOC depthFrom:2 -->

- [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-多账号支持)
Expand All @@ -67,8 +69,7 @@ BiliBiliTool

- **本应用仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!**
- **所有代码都是开源且透明的,任何人均可查看,程序不会保存或滥用任何用户的个人信息**
- **应用内几乎所有功能都开放为了配置(如任务开关、日期、upId等),请仔细阅读配置文档,自己对自己的配置负责**

- **应用内几乎所有功能都开放为了配置(如任务开关、日期、id等),详细信息可阅读配置文档,请自己对配置负责**

本地运行图示:

Expand All @@ -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 后即可直接本地进行运行和调试。
Expand Down Expand Up @@ -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)

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.2.1</Version>
<Version>0.2.2</Version>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
</PropertyGroup>
</Project>
22 changes: 11 additions & 11 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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 * * *" \
Expand All @@ -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字符串
Expand All @@ -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更新容器
Expand All @@ -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. 自己构建镜像(非必须)
Expand Down
2 changes: 1 addition & 1 deletion docker/build/buildImage.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -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
47 changes: 0 additions & 47 deletions docker/entry.sh

This file was deleted.

1 change: 1 addition & 0 deletions docker/sample/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -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表示不充电
Expand Down
47 changes: 25 additions & 22 deletions docker/sample/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
61 changes: 61 additions & 0 deletions docker/scripts/entry.sh
Original file line number Diff line number Diff line change
@@ -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日志,避免当前脚本终止导致容器终止
3 changes: 3 additions & 0 deletions docker/scripts/entry_after.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash
set -e
echo -e "entry_after\n"
Loading

0 comments on commit ae75232

Please sign in to comment.