From b2b3c9553ecb62a117943856f8d97b07d561bc96 Mon Sep 17 00:00:00 2001 From: LuckyHunter Date: Sun, 23 Oct 2022 14:31:57 +0800 Subject: [PATCH] Add docker-compose.yml --- Dockerfile | 2 +- README.md | 23 +++++++++++++++++++++-- docker-compose.yml | 14 ++++++++++++++ requirements.txt | 8 +------- scheduler.py | 18 ++++++++++++++++++ 5 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 docker-compose.yml create mode 100644 scheduler.py diff --git a/Dockerfile b/Dockerfile index c5de05f..9c526dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,4 +15,4 @@ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo COPY . /smzdm_bot -CMD ["python", "main.py"] +CMD python scheduler.py diff --git a/README.md b/README.md index 6ec6dea..e716ba7 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ ## 1. 实现功能 - `什么值得买`每日签到 +- Github Action(两种配置方式,直接运行或者调用 Docker 运行) +- 本地 Docker 定时运行 - 通过`pushplus`推送运行结果到微信 - 通过`server酱`推送运行结果到微信 - 通过`telegram bot`推送 @@ -31,7 +33,7 @@ on: - cron: "0 18 * * *" ``` -3. Secret 新增`SMZDM_COOKIE`, 填入[什么值得买官网](https://www.smzdm.com/)获取的 Cookie 信息, [详见](#31-cookie获取方法) +3. Secret 新增`SMZDM_COOKIE`, 填入[什么值得买官网](https://www.smzdm.com/)获取的 Cookie 信息, [详见](#31-Cookie获取方法) 4. (可选) Secret 新增`PUSH_PLUS_TOKEN`用于推送通知, [详见](https://www.pushplus.plus/) 5. (可选) Secret 新增`SC_KEY`用于推送通知, [详见](https://sct.ftqq.com/) 6. (可选) Secret 新增`TG_BOT_TOKEN` 和`TG_USER_ID`用于推送通知 @@ -44,7 +46,24 @@ on: cp config/config_example.toml config/config.toml ``` -### 2.3 使用 Cookie Editor +### 2.3 本地 docker 运行 + +见`docker-compose.yml` + +本地生成一个`.env` 文件, 用于配置 docker-compose.yml 运行所需要的环境变量, 如下: + +``` +SMZDM_COOKIE=__ckguid= +PUSH_PLUS_TOKEN= +SC_KEY= +TG_BOT_TOKEN= +TG_USER_ID= +# 定时设定(可选), 若没有设定则随机定时执行 +SCH_HOUR= +SCH_MINUTE= +``` + +### 2.4 使用 Cookie Editor 也可以使用浏览器扩展 [Cookie Editor](https://microsoftedge.microsoft.com/addons/detail/cookie-editor/oaaopmblghnnjfgbgmflnkjkilhihdpb)导出 cookies, 另存为`cookies.json`在项目的根目录 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a7ac624 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.9" +services: + smzdm_bot: + image: enwaiax/smzdm_bot + container_name: smzdm_bot + restart: unless-stopped + logging: + driver: "json-file" + options: + max-size: "1m" + max-file: "1" + env_file: + - ${ENVIROMENT}.env + entrypoint: "sleep infinity" diff --git a/requirements.txt b/requirements.txt index 402f719..8b683a2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,4 @@ -certifi==2022.9.24 -charset-normalizer==3.0.0 -docopt==0.6.2 -idna==3.4 +APScheduler==3.9.1 prettytable==3.4.1 requests==2.28.1 toml==0.10.2 -urllib3==1.26.12 -wcwidth==0.2.5 -yarg==0.1.9 \ No newline at end of file diff --git a/scheduler.py b/scheduler.py new file mode 100644 index 0000000..5e05abc --- /dev/null +++ b/scheduler.py @@ -0,0 +1,18 @@ +import os +from random import randint + +from apscheduler.schedulers.background import BlockingScheduler + +from main import main + +if __name__ == "__main__": + main() + SCH_HOUR = os.environ.get("SCH_HOUR", randint(0, 23)) + SCH_MINUTE = os.environ.get("SCH_MINUTE", randint(0, 59)) + scheduler = BlockingScheduler(timezone="Asia/Shanghai") + scheduler.add_job(main, 'cron', hour=SCH_HOUR, minute=SCH_MINUTE) + print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C')) + try: + scheduler.start() + except (KeyboardInterrupt, SystemExit): + pass