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%

Court terme : retrait des 7 connecteurs squelettes jamais productifs (sources mortes ou hors Québec)

Suppression des stubs disabled=True et de leurs entrées dans sources_ct.json,
verdicts revérifiés en live le 2026-08-25 :
- chaletsquebec : domaine sans DNS (SERVFAIL)
- locationschalets : 301 → km42.ca (1 exploitant, 2 chalets, 0 prix)
- hebergementquebec : 302 → citq.qc.ca (aucun répertoire scrapable)
- chaletsdirect : chalets de ski européens, zéro inventaire QC
- blueground : aucun marché québécois (sitemap = tor seul, page Montréal 404)
- tripadvisor : produit locations fermé nov. 2024 (VacationRentals-g155033 → 301 Hotels, confirmé Scrapfly)
- sonder : liquidation nov. 2025, sonder.com = affilié Booking (403 même via Scrapfly ASP)

Aucune rangée de ces sources dans les bases ; registre auto-découvrant intact (22 connecteurs actifs).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 25, 2026) parent 063972a

8 changed files +0 −196

modified data/sources_ct.json +0 −7
@@ -3,15 +3,12 @@
3 3 { "id": "airbnb", "name": "Airbnb", "url": "https://www.airbnb.ca", "category": "internationale" },
4 4 { "id": "booking", "name": "Booking.com", "url": "https://www.booking.com", "category": "internationale" },
5 5 { "id": "vrbo", "name": "Vrbo", "url": "https://www.vrbo.com", "category": "internationale" },
6 − { "id": "tripadvisor", "name": "TripAdvisor Rentals", "url": "https://www.tripadvisor.ca", "category": "internationale", "status": "fermée — produit locations arrêté (nov. 2024)" },
7 6 { "id": "expedia", "name": "Expedia (locations de vacances)", "url": "https://www.expedia.ca", "category": "internationale" },
8 7 { "id": "agoda", "name": "Agoda Homes", "url": "https://www.agoda.com", "category": "internationale", "status": "en attente de connecteur" },
9 8 { "id": "plumguide", "name": "Plum Guide", "url": "https://www.plumguide.com", "category": "internationale", "status": "en attente de connecteur" },
10 9 { "id": "glampinghub", "name": "Glamping Hub", "url": "https://glampinghub.com", "category": "internationale" },
11 10 { "id": "hipcamp", "name": "Hipcamp", "url": "https://www.hipcamp.com", "category": "internationale" },
12 11 { "id": "marriott_hvmi", "name": "Marriott Homes & Villas", "url": "https://homes-and-villas.marriott.com", "category": "internationale", "status": "en attente de connecteur" },
13 − { "id": "sonder", "name": "Sonder", "url": "https://www.sonder.com", "category": "internationale", "status": "fermée — liquidation (nov. 2025)" },
14 − { "id": "blueground", "name": "Blueground", "url": "https://www.theblueground.com", "category": "internationale", "status": "hors Québec" },
15 12 { "id": "furnishedfinder", "name": "Furnished Finder", "url": "https://www.furnishedfinder.com", "category": "internationale", "status": "en attente de connecteur" },
16 13 { "id": "corporatestays", "name": "Corporate Stays", "url": "https://www.corporatestays.com", "category": "internationale" },
17 14 { "id": "monsieurchalets", "name": "MonsieurChalets", "url": "https://www.monsieurchalets.com", "category": "quebecoise" },
@@ -21,11 +18,7 @@
21 18 { "id": "mcal", "name": "Maisons et chalets à louer", "url": "https://maisonsetchaletsalouer.com", "category": "quebecoise" },
22 19 { "id": "qldc", "name": "Québec Location de Chalets", "url": "https://www.quebeclocationdechalets.com", "category": "quebecoise" },
23 20 { "id": "rsvpchalets", "name": "RSVP Chalets", "url": "https://rsvpchalets.com", "category": "quebecoise" },
24 − { "id": "chaletsquebec", "name": "Chalets Québec", "url": "https://www.chaletsquebec.com", "category": "quebecoise", "status": "site disparu" },
25 21 { "id": "chaletsauquebec", "name": "Chalets au Québec", "url": "https://www.chaletsauquebec.com", "category": "quebecoise" },
26 − { "id": "hebergementquebec", "name": "Hébergement Québec", "url": "https://hebergementquebec.com", "category": "quebecoise", "status": "site disparu" },
27 − { "id": "chaletsdirect", "name": "ChaletsDirect", "url": "https://www.chaletsdirect.com", "category": "quebecoise", "status": "hors Québec" },
28 − { "id": "locationschalets", "name": "LocationsChalets", "url": "https://www.locationschalets.com", "category": "quebecoise", "status": "site disparu" },
29 22 { "id": "tremblant_living", "name": "Tremblant Living", "url": "https://www.tremblantliving.com", "category": "agence" },
30 23 { "id": "gites_passant", "name": "Gîtes et Auberges du Passant", "url": "https://www.terroiretsaveurs.com", "category": "gites" },
31 24 { "id": "bonjourquebec", "name": "Bonjour Québec (CITQ)", "url": "https://www.bonjourquebec.com", "category": "officielle" },
deleted louka/shortterm/connectors/blueground.py +0 −28
@@ -1,28 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/blueground.py : Blueground (theblueground.com) — SOURCE NON
4 −# VIABLE (2026-08) : aucun inventaire au Québec.
5 −#
6 −# Constat au 2026-08-23 : le sitemap officiel (theblueground.com/sitemap.xml)
7 −# énumère les 37 marchés de la plateforme par code ville (ath, atl, …, tor,
8 −# tyo, vie, wdc, zrh) — le SEUL marché canadien est Toronto (« tor ») ;
9 −# ni Montréal ni aucune ville québécoise n'existe (l'URL
10 −# /furnished-apartments-montreal-canada renvoie un 404 applicatif).
11 −# Blueground n'opère donc pas au Québec ; rien à agréger.
12 −#
13 −# À réévaluer si la plateforme ouvre Montréal : la mécanique serait alors
14 −# simple (pages ville server-rendered + sitemaps par code ville, ex.
15 −# sitemap.tor.xml, aucune protection anti-bot rencontrée).
16 −# -----------------------------------------------------------------------------
17 −from __future__ import annotations
18 −
19 −from ..schema import StListing
20 −from .base import StConnector
21 −
22 −
23 −class Blueground(StConnector):
24 − source_id = "blueground"
25 − disabled = True # aucun marché québécois (Toronto = seul marché canadien)
26 −
27 − def fetch(self) -> list[StListing]:
28 − return []
deleted louka/shortterm/connectors/chaletsdirect.py +0 −22
@@ -1,22 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/chaletsdirect.py : ChaletsDirect.com — SOURCE HORS SUJET.
4 −#
5 −# Vérifié le 2026-08-22 : malgré son nom, www.chaletsdirect.com est un
6 −# répertoire de chalets de SKI EN EUROPE (Morzine, Chamonix, Avoriaz,
7 −# Verbier, Andorre, Autriche… — sitemap.xml complet parcouru : zéro
8 −# occurrence de « Québec », aucune destination canadienne). Aucun
9 −# inventaire québécois à ingérer → connecteur désactivé.
10 −# -----------------------------------------------------------------------------
11 −from __future__ import annotations
12 −
13 −from ..schema import StListing
14 −from .base import StConnector
15 −
16 −
17 −class ChaletsDirect(StConnector):
18 − source_id = "chaletsdirect"
19 − disabled = True # site = chalets de ski européens, rien au Québec
20 −
21 − def fetch(self) -> list[StListing]:
22 − return []
deleted louka/shortterm/connectors/chaletsquebec.py +0 −24
@@ -1,24 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/chaletsquebec.py : Chalets Québec (www.chaletsquebec.com)
4 −#
5 −# SOURCE INFAISABLE (vérifié le 2026-08-22) : le domaine chaletsquebec.com
6 −# n'existe plus — aucun enregistrement NS/A (SERVFAIL à la délégation, y
7 −# compris via 1.1.1.1/8.8.8.8), injoignable via Scrapfly et Bright Data,
8 −# aucun instantané dans la Wayback Machine et aucune page indexée par Google
9 −# (site:chaletsquebec.com → 0 résultat). Ne pas confondre avec
10 −# chaletsauquebec.com (source distincte `chaletsauquebec` dans
11 −# sources_ct.json). À réactiver seulement si le domaine revit un jour.
12 −# -----------------------------------------------------------------------------
13 −from __future__ import annotations
14 −
15 −from ..schema import StListing
16 −from .base import StConnector
17 −
18 −
19 −class ChaletsQuebec(StConnector):
20 − source_id = "chaletsquebec"
21 − disabled = True # domaine mort — voir l'en-tête
22 −
23 − def fetch(self) -> list[StListing]:
24 − raise RuntimeError("chaletsquebec.com : domaine inexistant (2026-08-22)")
deleted louka/shortterm/connectors/hebergementquebec.py +0 −30
@@ -1,30 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/hebergementquebec.py : Hébergement Québec — SOURCE MORTE.
4 −#
5 −# Vérifié le 2026-08-23 :
6 −# - hebergementquebec.net (l'ancien répertoire d'hébergements de la CITQ)
7 −# redirige en 301 vers https://citq.qc.ca/fr/index.php — le site
8 −# d'information de la Corporation de l'industrie touristique du Québec,
9 −# qui n'affiche aucune annonce ni répertoire d'établissements scrapable.
10 −# - hebergementquebec.com est aujourd'hui un hébergeur WEB (« Hébergement
11 −# Web Québécois — à partir de 15 $/mois », Alice Média) : rien à voir
12 −# avec l'hébergement touristique.
13 −# - Aucun autre domaine équivalent trouvé (Serper, gl=ca hl=fr).
14 −#
15 −# Le module est conservé (avec disabled = True, donc exclu du registre) au
16 −# cas où le répertoire renaîtrait ; l'inventaire CITQ officiel reste couvert
17 −# par le connecteur bonjourquebec.
18 −# -----------------------------------------------------------------------------
19 −from __future__ import annotations
20 −
21 −from ..schema import StListing
22 −from .base import StConnector
23 −
24 −
25 −class HebergementQuebec(StConnector):
26 − source_id = "hebergementquebec"
27 − disabled = True # site disparu (voir en-tête)
28 −
29 − def fetch(self) -> list[StListing]:
30 − return []
deleted louka/shortterm/connectors/locationschalets.py +0 −24
@@ -1,24 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/locationschalets.py : LocationsChalets.com — RÉPERTOIRE DISPARU.
4 −#
5 −# Vérifié le 2026-08-22 : le répertoire original n'existe plus.
6 −# www.locationschalets.com répond 301 → https://km42.ca/, la boutique
7 −# Shopify d'un unique exploitant (« KM-42 », 2 chalets à Val-David) dont
8 −# le catalogue (/products.json) ne contient que 3 produits : un produit
9 −# de test Stripe et 2 fiches chalet à 0,00 $ (réservation hors Shopify,
10 −# aucun prix ni disponibilité exploitables). /sitemap.xml de l'ancien
11 −# domaine : 404. Pas d'inventaire de répertoire à ingérer → désactivé.
12 −# -----------------------------------------------------------------------------
13 −from __future__ import annotations
14 −
15 −from ..schema import StListing
16 −from .base import StConnector
17 −
18 −
19 −class LocationsChalets(StConnector):
20 − source_id = "locationschalets"
21 − disabled = True # domaine redirigé vers km42.ca (1 exploitant, 2 chalets, 0 prix)
22 −
23 − def fetch(self) -> list[StListing]:
24 − return []
deleted louka/shortterm/connectors/sonder.py +0 −30
@@ -1,30 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/sonder.py : Sonder (sonder.com) — SOURCE NON VIABLE (2026-08)
4 −#
5 −# Sonder Holdings (appartements-hôtels, plusieurs immeubles à Montréal) a
6 −# annoncé sa liquidation le 9 novembre 2025 après la rupture de son entente
7 −# de licence avec Marriott ; les opérations ont cessé immédiatement
8 −# (faillite, clients évincés — actions désormais cotées SONDQ en OTC).
9 −#
10 −# Constat au 2026-08-23 : le domaine sonder.com est devenu un AGRÉGATEUR
11 −# AFFILIÉ sans inventaire propre — les pages « /all/canada/quebec/montreal »
12 −# (CloudFront, contournable via Bright Data) listent des hôtels et annonces
13 −# tiers avec ids « BC-… » et liens /redirect-partner vers booking.com
14 −# (campagne d'affiliation bc_cid=SONDER, collection « formerly-sonder »).
15 −# Scraper ce site ne produirait que des doublons de notre connecteur Booking,
16 −# attribués à la mauvaise source. On garde le module en éteignoir au cas où
17 −# la marque renaîtrait avec un vrai inventaire.
18 −# -----------------------------------------------------------------------------
19 −from __future__ import annotations
20 −
21 −from ..schema import StListing
22 −from .base import StConnector
23 −
24 −
25 −class Sonder(StConnector):
26 − source_id = "sonder"
27 − disabled = True # liquidation nov. 2025 ; sonder.com = affilié Booking
28 −
29 − def fetch(self) -> list[StListing]:
30 − return []
deleted louka/shortterm/connectors/tripadvisor.py +0 −31
@@ -1,31 +0,0 @@
1 −# -----------------------------------------------------------------------------
2 −# Lou-Ka — Location court terme
3 −# connectors/tripadvisor.py : TripAdvisor Vacation Rentals — SOURCE NON VIABLE
4 −#
5 −# TripAdvisor a FERMÉ son produit de location de vacances le 1er novembre 2024
6 −# (fin des réservations directes, fermeture de FlipKey, Holiday Lettings et
7 −# Niumba — annonce Skift/communiqué de septembre 2024). Vérifié au 2026-08-23 :
8 −# toutes les URL /VacationRentals-g<geo>-Reviews-… (tripadvisor.ca ET .com,
9 −# testées via Scrapfly ASP : Québec g155033, Montréal g155032, Mont-Tremblant
10 −# g155059, New York g28953) répondent 301 → la page /Hotels-g<geo>-…-Hotels.html
11 −# ou 404. Il n'existe plus ni vertical « locations de vacances », ni API/JSON
12 −# embarqué correspondant ; les hébergements « autres » affichés dans la
13 −# recherche hôtels sont des fiches d'avis renvoyant vers des OTA tierces
14 −# (Booking, Vrbo, Expedia) que nos autres connecteurs couvrent déjà — les
15 −# scraper ne produirait que des doublons mal attribués.
16 −#
17 −# On garde le module en éteignoir au cas où TripAdvisor relancerait un vrai
18 −# inventaire de locations (l'auto-registre l'exclut tant que disabled = True).
19 −# -----------------------------------------------------------------------------
20 −from __future__ import annotations
21 −
22 −from ..schema import StListing
23 −from .base import StConnector
24 −
25 −
26 −class TripAdvisor(StConnector):
27 − source_id = "tripadvisor"
28 − disabled = True # produit locations de vacances fermé le 2024-11-01
29 −
30 − def fetch(self) -> list[StListing]:
31 − return []
32