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>
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 | |