Skip to content

Commit 6d8d083

Browse files
authored
添加青龙部署教程,Merge pull request doveppp#27 from jiongjiongJOJO/main
增加青龙部署教程及相关适配;支持Gotify通知
2 parents 026b5b5 + e7964a6 commit 6d8d083

File tree

3 files changed

+141
-26
lines changed

3 files changed

+141
-26
lines changed

README.md

Lines changed: 104 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,125 @@
11
# LinuxDo 每日签到(每日打卡)
22

33
## 项目描述
4-
这个项目用于自动登录 [LinuxDo](https://linux.do/) 网站并随机读取几个帖子。它使用 Python 和 Playwright 自动化库模拟浏览器登录并浏览帖子,以达到自动签到的功能。
4+
5+
这个项目用于自动登录 [LinuxDo](https://linux.do/) 网站并随机读取几个帖子。它使用 Python 和 Playwright
6+
自动化库模拟浏览器登录并浏览帖子,以达到自动签到的功能。
57

68
## 功能
7-
- 自动登录 LinuxDo。
9+
10+
- 自动登录`LinuxDo`
811
- 自动浏览帖子。
9-
- 每天在 GitHub Actions 中自动运行。
12+
- 每天在`GitHub Actions`中自动运行。
13+
- 支持`青龙面板``Github Actions` 自动运行。
14+
- (可选)`Telegram`通知功能,推送获取签到结果(目前只支持GitHub Actions方式)。
15+
- (可选)`Gotify`通知功能,推送获取签到结果。
1016

11-
## 如何使用
12-
本节只介绍在github actions中如何使用。在进行之前需要先fork本项目。
17+
## 环境变量配置
18+
19+
### 必填变量
20+
21+
| 环境变量名称 | 描述 | 示例值 |
22+
|--------------------|-------------------|------------------------------------|
23+
| `LINUXDO_USERNAME` | 你的 LinuxDo 用户名或邮箱 | `your_username``[email protected]` |
24+
| `LINUXDO_PASSWORD` | 你的 LinuxDo 密码 | `your_password` |
25+
26+
~~之前的USERNAME和PASSWORD环境变量仍然可用,但建议使用新的环境变量~~
27+
28+
### 可选变量
1329

14-
### 设置环境变量
15-
在使用此自动化脚本之前,需要在 GitHub 仓库中配置两个环境变量 `USERNAME``PASSWORD`,这两个变量将用于登录 LinuxDo。按照以下步骤设置:
30+
| 环境变量名称 | 描述 | 示例值 |
31+
|-------------------|----------------------|----------------------------------------|
32+
| `GOTIFY_URL` | Gotify 服务器地址 | `https://your.gotify.server:8080` |
33+
| `GOTIFY_TOKEN` | Gotify 应用的 API Token | `your_application_token` |
34+
| `TELEGRAM_TOKEN` | Telegram Bot Token | `123456789:ABCdefghijklmnopqrstuvwxyz` |
35+
| `TELEGRAM_USERID` | Telegram 用户 ID | `123456789` |
1636

17-
1. 登录 GitHub,进入你的项目仓库。
18-
2. 点击仓库的 `Settings` 选项卡。
19-
3. 在左侧菜单中找到 `Secrets and variables` 部分,点击 `Actions`
20-
4. 点击 `New repository secret` 按钮。
21-
5. 分别添加 `USERNAME``PASSWORD`
22-
-`Name` 字段中输入 `USERNAME`,在 `Value` 字段中输入你的 LinuxDo 用户名或者邮箱。
23-
- 重复上述步骤,这次输入 `PASSWORD` 作为 `Name`,相应的密码作为 `Value`
37+
---
38+
39+
## 如何使用
2440

2541
### GitHub Actions 自动运行
26-
此项目的 GitHub Actions 配置会自动每天 UTC 时间1点运行签到脚本。你无需进行任何操作即可启动此自动化任务。GitHub Actions 的工作流文件位于 `.github/workflows` 目录下,文件名为 `daily-check-in.yml`
2742

28-
如果你需要手动触发此工作流,可以通过以下步骤操作:
43+
此项目的 GitHub Actions 配置会自动每天运行2次签到脚本。你无需进行任何操作即可启动此自动化任务。GitHub Actions 的工作流文件位于 `.github/workflows` 目录下,文件名为 `daily-check-in.yml`
44+
45+
#### 配置步骤
2946

30-
1. 进入 GitHub 仓库的 `Actions` 选项卡。
31-
2. 选择你想运行的工作流。
32-
3. 点击 `Run workflow` 按钮,选择分支,然后点击 `Run workflow` 以启动工作流。
47+
1. **设置环境变量**
48+
- 在 GitHub 仓库的 `Settings` -> `Secrets and variables` -> `Actions` 中添加以下变量:
49+
- `LINUXDO_USERNAME`:你的 LinuxDo 用户名或邮箱。
50+
- `LINUXDO_PASSWORD`:你的 LinuxDo 密码。
51+
- (可选) `GOTIFY_URL``GOTIFY_TOKEN`
52+
- (可选) `TELEGRAM_TOKEN``TELEGRAM_USERID`
3353

34-
## 运行结果
54+
2. **手动触发工作流**
55+
- 进入 GitHub 仓库的 `Actions` 选项卡。
56+
- 选择你想运行的工作流。
57+
- 点击 `Run workflow` 按钮,选择分支,然后点击 `Run workflow` 以启动工作流。
58+
59+
#### 运行结果
60+
61+
##### 网页中查看
3562

36-
### 网页中查看
3763
`Actions`栏 -> 点击最新的`Daily Check-in` workflow run -> `run_script` -> `Execute script`
3864

3965
可看到`Connect Info`
4066
(新号可能这里为空,多挂几天就有了)
4167
![image](https://github.com/user-attachments/assets/853549a5-b11d-4d5a-9284-7ad2f8ea698b)
4268

69+
### 青龙面板使用
70+
71+
*注意:如果是docker容器创建的青龙,请使用`whyour/qinglong:debian`镜像,latest(alpine)版本可能无法安装部分依赖*
72+
73+
1. **依赖安装**
74+
- 首次运行前需要安装Python依赖
75+
- 进入青龙面板 -> 依赖管理 -> 安装依赖
76+
- 依赖类型选择`python3`
77+
- 自动拆分选择``
78+
- 名称填写(仓库`requirements.txt`文件的完整内容):
79+
```
80+
playwright==1.43.0
81+
wcwidth==0.2.13
82+
tabulate==0.9.0
83+
loguru==0.7.2
84+
requests==2.32.3
85+
```
86+
- 点击`确定`按钮,等待安装完成
87+
88+
2. **添加仓库**
89+
- 进入青龙面板 -> 订阅管理 -> 创建订阅
90+
- 依次在对应的字段填入内容(未提及的不填):
91+
- **名称**:Linux.DO 签到
92+
- **类型**:公开仓库
93+
- **链接**:https://github.com/doveppp/linuxdo-checkin.git
94+
- **分支**:main
95+
- **定时类型**:`crontab`
96+
- **定时规则**(拉取上游代码的时间,一天一次,可以自由调整频率): 0 0 * * *
97+
- **执行前**(注意:要先完成上一步的依赖安装才能执行这个指令):`playwright install --with-deps firefox`
98+
99+
3. **配置环境变量**
100+
- 进入青龙面板 -> 环境变量 -> 创建变量
101+
- 需要配置以下变量:
102+
- `LINUXDO_USERNAME`:你的LinuxDo用户名/邮箱
103+
- `LINUXDO_PASSWORD`:你的LinuxDo密码
104+
- (可选) `GOTIFY_URL`:Gotify服务器地址
105+
- (可选) `GOTIFY_TOKEN`:Gotify应用Token
106+
- (可选) `TELEGRAM_TOKEN`:Telegram Bot Token
107+
- (可选) `TELEGRAM_USERID`:Telegram用户ID
108+
109+
4. **手动拉取脚本**
110+
- 首次添加仓库后不会立即拉取脚本,需要等待到定时任务触发,当然可以手动触发拉取
111+
- 点击右侧"运行"按钮可手动执行
112+
113+
#### 运行结果
114+
115+
##### 青龙面板中查看
116+
- 进入青龙面板 -> 定时任务 -> 找到`Linux.DO 签到` -> 点击右侧的`日志`
117+
118+
### Gotify 通知
119+
120+
当配置了 `GOTIFY_URL` 和 `GOTIFY_TOKEN` 时,签到结果会通过 Gotify 推送通知。
121+
具体 Gotify 配置方法请参考 [Gotify 官方文档](https://gotify.net/docs/).
122+
43123
### Telegram 通知
44124
45125
可选功能:配置 Telegram 通知,实时获取签到结果。
@@ -56,4 +136,6 @@
56136
57137
## 自动更新
58138
59-
默认状态下自动更新是关闭的,[点击此处](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md#%E6%89%93%E5%BC%80%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0)查看打开自动更新步骤。
139+
- **Github Actions**:默认状态下自动更新是关闭的,[点击此处](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md#%E6%89%93%E5%BC%80%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0)
140+
查看打开自动更新步骤。
141+
- **青龙面板**:更新是以仓库设置的定时规则有关,按照本文配置,则是每天0点更新一次。

main.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
"""
2+
cron: 0 0 */12 * *
3+
new Env("Linux.Do 签到")
4+
"""
15
import os
26
import random
37
import time
48
import functools
59
import sys
6-
10+
import requests
711
from loguru import logger
812
from playwright.sync_api import sync_playwright
913
from tabulate import tabulate
@@ -31,8 +35,14 @@ def wrapper(*args, **kwargs):
3135
os.environ.pop("DISPLAY", None)
3236
os.environ.pop("DYLD_LIBRARY_PATH", None)
3337

34-
USERNAME = os.environ.get("USERNAME")
35-
PASSWORD = os.environ.get("PASSWORD")
38+
USERNAME = os.environ.get("LINUXDO_USERNAME")
39+
PASSWORD = os.environ.get("LINUXDO_PASSWORD")
40+
if not USERNAME:
41+
USERNAME = os.environ.get('USERNAME')
42+
if not PASSWORD:
43+
PASSWORD = os.environ.get('PASSWORD')
44+
GOTIFY_URL = os.environ.get("GOTIFY_URL") # 新增环境变量
45+
GOTIFY_TOKEN = os.environ.get("GOTIFY_TOKEN") # 新增环境变量
3646

3747
HOME_URL = "https://linux.do/"
3848
LOGIN_URL = "https://linux.do/login"
@@ -114,6 +124,7 @@ def run(self):
114124
sys.exit(1) # 使用非零退出码终止整个程序
115125
self.click_topic()
116126
self.print_connect_info()
127+
self.send_gotify_notification()
117128

118129
def click_like(self, page):
119130
try:
@@ -150,6 +161,27 @@ def print_connect_info(self):
150161

151162
page.close()
152163

164+
def send_gotify_notification(self):
165+
"""发送消息到Gotify"""
166+
if GOTIFY_URL and GOTIFY_TOKEN:
167+
try:
168+
response = requests.post(
169+
f"{GOTIFY_URL}/message",
170+
params={"token": GOTIFY_TOKEN},
171+
json={
172+
"title": "LINUX DO",
173+
"message": f"✅每日签到成功完成",
174+
"priority": 1
175+
},
176+
timeout=10
177+
)
178+
response.raise_for_status()
179+
logger.success("消息已推送至Gotify")
180+
except Exception as e:
181+
logger.error(f"Gotify推送失败: {str(e)}")
182+
else:
183+
logger.info("未配置Gotify环境变量,跳过通知发送")
184+
153185

154186
if __name__ == "__main__":
155187
if not USERNAME or not PASSWORD:

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
playwright==1.43.0
22
wcwidth==0.2.13
33
tabulate==0.9.0
4-
loguru==0.7.2
4+
loguru==0.7.2
5+
requests==2.32.3

0 commit comments

Comments
 (0)