#!/usr/bin/env python3 """用 tea 的驗證讀取 Gitea wiki 全部頁面,存成 markdown。 用法:fetch_wiki.py <輸出目錄> 輸出目錄放在 repo 之外;原文不入版本控制。 """ import base64 import json import re import subprocess import sys from pathlib import Path def tea_api(endpoint): out = subprocess.run(["tea", "api", endpoint], capture_output=True, text=True, check=True).stdout return json.loads(out) def list_pages(repo): pages, page = [], 1 while True: batch = tea_api(f"repos/{repo}/wiki/pages?page={page}&limit=50") if not batch: return pages pages.extend(batch) page += 1 def safe_name(title): return re.sub(r"[\\/:*?\"<>|]", "_", title).strip() def main(): repo, outdir = sys.argv[1], Path(sys.argv[2]) outdir.mkdir(parents=True, exist_ok=True) pages = list_pages(repo) seen = set() for p in pages: if p["title"] in seen: continue seen.add(p["title"]) page = tea_api(f"repos/{repo}/wiki/page/{p['sub_url']}") text = base64.b64decode(page["content_base64"]).decode("utf-8") (outdir / f"{safe_name(p['title'])}.md").write_text(text, encoding="utf-8") print(f"{len(seen)} pages -> {outdir}") if __name__ == "__main__": main()