GitHub Actions工作流已集成自动登录功能,每次查询前自动获取新的cookie,无需手动更新。
在仓库中配置以下Secrets:
仓库页面 → Settings → Secrets and variables → Actions → New repository secret
Name: NJU_USERNAME
Value: 你的学号(例如:201250000)
Name: NJU_PASSWORD
Value: 你的统一身份认证密码
Name: YUNMA_TOKEN
Value: 云码API Token(从 https://zhuce.jfbym.com 获取)
┌─────────────────────────────────────┐
│ Repository secrets │
├─────────────────────────────────────┤
│ NJU_USERNAME 201250000 │
│ NJU_PASSWORD •••••••••• │
│ YUNMA_TOKEN TA6djdhm0N... │
└─────────────────────────────────────┘
触发条件:
执行流程:
1. Checkout 代码
2. 安装 Python 依赖
3. 自动登录获取Cookie ← 🆕 自动化
4. 验证 Cookie 有效性
5. 读取房间ID列表
6. 查询所有房间电费
7. 生成聚合数据
8. 提交到仓库
触发条件:
可选参数:
room_ids: 指定查询的房间ID(留空使用config/room_ids.txt)skip_existing: 是否跳过已有数据的房间- name: Auto login to get cookie
env:
NJU_USERNAME: $
NJU_PASSWORD: $
YUNMA_TOKEN: $
run: |
# 写入配置文件
echo "$NJU_USERNAME" > /tmp/username
echo "$NJU_PASSWORD" > /tmp/password
echo "$YUNMA_TOKEN" > /tmp/token
# 执行自动登录
python scripts/nju_auto_login.py
=== 开始自动登录流程 ===
✓ 配置文件已创建
[验证码识别]
✓ 识别成功: adyq
[3] 加密密码...
✓ 密码已加密
[4] 提交登录...
✓ 登录成功!
[6] 验证Cookie...
✓ Cookie验证成功
✓ Cookie文件已生成: /tmp/cookie.json
验证码识别:
优化策略:
修改 .github/workflows/daily-query.yml:
on:
schedule:
- cron: '0 2 * * 0' # 改为每周日运行
可能原因:
检查步骤:
# 本地测试
echo "学号" > /tmp/username
echo "密码" > /tmp/password
echo "云码token" > /tmp/token
python scripts/nju_auto_login.py
查看GitHub Actions日志:
Actions → 选择失败的workflow → 查看详细日志
症状:
✗ 识别失败: 余额不足
解决:
症状:
✗ 登录失败
提示: 可能是验证码识别错误,请重试
解决:
症状:
✗ Cookie validation failed
解决:
默认情况下,GitHub会向仓库管理员发送邮件通知:
在workflow中添加Slack/钉钉通知(可选):
- name: Notify on failure
if: failure()
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"❌ 登录失败,请检查secrets配置"}' \
$
在README.md中添加状态徽章:
[](https://github.com/你的用户名/仓库名/actions/workflows/daily-query.yml)
部署前确认以下事项:
NJU_USERNAME secretNJU_PASSWORD secretYUNMA_TOKEN secret# 1. Fork或克隆仓库
git clone https://github.com/your-username/dorm_public.git
cd dorm_public
# 2. 在GitHub网页配置secrets
# Settings → Secrets → New repository secret
# 添加 NJU_USERNAME, NJU_PASSWORD, YUNMA_TOKEN
# 3. 修改房间列表(如需要)
echo "53463" > config/room_ids.txt
echo "53464" >> config/room_ids.txt
# 4. 提交并推送
git add config/room_ids.txt
git commit -m "chore: update room IDs"
git push
# 5. 手动触发测试
# Actions → Manual Electricity Query → Run workflow
# 6. 检查结果
# Actions → 查看workflow运行结果
# database/summaries/ 目录查看生成的数据
Q: 为什么每次都要重新登录?
A: Cookie有效期约7天,每天自动登录确保cookie始终有效。
Q: 可以改为每周登录一次吗?
A: 可以,修改cron表达式为 '0 2 * * 0'(每周日)。
Q: 云码识别失败怎么办?
A: 工作流会在下次运行时自动重试。如果持续失败,检查token和余额。
Q: 如何查看已查询的数据?
A: 查看 database/summaries/ 目录,或访问GitHub Pages(如已配置)。
Q: 工作流运行时间过长?
A: 正常,查询500个房间需要约20-30分钟。可减少房间数量或调整并发数。