SPB Git forge

spb/lou-ka

Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

232commits 1branches 0releases
172.9 MBsize
maindefault branch
2 days agolast push
HTML 98.9% Python 0.6%
2.1 KB · 47 lines python
Raw Blame History
1# -----------------------------------------------------------------------------2# Lou-Ka — Agrégateur de logements à louer (province de Québec)3# Auteur : Simon-Pierre Boucher — contact@spboucher.ai4# connectors/aera_chambly.py : connecteur Aera Chambly (aerachambly.com —5#   « Aera Chambly Signature », complexe de condominiums locatifs riverains6#   au 1878, avenue Bourgogne / 225, rue Caron, Chambly — réseau Aera /7#   Biophilia, distinct du connecteur aera3r qui couvre aera3r.com,8#   esplanadegirouard.ca et petitquartier.ca). Le site Webflow n'affiche9#   aucun prix en dur : la page /plans embarque le widget Planpoint10#   (app.planpoint.io/Aera-Chambly4/aera) — on interroge l'API JSON publique11#   via le helper _planpoint.py. Granularité = UNITÉ (prix, pi², chambres,12#   étage, plans). Seules les unités « Available » sont retenues — au13#   2026-08-25 les 144 unités sont Sold/Reserved (inventaire vide, le14#   connecteur captera les libérations futures).15# -----------------------------------------------------------------------------16from __future__ import annotations1718from ..schema import Listing19from ._planpoint import planpoint_projects, unit_listing20from .base import BaseConnector2122PAGE_URL = "https://aerachambly.com/plans"23NAMESPACE = "Aera-Chambly4"24HOST_NAME = "aera"252627class AeraChamblyConnector(BaseConnector):28    source_id = "aera_chambly"29    request_delay = 0.83031    def fetch(self) -> list[Listing]:32        try:33            projects = planpoint_projects(self, "projects",34                                          NAMESPACE, HOST_NAME)35        except Exception:36            return []37        listings: list[Listing] = []38        for project in projects:39            for floor in project.get("floors") or []:40                for unit in floor.get("units") or []:41                    lst = unit_listing(self.source_id, project, floor, unit,42                                       page_url=PAGE_URL,43                                       default_city="Chambly")44                    if lst is not None:45                        listings.append(lst)46        return listings47