From 538fd636e25595d88a958344d285c0e7cf44e530 Mon Sep 17 00:00:00 2001 From: yyamashita Date: Wed, 6 May 2026 22:24:38 +0900 Subject: Async scraping, scrape_logs, and CLI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Background scraping: - POST /api/scrape returns 202 immediately with run_id; scraping runs async - GET /api/scrape-status?run_id=xxx polls for results per venue - scrape_logs table: per-venue status (running/ok/error), events_saved, error, timestamps CLI (npm run scrape): - npm run scrape — 全会場をスクレイプ、結果を色付きで出力 - npm run scrape liquid-room — 特定会場のみ - npm run scrape -- --list — 登録済み会場一覧を表示 - エラー時は exit code 1 + エラーメッセージを dim 表示 Venues page: - 最終スクレイプ日時・成否をインラインで表示 - 会場ごとの「更新」ボタンを追加 Bug fix: upsertEvent に description/optional fields のデフォルト値を設定し better-sqlite3 の "Missing named parameter" エラーを解消 Co-Authored-By: Claude Sonnet 4.6 --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'package.json') diff --git a/package.json b/package.json index 16f2708..823b578 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "build": "react-router build", "dev": "react-router dev", "start": "react-router-serve ./build/server/index.js", - "typecheck": "react-router typegen && tsc" + "typecheck": "react-router typegen && tsc", + "scrape": "node --import tsx/esm scripts/scrape.ts" }, "dependencies": { "@react-router/node": "^7.3.0", @@ -19,6 +20,7 @@ "react-router": "^7.3.0" }, "devDependencies": { + "tsx": "^4.20.3", "@react-router/dev": "^7.3.0", "@tailwindcss/vite": "^4.2.4", "@types/better-sqlite3": "^7.6.13", -- cgit v1.2.3