1.8 KiB
Executable File
1.8 KiB
Executable File
TTSHOP 同步脚本
sync.py 使用 Python 标准库和 requests 读取公开 Google Sheets 工作簿,并把所有工作表合并成一个 UTF-8 HTML 表格,固定写入 data/merged.html。工作表名称和顺序来自 XLSX 导出,单元格使用公开 gviz 接口返回的显示值。
合并规则:每张表第一行是标题;列按首次出现顺序取并集;源表已有的 LinkName 会改名为 LinkName_Source、LinkName_Source_2 等并保留;脚本最后追加生成的 LinkName 列。HTML 文本会进行转义。内容没有变化时不产生 Git 提交,变化时只提交 data/merged.html 并推送到 main。
本地运行
python -m pip install -r requirements.txt
python sync.py
脚本默认使用固定工作簿 ID 1DPbdVsX3SG_kgDXs2j34mDAgplRSfcAWKKG9yqalFmw、仓库 ttshop、分支 main 和输出路径 data/merged.html。本地运行需要当前目录是该仓库,并且 Git 已配置可推送的 origin;不要把凭据写入 remote URL。
环境变量
GIT_CREDENTIAL_SECRET:可选的 Git 密码/token。脚本通过临时GIT_ASKPASS使用,不写入 URL、日志或提交文件。GITEA_OWNER:Git askpass 的用户名提示值;workflow 从仓库变量注入。GITEA_BASE_URL:Gitea 地址,作为 workflow 配置保留;实际推送使用 checkout 提供的origin。SYNC_FAILURE_WEBHOOK_URL:可选的失败通知 URL。失败时最多发送一次简短通知,通知失败不会覆盖原始异常。
Gitea Actions
.gitea/workflows/sync.yml 每天执行一次 0 19 * * *(按 UTC 解释时为 Asia/Shanghai 次日 03:00),也支持手动触发。workflow 只安装 requirements.txt 中的 requests 并运行 python sync.py,不依赖包 CLI、测试 extras、runner、scheduler 或报告系统。