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/logisquebec.py · clear filter

  1. Tue, Aug 18, 2026 2

    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 +20 −2
    2. Connecteurs : rivero/trudel suspendus (RealVuu mort), groupe_dallaire via proxy Scrapfly, disjoncteur ingest, capreit/logisquebec/royal_lepage enrichis
      …
      - rivero + trudel : app.realvuu.com hors-ligne depuis 2026-08-10 (DNS NXDOMAIN)
        -> flag disabled=True (exclus du registre auto), statut sources.json mis a
        jour, 244 annonces zombies archivees (active=0, aucune suppression)
      - ingest : disjoncteur leger — une source en echec aux 5 derniers passages
        est sautee (log sync_log "disjoncteur: ..."), retentee 1 passage sur 5
      - groupe_dallaire : le pare-feu bloque l IP du serveur (timeout TCP sur tout
        le domaine) -> timeout direct 8 s puis repli proxy Scrapfly (simple, puis
        escalade ASP residentiel apres 422 WAF) pour admin-ajax et fiches ;
        teste : 255/256 unites retrouvees en ~5 min
      - capreit : area_sqft (colonne pi2 de la fiche) et availability_date
        (earliest_date du flux) mappes directement — 117/117 vs 107/117 avant
      - logisquebec : details canoniques postal_code / contact.phone / rooms
        (JSON-LD) ; superficie : verifie, aucune source structuree sur la fiche
      - royal_lepage : enrichissement fiche detail (description "Remarques",
        superficie habitable, agence) avec cache detail2 + cap 100/cycle
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +9 −2
  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 +222