Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 98.9%
Python 0.6%
1# -----------------------------------------------------------------------------2# Lou-Ka — Agrégateur de logements à louer (province de Québec)3# Auteur : Simon-Pierre Boucher — contact@spboucher.ai4# connectors/quartier_7.py : connecteur Quartier 7 (quartier7mascouche.com —5# Constructions Lacourse, 9 phases de condos locatifs au 1451 avenue de la6# Gare à Mascouche, ~650 unités). La page « condos neufs à louer » affiche7# ses unités via le widget Planpoint : on interroge l'API JSON publique8# (app.planpoint.io/api/groups/find, 1 requête/sync, voir _planpoint.py).9# Granularité UNITÉ : pi², chambres, salle(s) de bain, plans et inclusions10# par unité, date de livraison, adresse + lat/lng par phase ; la source ne11# publie AUCUN prix (price null chez Planpoint, « sans prix publics » —12# rien d'inventé). Seules les unités « Available » sont retenues.13# -----------------------------------------------------------------------------14from __future__ import annotations1516from ..schema import Listing17from ._planpoint import planpoint_projects, unit_listing18from .base import BaseConnector1920PAGE_URL = "https://quartier7mascouche.com/condos-neufs-a-louer-mascouche/"21NAMESPACE = "quartier7"22HOST_NAME = "general"232425class Quartier7Connector(BaseConnector):26 source_id = "quartier_7"27 request_delay = 0.82829 def fetch(self) -> list[Listing]:30 try:31 projects = planpoint_projects(self, "groups", NAMESPACE, HOST_NAME)32 except Exception:33 return []34 listings: list[Listing] = []35 for project in projects:36 # « Quartier 7 - Phase 6 » -> le nom de phase distingue les unités37 # aux numéros identiques (toutes les phases ont la même adresse)38 for floor in project.get("floors") or []:39 for unit in floor.get("units") or []:40 lst = unit_listing(self.source_id, project, floor, unit,41 page_url=PAGE_URL,42 default_city="Mascouche")43 if lst is not None:44 listings.append(lst)45 return listings46