diff --git a/scraper/scraper.py b/scraper/scraper.py index 8ef07cd..fe4c001 100644 --- a/scraper/scraper.py +++ b/scraper/scraper.py @@ -133,17 +133,24 @@ def scrape() -> list[dict]: else: time_str = mid_text if mid_text not in ("", "TBD") else "TBD" - # ── Parse date ───────────────────────────────── + # ── Parse date ───────────────────────────────────────────────────── dt = None - year = datetime.now(PT_TZ).year + now = datetime.now(PT_TZ) + year = now.year + for fmt in ("%a, %b %d %Y", "%A, %B %d %Y"): try: dt = datetime.strptime(f"{date_text} {year}", fmt) dt = dt.replace(tzinfo=PT_TZ) - now = datetime.now(PT_TZ) - # roll year forward for future dates that wrap - if not is_past and dt.month < now.month - 2: - dt = dt.replace(year=year + 1) + + if is_past: + # Past matches: if date is in the future, use previous year + if dt > now: + dt = dt.replace(year=year - 1) + else: + # Future matches: if date is in the past, use next year + if dt < now: + dt = dt.replace(year=year + 1) break except ValueError: continue