Replace HTML scraping with a direct call to bff.zipair.net/v1/information
via FlareSolverr. The BFF returns clean JSON (id, title, category,
publishedAt) — no regex parsing of rendered pages. Also adds first-run
seeding to avoid alerting on all historical notifications.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- All ZIPAIR fetches now go through FlareSolverr at 192.168.10.76:8191
- Dropped sitemap/probe approach; scrape EN notification listing directly
- State file now stores JSON list of seen slugs instead of last integer ID
- Matches keywords against slug and full page content
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use `or` so empty NTFY_URL env var falls back to hardcoded default
- Remove Sec-Fetch-* headers that can trigger Cloudflare bot detection
- Try sitemap_index.xml as second sitemap attempt
- When both sitemaps are blocked, probe notification IDs sequentially
above last_seen as a last resort
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Polls ZIPAIR sitemap every 10 min via Gitea Actions, detects new
Singapore/winter notifications, and fires an ntfy push alert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>