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%

History of immoka/connectors/kijiji.py · clear filter

  1. Tue, Aug 18, 2026 2

    1. Vague 2 : jointure au rôle d'évaluation, fiches Sutton/RLP/LesPAC enrichies, days_on_market, dédup par adresse
      …
      - vraiprix_local : le JSON vraiprix porte désormais le rôle d'évaluation
        (valeur_role/terrain/bâtiment, année, superficies officielles) ; repli des
        colonnes year_built/lot_sqft (provenance details.*_source=role, jamais pour
        le terrain des copropriétés) ; enrich_role() = backfill par id_provinc
        (64 972 fiches, year_built 20 %→67 %, lot_sqft 17 %→62 %) ; limite
        d'appariement par cycle 2000→5000 + enrich_role 20 000/cycle.
      - db.sync_source : COALESCE sur year_built/area_sqft/lot_sqft (les
        enrichissements ne sont plus écrasés par null).
      - Sutton (v5) : année (Construction :), Aire habitable/Terrain superficie,
        taxes, évaluation municipale, frais de copropriété, revenus (plex).
      - Royal LePage (v2) : parse complet direct (sans Firecrawl) — description
        (Remarques), Bâti en, superficies (garde-fou aménagée≤6000 pi²), salles
        d'eau, taxes/évaluations, frais de condo, listed_at, galerie complète.
      - LesPAC (v2) : toutes les boîtes de caractéristiques (pas juste la 1re),
        salles de bain/d'eau, superficies + lot depuis Dimension du terrain,
        cityLabel, listed_at (publicReleaseTimestamp).
      - Kijiji : details.listed_at (activationDate). DuProprio : lat/lng du JSON-LD.
      - API : days_on_market calculé (first_seen) sur listings + fiche.
      - Dédup 3e passe : inter-sources par adresse normalisée + type + prix ±1 %
        (garde-fous : apt/unité identique requis, même source en double = ignoré,
        autorité primaire > _ag_ > petites annonces) — 1 748 doublons masqués.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +7
    2. Connecteurs : clé Algolia auto-extraite (Barnes), taxes/éval RE/MAX, specs Via Capitale, Kijiji étendu
      …
      - barnes_quebec : identifiants Algolia extraits du HTML public (PHPVars) avec
        cache process 6 h + repli sur la dernière clé connue et ré-extraction sur
        échec — résilient aux rotations de clé (403 du 2026-08-15).
      - remax_quebec : le tableau de caractéristiques est rendu « Libellé | Valeur »
        (l'ancien ordre inverse ne captait que du bruit) — parseur corrigé, section
        « Détails financiers » captée (taxes municipales/scolaires + évaluation
        municipale terrain/bâtiment/année), libellés étendus, clé de cache v3→v4
        (re-parse progressif dans le budget par cycle).
      - via_capitale : enrichissement fiche détail complet (chambres, salles de
        bains, superficies, année, taxes, évaluations) via meta + tableau aplati ;
        requête directe d'abord, repli Firecrawl stealth sur challenge Cloudflare ;
        budget IMMOKA_VIACAP_DETAIL_LIMIT (défaut 200/cycle) ; clé v2→v3.
      - kijiji : _ATTR_LABELS étendus (terrain/acres, année, stationnement, meublé,
        visites), « Size (acres) » (texte libre) → lot_sqft, salles de bains « 1.5 »
        désormais captées ; clé v1→v2.
      - _detailutil.centris_details : ordre « Libellé | Valeur » prioritaire +
        garde-fous (libellés voisins/en-têtes de section jamais pris pour valeurs,
        format minimal exigé pour taxes/évaluation/année/superficies).
      - schema.finalize : promotion details → colonnes (Année de construction →
        year_built, Superficie habitable/du terrain → area_sqft/lot_sqft) avec
        parse_year strict (normalize.py). Backfill one-shot exécuté sur la base :
        year_built +95, area_sqft +792, lot_sqft +275.
      - db.get_stale_detail + repli « périmé plutôt que rien » (_detailutil.enrich,
        remax _enrich) : un bump de version de clé ne déshabille plus les fiches
        hors budget, et un échec transitoire n'écrase plus un payload valide.
      - Registres : via_ag_dumontroyal (0 inscription à l'API source.immo),
        remax_ag_pro_commercial (redirige vers remax-alliance.ca — doublon) et
        remax_ag_solutions (nancyforlini.com migré hors Centris) désactivés
        (disabled+note) ; loaders ignorent disabled ; sources.json à jour ;
        95 → 92 connecteurs.
      Simon-Pierre Boucher committed 1 mo ago · 1 file +40 −5
  2. Wed, Aug 12, 2026 3

    1. Simon-Pierre Boucher committed 1 mo ago · 1 file +2
    2. Simon-Pierre Boucher committed 1 mo ago · 1 file +66 −1
    3. feat: connecteurs Kijiji, LesPAC et Ubee (immobilier à vendre, Québec seulement)
      …
      - kijiji.py : c35 maisons + c643 condos + c641 terrains, l9001 (QC), __NEXT_DATA__/Apollo, prix en cents normalisés, GPS natif
      - lespac.py : b37-b42 achat-vente province entière (exclut location et vente d'entreprises), searchResponse embarqué, caractéristiques structurées
      - ubee.py : API anonyme SearchProperties (Seller, résidentiel+commercial), galerie Cloudinary complète, superficies m²→pi²
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +102