spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# loftsmtl — Lofts MTL (Rentsync/LiftSystem)2- site: https://www.loftsmtl.com (API api.theliftsystem.com/v2/search, client_id 773)3- méthode: json-api (inventaire immeubles) + html (pages immeubles : unités + commodités)4- annonces: 7 → 75- couverture après (sur 7 annonces): prix 100%, adresse 100%, dispo 100%, superficie 86%, commodités 100%6- fixture: ok · test: ok (2 passed)78## Champs extraits9- **API LiftSystem (par immeuble)** : nom, adresse + **code postal** (nouveau), ville/quartier, **lat/lng structurés** (nouveau), **`pet_friendly` booléen → pets "oui"/"non"** (nouveau), **téléphone du gestionnaire → details.contact.phone** (nouveau), description overview (FR+EN), permalink.10- **Page immeuble (par unité, div.suite)** : type, numéro, prix ($/mo), **pi² → `area_sqft` structuré** (nouveau ; cellule .suite-sqft, avant : texte d'amenity parsé par finalize), salles de bain, disponibilité (« Immediate Occupancy »…), photos, id stable `suite-NNNNNN`.11- **Section « Amenities » de la page immeuble (nouveau)** : Suite Amenities (Balconies, Concrete floors, Dishwasher, Dryer/Washer in suite, Fridge, Stove…) + Building Amenities (lockers, No Smoking allowed, secured entry, Permit Parking…) → dérivations riches : appliances{fridge,stove,dishwasher,washer_dryer}, storage, balcony/elevator, smoking=false, parking.1213## Champs indisponibles à la source14- Superficie absente sur 1 unité sur 7 (cellule sqft à 0 chez la source).15- Inclusions (chauffage/électricité/eau chaude) : jamais énoncées.16- Étage : non publié.17- Meublé : seulement suggéré dans le `building_header` texte (« Furnished loft in the Plateau ») — trop ambigu pour être affirmé par unité, non utilisé.18- `parking{indoor,outdoor,additional}` de l'API : null sur les 4 immeubles.1920## Fragilités21- Jeton `auth_token` public de l'API embarqué dans le site : peut tourner.22- Le permalink API pointe parfois /apartments/ alors que la page vit sous /residential/ (repli déjà en place).23- Labels d'amenities en anglais : la dérivation canonique dépend des motifs EN de normalize (dishwasher/washer/no smoking OK ; « secured entry », « Concrete floors » restent non mappés — affichés tels quels).24- 4 immeubles seulement ; le filtre `_CITY_MAP` doit suivre si Lofts MTL ajoute des villes.2526## Améliorations apportées27- lat/lng, code postal, pets (booléen structuré), téléphone de contact — tous depuis l'API.28- `area_sqft` structuré depuis la cellule .suite-sqft (garde-fou ≥80).29- Commodités passées de 2 items techniques (« 1 salle(s) de bain », « 614 pi² ») à ~18 items réels par unité → details passe de `{}` à `{appliances{…}, balcony/elevator, storage, smoking:false, parking, contact, pets}`.3031## Échantillon avant/après32**Lofts du Main — unité 200** (1295 $, Studio, Immediate Occupancy, 614 pi²)33- avant : pets=None, details=`{}`, amenities=`["1 salle(s) de bain","614 pi²"]`, lat/lng absents, address=`3827 Boulevard Saint-Laurent`34- après : pets=`oui`, details=`{"appliances":{"fridge":true,"stove":true,"dishwasher":true,"washer_dryer":true},"balcony":true,"storage":true,"smoking":false,"parking":{"available":true},"contact":{"phone":"514-806-7673"},"pets":"oui"}`, lat=45.5157/lng=-73.5762, address=`3827 Boulevard Saint-Laurent, H2W 1X9`3536**Lofts Parc Avenue — unité 302** (2020 $, 3½, 1117 pi²)37- avant : details=`{}` ; après : appliances complets, elevator=true, storage=true, smoking=false, pets=oui, lat/lng, code postal H2V 4H138