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%

fix(glmc): pagination ?pg=N (176 fiches vs 60) + exclusion section Vendus

Le plugin mw-centris pagine par ?pg=N, pas ?_paged (qui renvoyait
toujours les 60 premieres). Coupe la section Vendus avant parsing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 17, 2026) parent 88a3c37

1 changed file +9 −6

modified immoka/connectors/glmc.py +9 −6
@@ -3,11 +3,12 @@
3 3 # Auteur : Simon-Pierre Boucher — contact@spboucher.ai
4 4 # connectors/glmc.py : Les Immeubles GLMC (glmc.ca) — Rivière-du-Loup + KRTB /
5 5 # Témiscouata / Les Basques (Bas-Saint-Laurent). Plus grosse agence
6 −# indépendante de l'Est du Québec. Site WordPress (thème X/Cornerstone),
7 −# liste rendue SERVEUR sur /proprietes/, paginée par ?_paged=N (60/page).
8 −# Chaque carte : lien /proprietes/{adresse-slug}-{n°Centris}/ (le n° Centris
9 −# termine le slug), adresse+ville, photo. Prix/chambres via la page détail
10 −# (enrichissement plafonné + cache).
6 +# indépendante de l'Est du Québec. Site WordPress (plugin mw-centris, thème X),
7 +# liste rendue SERVEUR sur /proprietes/, paginée par ?pg=N (60/page, ~176
8 +# fiches). Chaque carte : lien /proprietes/{adresse-slug}-{n°Centris}/ (le n°
9 +# Centris termine le slug), adresse+ville, photo. Prix/chambres via la page
10 +# détail (enrichissement plafonné + cache). La section « Vendus » (fiches
11 +# vendues, après la pagination) est exclue du parsing.
11 12 #
12 13 # source_id « glmc_ag_qc » : infixe _ag_ = dédup Centris (db.refresh_dedup) —
13 14 # si le n° Centris est déjà porté par une bannière couverte, la fiche est
@@ -45,11 +46,13 @@ class GlmcConnector(BaseConnector):
45 46 by_id: dict[str, PropertyListing] = {}
46 47 dry = 0
47 48 for page in range(1, self.max_pages + 1):
48 − url = LISTING if page == 1 else f"{LISTING}?_paged={page}"
49 + url = f"{LISTING}?pg={page}"
49 50 try:
50 51 html = self.get(url).text
51 52 except Exception:
52 53 break
54 + # exclure la section « Vendus » (fiches vendues, après la pagination)
55 + html = html.split(">Vendus<")[0]
53 56 before = len(by_id)
54 57 for blk in _CARD_SPLIT.split(html)[1:]:
55 58 blk = blk[:2500]
56 59