Skip to content

Fetch Trakt Data

Fetch Trakt Data #63

Workflow file for this run

# 定时抓取 Trakt 观影数据
# 每 2 小时执行一次,或手动触发
name: Fetch Trakt Data
on:
schedule:
# 每 2 小时运行一次(UTC 时间)
- cron: '0 */2 * * *'
# 允许手动触发(用于首次运行或调试)
workflow_dispatch:
# 授予 GITHUB_TOKEN 写权限,允许自动 commit & push
permissions:
contents: write
jobs:
fetch:
runs-on: ubuntu-latest
# 超时时间:10 分钟,防止 API 请求卡死
timeout-minutes: 10
steps:
# ① 检出公开仓库代码
- name: 检出仓库
uses: actions/checkout@v4
# ② 从私有仓库拉取数据库(增量基准)
- name: 拉取私有仓库数据
run: |
git clone https://x-access-token:${{ secrets.GH_PAT }}@github.com/shengdaozm/traktData.git /tmp/data-repo
mkdir -p data/reports
cp /tmp/data-repo/data/trakt.db data/trakt.db
cp -r /tmp/data-repo/data/reports/. data/reports/ 2>/dev/null || true
# ③ 配置 Python 环境
- name: 配置 Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
# ④ 安装依赖
- name: 安装 Python 依赖
run: pip install -r requirements.txt
# ⑤ 执行数据抓取
- name: 抓取 Trakt 数据
run: python -m scripts.fetch
env:
TRAKT_CLIENT_ID: ${{ secrets.TRAKT_CLIENT_ID }}
TRAKT_USERNAME: ${{ secrets.TRAKT_USERNAME }}
TMDB_API_KEY: ${{ secrets.TMDB_API_KEY }}
# ⑥ 生成前端 JSON 数据
- name: 生成前端数据
run: python -m scripts.render
# ⑦ 推送数据到私有仓库(数据库 + 前端 JSON)
- name: 推送数据到私有仓库
run: |
cp data/trakt.db /tmp/data-repo/data/trakt.db
mkdir -p /tmp/data-repo/data/reports
cp -r data/reports/. /tmp/data-repo/data/reports/ 2>/dev/null || true
mkdir -p /tmp/data-repo/web/data
cp -r web/data/. /tmp/data-repo/web/data/ 2>/dev/null || true
cd /tmp/data-repo
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/ web/data/
if git diff --cached --quiet; then
echo "数据无变更,跳过提交"
else
git commit -m "data: 自动更新 $(date -u +'%Y-%m-%dT%H:%M:%SZ')"
git push
fi
# ⑧ 提交前端数据到公开仓库
- name: 提交前端数据变更
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -f web/data/
if git diff --cached --quiet; then
echo "前端数据无变更,跳过提交"
else
git commit -m "data: 自动更新前端数据 $(date -u +'%Y-%m-%dT%H:%M:%SZ')"
git push
fi