import os from fastapi import FastAPI from playwright.sync_api import sync_playwright app = FastAPI() @app.get("/") def read_root(): """ 動作確認用のエンドポイント。 """ return {"message": "Hello from Hugging Face Spaces. Visit /get_mhtml to save MHTML."} @app.get("/get_mhtml") def get_mhtml(): """ https://civitai.com/models/1055452/akashicpulse を開き、 ブラウザレンダリング後のページを MHTML として保存。 """ url = "https://civitai.com/models/1055452/akashicpulse" output_path = "akashicpulse.mhtml" try: with sync_playwright() as p: browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto(url, wait_until="networkidle") # Chrome DevTools Protocol セッションを作成し、MHTML 取得 cdp_session = page.context.new_cdp_session(page) snapshot = cdp_session.send("Page.captureSnapshot", {"format": "mhtml"}) browser.close() # ファイルに書き出し with open(output_path, "w", encoding="utf-8") as f: f.write(snapshot) return { "status": "success", "message": f"MHTML saved to {output_path}", } except Exception as e: return { "status": "error", "message": str(e), }