# ----------------------------------------------------------------------------- # Sorti-Ka — Agrégateur de sorties & événements (province de Québec) # Auteur : Simon-Pierre Boucher — contact@spboucher.ai # connectors/saintjerome.py : connecteur Ville de Saint-Jérôme — calendrier # Source : https://www.vsj.ca/calendrier/ (WordPress + FacetWP). # Extraction: le listing FacetWP se pagine CÔTÉ SERVEUR par paramètres # d'URL (vérifié 2026-08-25) : GET /calendrier/?fwp_calendar_ # dates=&fwp_paged=N → cartes HTML rendues # (10/page) : date FR, heure « 19 h », lieu, titre, url fiche, # extrait, image. On pagine jusqu'à épuisement (plafond # VSJ_PAGES). Le flux RSS /calendrier/feed/ est périmé (2019) # et l'API REST wp/v2/event ne publie pas les dates. # Accès : site municipal public, robots.txt permissif (wp-admin # seulement). GET directs throttlés, identification honnête. # Prix : non publié dans les cartes → jamais inventé. # ----------------------------------------------------------------------------- from __future__ import annotations import html as _html import os import re from datetime import date from ..normalize import clean_text, parse_date_fr, parse_time from ..schema import Event from .base import BaseConnector LIST_URL = "https://www.vsj.ca/calendrier/" PAGES_MAX = int(os.environ.get("VSJ_PAGES", "12")) # la classe exacte est « event__single ... » — ne pas confondre avec les # sous-blocs event__single--image / --content _CARD_RE = re.compile( r']*class="event__single(?:\s[^"]*)?"[^>]*>(.*?)(?=]*class="event__single(?:\s[^"]*)?"|