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%

[ka2] fix connecteur logiluxx: échec honnête au lieu d'un « 0 trouvé ok » qui menaçait les 9 annonces. Le sync du 2026-09-07 12:10 a rapporté found=0 ok=1 (dérive vs médiane 9, retraits suspendus par le garde-fou) : le fetch() avalait toute exception par immeuble (`except Exception: continue` sur les 3 mini-sites) — une erreur réseau transitoire devenait un succès à 0 résultat, invisible du disjoncteur d'ingest.py. Reproduit en live : les 3 pages (sthubert, sthubert2, boucherville) répondent 200 (~42 Ko) et les 9 typologies se parsent — la source est saine, seul le silence sur erreur était fautif. On laisse désormais l'exception remonter (ingest journalise ok=0) et on lève RuntimeError si un immeuble ne parse aucune typologie (garde contre un rendu partiel 200, même pattern que les fix gwlra, cinquante_ans_plus et le_fjord). Testé : run.py sync logiluxx → found=9 ok (St-Hubert I/II 3½ 1 941 $, 4½ 2 154 $, 5½ 2 671 $, Boucherville 3 typologies), pm2 restart lou-ka-sync, site :8095 → 200.

Simon-Pierre Boucher committed 17 days ago (Sep 7, 2026) parent 472920e

1 changed file +9 −5

modified louka/connectors/logiluxx.py +9 −5
@@ -65,13 +65,17 @@ class LogiluxxConnector(BaseConnector):
65 65 return html, re.sub(r"\s+", " ", soup.get_text(" ", strip=True))
66 66
67 67 def fetch(self) -> list[Listing]:
68 + # échec HONNÊTE : une erreur réseau/parse sur un immeuble doit lever
69 + # (ok=0 dans sync_log) et non être avalée — un « 0 trouvé ok » déclenche
70 + # la dérive et menace les 9 annonces (vu le 2026-09-07 12:10)
68 71 listings: list[Listing] = []
69 72 for bid, base, name, sector, city in BUILDINGS:
70 − try:
71 − listings.extend(self._fetch_building(bid, base, name,
72 − sector, city))
73 − except Exception:
74 − continue
73 + found = self._fetch_building(bid, base, name, sector, city)
74 + if not found:
75 + raise RuntimeError(
76 + f"logiluxx : aucune typologie parsée sur {base} "
77 + "(rendu partiel ou site restructuré)")
78 + listings.extend(found)
75 79 return listings
76 80
77 81 def _fetch_building(self, bid: str, base: str, name: str,
78 82