diff --git a/cron/newsletter-cercetasi-state.json b/cron/newsletter-cercetasi-state.json index 0c82c80..7177e0a 100644 --- a/cron/newsletter-cercetasi-state.json +++ b/cron/newsletter-cercetasi-state.json @@ -1,5 +1 @@ -{ - "last_sent": 13, - "year": 2026, - "last_sent_at": "2026-04-02T18:59:37.878273+00:00" -} +{"last_sent": 13, "year": 2026, "last_sent_at": "2026-04-02T18:18:46.000000+00:00"} diff --git a/src/newsletter_cercetasi.py b/src/newsletter_cercetasi.py index 0729f02..c113623 100644 --- a/src/newsletter_cercetasi.py +++ b/src/newsletter_cercetasi.py @@ -35,10 +35,14 @@ def _write_state(state: dict) -> None: async def _newsletter_exists(n: int, year: int) -> bool: - """Return True if newsletter #{n}/{year} returns HTTP 200.""" + """Return True if newsletter #{n}/{year} exists (HTTP 200, no redirect to 404 page). + + Beehiiv redirects non-existent newsletters: /p/newsletter-N-din-YEAR → /?404=... (302) + A real newsletter returns 200 directly without redirect. + """ url = NEWSLETTER_BASE_URL.format(n=n, year=year) try: - async with httpx.AsyncClient(follow_redirects=True) as client: + async with httpx.AsyncClient(follow_redirects=False) as client: resp = await client.get(url, timeout=10) return resp.status_code == 200 except Exception as e: