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%

History of louka/connectors/duproprio.py · clear filter

  1. Tue, Aug 18, 2026 1

    1. Vague 2 : colonnes bedrooms/bathrooms, perf fb_marketplace/logisquebec, connecteurs Kangalou + Rentals.ca, visites virtuelles
      …
      - Schéma : colonnes bedrooms/bathrooms REAL (additives) dérivées dans
        finalize() — details explicites > type d'unité (n½ -> n-2, convention QC)
        > extraction texte ; backfill one-shot : 96,7 % bedrooms / 51 % bathrooms
        sur le parc actif.
      - fb_marketplace : recherche et détails Scrapfly EN PARALLÈLE (6 fils,
        mêmes requêtes, aucun volume perdu), TTL détail 10 -> 30 j, annonces
        louées filtrées avant enrichissement : 43-47 min -> 7,3 min/cycle.
      - logisquebec : budget détail 1200 -> 400 (dimensionné TTL 7 j / ~10
        passes/j), fiches jamais vues servies en premier, délai 0,7 -> 0,5 s :
        19 min -> 7,6 min/cycle, parc complet (6 393 fiches).
      - Kangalou (nouveau) : découverte en 1 requête via les pins de la carte
        (/fr/recherche/ajax/search-map/, loués/commerciaux exclus), fiches SSR
        (adresse, chambres/SDB, GPS, galerie, dispo, superficie) : 7 916 annonces.
      - Rentals.ca (nouveau) : même GraphQL que Louer.ca mais inventaire ~+15 %,
        rejoué via Scrapfly ASP sans rendu JS (Cloudflare), détails PAR LOTS de
        40 via nodes(ids), villes/volumes plafonnés : 3 452 annonces (les
        recoupements Louer.ca sont résorbés par la dédup, déjà dans PORTALS).
      - Visites virtuelles : details.virtual_tour — tours{} Matterport/YouTube
        du réseau Rentals.ca (louer_ca clé cache v2 + rentals_ca) + détection
        générique Matterport/iGUIDE/Klapty dans les fiches logisquebec,
        duproprio, kangalou. 1 107 annonces actives en ont déjà une.
      - TtlDetailCache : peek()/put() pour la planification de lots parallèles.
      - sources.json : +kangalou, +rentals_ca (275 sources, 212 connecteurs).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +4
  2. Mon, Aug 17, 2026 1

    1. Nouvelles sources + déduplication inter-sources
      …
      8 connecteurs (208 → 212), testés en live :
      - logisquebec — portail (~9 800 fiches) : sitemaps + JSON-LD, expiration HTTP 410
      - duproprio — location par particuliers (~4 200, 0 % chevauchement) : sitemaps gz + JSON-LD, retrait = 302
      - louer_ca — réseau Rentals.ca (~1 700) : API GraphQL interne (JWT), 1 annonce par plan d'étage
      - roomies — chambres/colocation : JSON-LD Room
      - groupe_maurice — 37 résidences pour aînés (RPA) : API REST + grilles de prix
      - bons_locataires — agence Montréal : carte MapListPro + fiches WordPress
      - omhm — logements abordables ENHARMONIE
      - fb_marketplace — Scrapfly ASP, pagination par tranches de prix (scroll bloqué hors login)
      
      Déduplication inter-sources (louka/dedup.py) :
      - colonnes dup_of / dup_sources (migration db.py), recalcul idempotent dans ingest.watch() après géocodage
      - blocage par clé d'adresse (civique + rue normalisée FR/EN + ville), confirmation type + prix ±4 %
      - contrainte « ≤1 annonce par source par groupe » (évite de fusionner des unités distinctes d'un immeuble)
      - canonique = source la plus autoritaire (gestionnaire direct > portail > petites annonces)
      - web.py n'affiche que les annonces canoniques (dup_of IS NULL) ; dup_sources exposé pour le badge « aussi publiée sur »
      - résultat : 147 groupes, 154 doublons masqués sur 18 536 annonces
      
      Utilitaire _detailutil.TtlDetailCache : cache de pages détail avec TTL + budget par sync.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +225