Multi-Time Daily Step Runner #145
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 文件路径: .github/workflows/daily-step-runner.yml | |
| name: Multi-Time Daily Step Runner | |
| # 触发器配置 | |
| on: | |
| # 1. 设置多个定时触发器,避开整点 | |
| schedule: | |
| # 任务一:北京时间 早上 8:46 (00:46 UTC) | |
| - cron: '46 0 * * *' | |
| # 任务二:北京时间 下午 14:46 (06:46 UTC) | |
| - cron: '46 6 * * *' | |
| # 2. 保留手动触发功能,方便测试 | |
| workflow_dispatch: | |
| jobs: | |
| run-and-notify: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Run Job and Send PushPlus Notification | |
| run: | | |
| # --- 核心脚本区 --- | |
| # 1. 获取当前的UTC小时 (0-23) | |
| CURRENT_HOUR_UTC=$(date -u +'%H') | |
| echo "Current UTC hour is: $CURRENT_HOUR_UTC. This will determine the step range." | |
| # 2. 根据UTC时间判断是哪个任务,并设置对应的步数范围和任务名 | |
| # 我们用一个宽松的范围(< 3)来判断早间任务,以防任务启动有延迟 | |
| if (( CURRENT_HOUR_UTC < 3 )); then | |
| # 这是早间任务 (00:xx UTC) | |
| RUN_TYPE="清晨" | |
| MIN_STEPS=1000 | |
| MAX_STEPS=9999 | |
| echo "Morning schedule detected. Step range: $MIN_STEPS - $MAX_STEPS." | |
| else | |
| # 这是午后任务 (06:xx UTC) | |
| RUN_TYPE="午后" | |
| MIN_STEPS=20000 | |
| MAX_STEPS=30000 | |
| echo "Afternoon schedule detected. Step range: $MIN_STEPS - $MAX_STEPS." | |
| fi | |
| # 手动运行时,也会根据当前时间自动选择一个范围 | |
| # 3. 在选定的范围内生成随机步数 | |
| RANDOM_STEPS=$((RANDOM % (MAX_STEPS - MIN_STEPS + 1) + MIN_STEPS)) | |
| echo "Final steps to submit: $RANDOM_STEPS" | |
| # 4. 使用 curl 发送刷步请求并捕获服务器响应 | |
| API_URL="http://api3.jlwz.cn/bs_2021.php" | |
| RESPONSE=$(curl -sS --connect-timeout 15 \ | |
| -H "Referer: https://3g.gljlw.com/" \ | |
| -A "Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Mobile/15E148 Safari/604.1" \ | |
| "${API_URL}?mobile=${{ secrets.USER_EMAIL }}&psw=${{ secrets.USER_PASSWORD }}&step=$RANDOM_STEPS&type=2") | |
| echo "Server Response: $RESPONSE" | |
| # 5. 根据服务器响应结果,准备不同的推送内容 | |
| if [[ "$RESPONSE" == *'"code":"1"'* ]]; then | |
| TITLE="✅ $RUN_TYPE 刷步成功-$(date +'%Y-%m-%d')" | |
| CONTENT="### 🎉 $RUN_TYPE 刷步任务执行成功!\n\n- **提交步数**: **$RANDOM_STEPS** 步\n\n- **任务范围**: $MIN_STEPS - $MAX_STEPS\n\n- **服务器响应**: \`$RESPONSE\`\n\n- **执行时间**: $(date -u +'%Y-%m-%d %H:%M:%S') (UTC)" | |
| else | |
| TITLE="❌ $RUN_TYPE 刷步失败-$(date +'%Y-%m-%d')" | |
| CONTENT="### ⚠️ $RUN_TYPE 刷步任务执行失败!\n\n请登录 GitHub Actions 查看详细日志。\n\n- **尝试步数**: $RANDOM_STEPS\n\n- **服务器响应**: \`$RESPONSE\`\n\n- **执行时间**: $(date -u +'%Y-%m-%d %H:%M:%S') (UTC)" | |
| fi | |
| # 6. 调用 PushPlus API 发送通知 | |
| curl -sS --connect-timeout 15 \ | |
| -X POST "http://www.pushplus.plus/send" \ | |
| -d "token=${{ secrets.PUSHPLUS_TOKEN }}" \ | |
| -d "title=$TITLE" \ | |
| -d "content=$CONTENT" \ | |
| -d "template=markdown" |