SPB Git forge

spb/house-ka

Public
18commits 1branches 0releases
1.9 MBsize
maindefault branch
20 days agolast push
Python 67% TypeScript 18.2% CSS 14.4%
1.7 KB · 41 lines python
Raw Blame History
1# -----------------------------------------------------------------------------2# Immo-Ka — Agrégateur de maisons à vendre (province de Québec)3# Auteur : Simon-Pierre Boucher — contact@spboucher.ai4# mortgage/providers/mcap.py : MCAP — distribution 100 % courtiers, aucune5#   table publique de taux par terme (vérifié 2026-08). Seul signal public :6#   le taux préférentiel MCAP (+ date d'effet). Collecté comme référence,7#   exclu du comparateur de prêteurs (rate_type="other", purpose="unknown").8# -----------------------------------------------------------------------------9from __future__ import annotations1011import re1213from .base import RateProvider141516class McapProvider(RateProvider):17    provider_id = "mcap"18    institution = "MCAP"19    source_url = ("https://www.mcap.com/residential-mortgages/advice/"20                  "mortgage-rates-canada")21    request_delay = 1.02223    def fetch(self) -> list[dict]:24        return self.parse(self.get(self.source_url).text)2526    def parse(self, payload: str) -> list[dict]:27        m = re.search(28            r'prime-rate-module.*?round-number-box[^>]*>\s*([\d.]+)\s*%',29            payload, re.S)30        if not m:31            return []32        prime = float(m.group(1))33        dm = re.search(r'Effective\s+([A-Z][a-z]+ \d{1,2},? \d{4})', payload)34        conditions = ("Taux préférentiel MCAP"35                      + (f" — en vigueur le {dm.group(1)}" if dm else ""))36        return [self.make_product(37            rate=prime, rate_type="other", term_months=12, kind="posted",38            product_name="Taux préférentiel MCAP", purpose="unknown",39            conditions=conditions,40            raw={"prime": prime, "effective": dm.group(1) if dm else None})]41