本文档介绍如何使用GitHub Actions自动执行天翼云盘签到任务。
GitHub Actions是GitHub提供的持续集成/持续部署(CI/CD)服务,可以自动化执行各种任务,如构建、测试和部署代码。在本项目中,我们使用GitHub Actions自动执行天翼云盘的签到操作。
首先,您需要Fork本仓库到您自己的GitHub账号下。点击页面右上角的"Fork"按钮即可。
在您Fork的仓库中,需要设置天翼云盘的账号和密码:
- 进入您的仓库
- 点击"Settings"(设置)
- 在左侧菜单中选择"Secrets and variables" > "Actions"
- 点击"New repository secret"添加以下两个secret:
- 名称:
TYYP_USERNAME,值:您的天翼云盘账号(手机号) - 名称:
TYYP_PSW,值:您的天翼云盘密码
- 名称:
如果您是第一次使用GitHub Actions,可能需要手动启用:
- 进入您的仓库
- 点击"Actions"选项卡
- 点击"I understand my workflows, go ahead and enable them"
本项目包含两个工作流文件:
签到工作流配置文件位于.github/workflows/main.yml,主要负责执行天翼云盘签到操作:
name: 云盘签到
on:
push:
branches: [master]
pull_request:
branches: [master]
schedule:
- cron: '30 1,13 * * *' # 每天北京时间9:30和21:30执行
workflow_dispatch: # 支持手动触发
watch:
types: started # 当有人star仓库时触发
permissions: write-all
jobs:
build:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai # 设置时区为中国时区
steps:
- name: Checkout
uses: actions/checkout@v3
- name: 打印IP地址
run: echo "My IP address is $(curl -s ifconfig.me)"
- name: Set up Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.8
cache: 'pip' # 缓存pip依赖
- name: 缓存Python依赖
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: 安装环境
run: pip install -r requirements.txt
- name: 签到
run: |
(echo "签到时间 $(date "+%F %T") [](https://github.com/${{ github.repository }}/actions/workflows/main.yml)" && python3 ./main.py) | tee >(sed 's/^/- /' > index.md)
env:
TYYP_USERNAME: ${{ secrets.TYYP_USERNAME }}
TYYP_PSW: ${{ secrets.TYYP_PSW }}
- name: Git Auto Commit
uses: stefanzweifel/git-auto-commit-action@v4.16.0
with:
commit_message: "自动签到更新 [skip ci]"
file_pattern: 'index.md log.md'GitHub Pages工作流配置文件位于.github/workflows/jekyll-gh-pages.yml,主要负责将签到结果部署到GitHub Pages:
name: GitHub Pages
on:
push:
branches: ["main"]
schedule:
- cron: '35 5,17 * * *' # 每天北京时间13:35和01:35执行
workflow_dispatch: # 支持手动触发
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai # 设置时区为中国时区
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Cache Jekyll Build
uses: actions/cache@v3
with:
path: _site
key: ${{ runner.os }}-jekyll-${{ hashFiles('**/*.html', '**/*.md') }}
restore-keys: |
${{ runner.os }}-jekyll-
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v3本项目支持单账户和多账户配置,您可以根据需要选择合适的方式:
如果您只有一个天翼云盘账号,可以使用以下方式添加账号信息:
-
GitHub Secrets(推荐):在仓库的Secrets中设置:
TYYP_USERNAME:您的天翼云盘账号(手机号)TYYP_PSW:您的天翼云盘密码
-
环境变量文件:在项目根目录创建
.env文件:TYYP_USERNAME=您的手机号 TYYP_PSW=您的密码注意:如果使用此方法,请确保不要将
.env文件提交到GitHub
如果您有多个天翼云盘账号,可以使用以下方式添加多账户信息:
-
GitHub Secrets(推荐):在仓库的Secrets中设置:
TYYP_USERNAME:多个账号用&分隔,例如:13800000001&13800000002TYYP_PSW:对应账号的密码,同样用&分隔,例如:password1&password2
注意:用户名和密码的顺序必须一一对应
-
环境变量文件:在项目根目录创建
.env文件:TYYP_USERNAME=13800000001&13800000002 TYYP_PSW=password1&password2
多账户配置后,程序会自动依次处理每个账号的签到和抽奖操作,并在输出中分别显示每个账号的结果。
除了定时触发外,您还可以手动触发工作流:
- 进入您的仓库
- 点击"Actions"选项卡
- 在左侧选择"云盘签到"或"GitHub Pages"工作流
- 点击"Run workflow"按钮
- 选择分支并点击"Run workflow"确认
工作流执行后,您可以通过以下方式查看结果:
- 在仓库的"Actions"选项卡中查看执行日志
- 查看自动生成的
index.md文件,其中包含签到记录 - 通过GitHub Pages查看签到记录:
https://[您的用户名].github.io/189pan/
GitHub Actions的定时任务可能会有延迟,特别是在GitHub服务器负载较高的时候。这是正常现象,通常会在计划时间后的几分钟内开始执行。
可能的原因:
- 账号或密码错误
- 天翼云盘服务器问题
- IP被限制(GitHub Actions的IP可能被天翼云盘识别为异常)
解决方法:
- 检查您设置的账号和密码是否正确
- 尝试手动触发工作流,查看详细错误信息
- 如果频繁失败,可以尝试减少签到频率
编辑.github/workflows/main.yml文件中的cron表达式:
schedule:
- cron: '30 1,13 * * *' # 默认为每天北京时间9:30和21:30cron表达式格式为分 时 日 月 周,注意GitHub Actions使用UTC时间,比北京时间晚8小时。
如果您的GitHub Pages没有及时更新,可以尝试:
- 手动触发"GitHub Pages"工作流
- 检查GitHub Pages设置是否正确(在仓库设置的Pages选项中)
- 确认
jekyll-gh-pages.yml工作流是否成功执行
如果您使用多账户配置遇到问题:
- 确保用户名和密码的数量一致,且顺序对应
- 确保分隔符使用
&,不要使用其他字符 - 检查账号和密码中是否包含特殊字符,如果有,可能需要进行转义