SPB Git forge

spb/immo-ka

Public

Immo-Ka — agrégateur des propriétés à vendre au Québec (73 connecteurs, ~40 000 annonces, React+FastAPI)

112commits 1branches 0releases
125.4 MBsize
maindefault branch
13 days agolast push
Python 47.5% HTML 27.9% TypeScript 15.5% CSS 7.2% JavaScript 2%
4.6 KB · 76 lines markdown
Rendered Raw Blame History
1# Realtor.ca (MLS Québec) (`realtor_ag_ca`)23*Généré le 2026-08-28 22:22 par `scripts/gen_connector_docs.py` — fichier produit automatiquement, ne pas éditer à la main.*45## Registre (`data/sources.json`)67- **Site** : https://www.realtor.ca8- **Recherche** : https://www.realtor.ca/map#view=list&Province=QC9- **Couverture** : Toute la province — agrégateur MLS pan-bannières (SCI/CREA)10- **Type** : agrégateur11- **Statut** : actif1213> API interne api2.realtor.ca/Listing.svc/PropertySearch_Post (POST form). Protégée DataDome/Incapsula : accès direct = 403, mais REJOUABLE via Scrapfly ASP SANS render_js (vérifié 2026-08-18) → JSON riche : MLS, GPS, prix, CAC/SDB, superficie, photos, courtier+agence. 200 fiches/page, plafond serveur 600/recherche → sharding par 14 boîtes lat/lng QC, tri plus récentes d'abord (Sort=6-D). Budget borné IMMOKA_REALTOR_MAX (défaut 2 000 fiches/sync ≈ 10 appels Scrapfly — les ~10 shards les plus denses ; augmenter pour couvrir les régions éloignées ; 0 = désactivé). external_id = n° MLS Centris + infixe _ag_ → la dédup masque tout recoupement avec les connecteurs directs ; seules les fiches des bannières non couvertes restent visibles. Fenêtre glissante : les fiches anciennes sortent du budget au fil des syncs (miss_count → inactif).1415## Mécanique (introspection du code)1617- Module : `immoka/connectors/realtor_ca.py` — classe `RealtorCaConnector`18- Délai entre requêtes : 0.2 s ; cache détail BD : oui19- Budgets env (enrichissement détail plafonné/exécution) : `IMMOKA_REALTOR_MAX` (défaut 2000), `IMMOKA_REALTOR_DETAIL_LIMIT` (défaut 100)2021**En-tête du module :**2223> Immo-Ka — Agrégateur de maisons à vendre (province de Québec)24> Auteur : Simon-Pierre Boucher — contact@spboucher.ai25> connectors/realtor_ca.py : Realtor.ca (couverture MLS pan-bannières, QC)26>   API interne https://api2.realtor.ca/Listing.svc/PropertySearch_Post (POST27>   form). Protégée (DataDome/Incapsula) : l'accès direct renvoie 403, mais28>   l'API se REJOUE via Scrapfly ASP SANS render_js (1 crédit-appel ASP, pas de29>   navigateur) → JSON complet : n° MLS, GPS, prix, CAC/SDB, superficie, photos,30>   courtier + agence. Vérifié 2026-08-18 : 200 fiches/page, plafond serveur31>   600 fiches (MaxRecords) par recherche → SHARDING par boîtes lat/lng32>   couvrant le Québec, tri « plus récentes d'abord » (Sort=6-D).33>   BUDGET BORNÉ : IMMOKA_REALTOR_MAX fiches max par sync (défaut 2 000, soit34>   ~10 appels Scrapfly), réparties en balayant la page 1 de chaque shard puis35>   les pages 2-3 si le budget le permet. Les fiches plus anciennes sortent de36>   la fenêtre au fil des syncs (miss_count → active=0) : le connecteur vaut37>   surtout pour les inscriptions récentes des bannières non couvertes.38>   Mettre IMMOKA_REALTOR_MAX=0 pour désactiver le connecteur.39>   source_id « realtor_ag_ca » : l'infixe _ag_ + external_id = n° MLS Centris40>   activent la dédup existante — toute fiche déjà couverte par un connecteur41>   direct (RE/MAX, Royal LePage, Sutton…) est masquée, seules les fiches42>   UNIQUES (petites bannières sans connecteur) restent visibles.43>   ENRICHISSEMENT DÉTAIL (2026-08-18) : la réponse PropertySearch_Post ne44>   contient qu'UNE photo et un PublicRemarks VIDE (vérifié) — la galerie45>   complète, la description et les caractéristiques Building/Land viennent de46>   l'API Listing.svc/PropertyDetails (GET, mêmes protections → Scrapfly ASP47>   sans render_js, 1 crédit-appel), rejouée avec CultureId=2 (français) via48>   ReferenceNumber=<MLS> + PropertyID=<Id interne>. Cache BD detail_cache49>   (_detailutil.enrich) : chaque fiche n'est détaillée qu'UNE fois ; budget50>   IMMOKA_REALTOR_DETAIL_LIMIT appels/cycle (défaut 100, override ponctuel51>   IMMOKA_DETAIL_LIMIT) → rattrapage progressif du stock, nouveautés ensuite.5253## Volumétrie & complétude (BD live)5455| Indicateur | Valeur |56|---|---|57| Annonces en base (toutes) | 7 658 |58| Actives | 2 511 |59| Visibles (après dédup) | 397 |60| Masquées par la dédup | 2 114 |61| GPS (lat/lng) | 99.7 % |62| Photos | 100.0 % |63| Prix | 100.0 % |64| CAC (chambres) | 77.8 % |65| SDB (salles de bains) | 77.8 % |66| Année de construction | 76.8 % (dont rôle : 39.7 %) |67| Taxes / évaluation municipale | 0.0 % |68| Estimation Vrai-Prix (rôle) | 96.5 % |6970## Synchronisation7172- **Dernier sync** : 2026-08-28 17:27 — trouvé 2 148, +181 / ~31 / -104 — OK73- **Erreurs récentes** : 0 sur les 10 derniers syncs7475Voir aussi les [mécanismes transverses](INDEX.md#mécanismes-transverses-tous-connecteurs) (budgets détail, dédup Centris+adresse, jointure rôle vraiprix.db).76