# ----------------------------------------------------------------------------- # Lou-Ka — Agrégateur de logements à louer (province de Québec) # Auteur : Simon-Pierre Boucher — contact@spboucher.ai # connectors/aera_chambly.py : connecteur Aera Chambly (aerachambly.com — # « Aera Chambly Signature », complexe de condominiums locatifs riverains # au 1878, avenue Bourgogne / 225, rue Caron, Chambly — réseau Aera / # Biophilia, distinct du connecteur aera3r qui couvre aera3r.com, # esplanadegirouard.ca et petitquartier.ca). Le site Webflow n'affiche # aucun prix en dur : la page /plans embarque le widget Planpoint # (app.planpoint.io/Aera-Chambly4/aera) — on interroge l'API JSON publique # via le helper _planpoint.py. Granularité = UNITÉ (prix, pi², chambres, # étage, plans). Seules les unités « Available » sont retenues — au # 2026-08-25 les 144 unités sont Sold/Reserved (inventaire vide, le # connecteur captera les libérations futures). # ----------------------------------------------------------------------------- from __future__ import annotations from ..schema import Listing from ._planpoint import planpoint_projects, unit_listing from .base import BaseConnector PAGE_URL = "https://aerachambly.com/plans" NAMESPACE = "Aera-Chambly4" HOST_NAME = "aera" class AeraChamblyConnector(BaseConnector): source_id = "aera_chambly" request_delay = 0.8 def fetch(self) -> list[Listing]: try: projects = planpoint_projects(self, "projects", NAMESPACE, HOST_NAME) except Exception: return [] listings: list[Listing] = [] for project in projects: for floor in project.get("floors") or []: for unit in floor.get("units") or []: lst = unit_listing(self.source_id, project, floor, unit, page_url=PAGE_URL, default_city="Chambly") if lst is not None: listings.append(lst) return listings