summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)AuthorLines
4 daysFix day-of-week bug in recap mail: getDay()→getUTCDay() on noon UTCyyamashita-3/+2
+09:00 midnight をパースすると内部では前日15:00UTCになり、 getDay()がシステムタイムゾーン(UTC)で前日の曜日を返していた。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4 daysrecap mail: remove price column, make title a linkyyamashita-8/+5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 daysFix scraper restart loop: MARZ 500 on unpublished month + set -eyyamashita-2/+1
新宿MARZ翌月スケジュールのHTTP 500がスクレイパー全体を失敗させ、 set -e によりentrypointがcron起動前に終了→再起動ループを引き起こしていた。 - marz-shinjuku: 404/500は未掲載扱いで空配列を返すよう変更 - scraper-entrypoint.sh: set -e を削除し初回スクレイプ失敗でもcronを起動 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09Use Postfix container for recap mail; add Message-ID headeryyamashita-5/+8
Port 25 outbound unblocked: send-recap.ts now routes through the mail container (Postfix + OpenDKIM) for direct MX delivery with DKIM signing. Removes inline MX lookup logic added in the previous workaround. Also adds Message-ID header (required by Gmail) and updates default RECAP_TO to mazideyabai@gmail.com. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02Fix double JST offset in send-recap date calculationyyamashita-1/+1
isoDate() already adds JST_MS; calling it with nowJST() (which also adds JST_MS) shifted the date +18h, showing tomorrow's date instead of today's. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01Show today's (JST) events only, add link to by-date pageyyamashita-47/+27
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01Add daily recap email job via Postfix MTA containeryyamashita-0/+278
Sends an HTML digest of the next 7 days' events to efemeraladdress+golive@gmail.com at 08:00 JST daily (23:00 UTC cron). Adds scraper to the web Docker network so it can reach mail:25. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17Defer repo/hook setup to hetzner-infra/scripts/install.shyyamashita-16/+11
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17Remove inline hook from server-setup.sh; hooks managed by hetzner-infrayyamashita-15/+3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10Fix multi-month scrape coverage and add duo MUSIC EXCHANGEyyamashita-0/+265
- Extend 8 scrapers (liquid-room, shibuya-o, club-quattro, meets-otsuka, nishieifuku-jam, fever-shindaita, fad-yokohama, and new duo-music-exchange) to fetch 3 calendar months instead of 1-2, covering the full 65-day window - Add duo MUSIC EXCHANGE scraper (渋谷, ~700 cap, /schedule/YYYY/index_YYYY-MM.html) - Add npm test: Node.js built-in test runner verifies each scraper fetches all required month URLs via mocked fetch (10 tests, no extra deps) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08Update server-setup.sh: use /app/tokyo-livehouse-events work treeyyamashita-11/+5
2026-05-08Run scrape immediately on container start before handing off to cronyyamashita-0/+6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07Add Docker + Hetzner deploy setupyyamashita-0/+35
2026-05-06Async scraping, scrape_logs, and CLIyyamashita-0/+67
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 <noreply@anthropic.com>