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.0 KB · 44 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/espace_w.py : connecteur Espace W (espacew.com — condos locatifs5#   à Cité Mirabel, 4 immeubles W1 à W4, rue de Chenonceau/boul. de Versailles).6#   Le site WordPress affiche ses unités via le widget Planpoint : on interroge7#   l'API JSON publique (app.planpoint.io/api/groups/find, 1 requête/sync,8#   voir _planpoint.py). Granularité UNITÉ : pi², chambres, salle(s) de bain,9#   plans et inclusions par unité, adresse + lat/lng par immeuble ; la source10#   ne publie AUCUN prix (price null chez Planpoint, pas de prix sur le site11#   non plus) — rien d'inventé. Seules les unités « Available » sont retenues12#   (les louées/vendues sont exclues).13# -----------------------------------------------------------------------------14from __future__ import annotations1516from ..schema import Listing17from ._planpoint import planpoint_projects, unit_listing18from .base import BaseConnector1920PAGE_URL = "https://www.espacew.com/unites-et-disponibilites/"21NAMESPACE = "Espace-W-condos-locatifs"22HOST_NAME = "Espace-W"232425class EspaceWConnector(BaseConnector):26    source_id = "espace_w"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            for floor in project.get("floors") or []:37                for unit in floor.get("units") or []:38                    lst = unit_listing(self.source_id, project, floor, unit,39                                       page_url=PAGE_URL,40                                       default_city="Mirabel")41                    if lst is not None:42                        listings.append(lst)43        return listings44