Phase 5 — billetterie Ticketpro (API JSON multi-tenants : St-Denis, Fun Nation, ExpoCité, PdC, SAG…) + salle Odyscène (Ste-Thérèse, Laurentides) via sallesjsonld
- ticketpro.py : API /api/v1/pages publique par tenant (aucun anti-bot), 1 Event par (spectacle, date à venir), lieu complet avec GPS, tags, cancelled/soldout, image ; 6 tenants QC (data/ticketpro_tenants.json), restauration/musée à créneaux exclus — 361 séances actives au 1er sync - salles_jsonld.json : + Odyscène (TheaterEvent JSON-LD, robots ouvert) → 33 événements Laurentides au 1er passage - docs/connecteurs régénérés (40 sources) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
45 changed files +841 −515
modified
data/salles_jsonld.json
+10 −0
@@ -27,6 +27,16 @@ | ||
| 27 | 27 | "salle": "Théâtre Capitole", |
| 28 | 28 | "ville": "Québec", |
| 29 | 29 | "robots": "Disallow: /cpresources/ /vendor/ seulement (vérifié 2026-08-19)" |
| 30 | + }, | |
| 31 | + { | |
| 32 | + "id": "odyscene", | |
| 33 | + "nom": "Odyscène (Théâtre Lionel-Groulx / Cabaret BMO, Sainte-Thérèse)", | |
| 34 | + "listes": ["https://odyscene.com/programmation/", | |
| 35 | + "https://odyscene.com/programmation-estivale/"], | |
| 36 | + "motif": "odyscene\\.com/programmation/(?!categories/)[a-z0-9-]{3,}", | |
| 37 | + "salle": "Théâtre Lionel-Groulx", | |
| 38 | + "ville": "Sainte-Thérèse", | |
| 39 | + "robots": "Disallow: (vide — tout permis, Yoast, vérifié 2026-08-22)" | |
| 30 | 40 | } |
| 31 | 41 | ] |
| 32 | 42 | } |
modified
data/sources.json
+11 −0
@@ -453,6 +453,17 @@ | ||
| 453 | 453 | "couverture": "26 organisations 100 % QC : Salle Albert-Rousseau, Petit Champlain, Diffusion Saguenay, Gatineau (Odyssée, Jean-Despréz), Vieux Terrebonne, Palace de Granby, Vieux Clocher Magog/Waterloo, La Tuque, Festival Western de St-Tite, clubs LHJMQ/LNAH…", |
| 454 | 454 | "cadence": "horaire (watcher PM2)", |
| 455 | 455 | "statut": "actif" |
| 456 | + }, | |
| 457 | + { | |
| 458 | + "id": "ticketpro", | |
| 459 | + "name": "Ticketpro — billetterie canadienne (tenants Québec)", | |
| 460 | + "url": "https://www.ticketpro.ca/", | |
| 461 | + "type": "billetterie", | |
| 462 | + "extraction": "API JSON publique de la nouvelle plateforme SPA par tenant (<org>.ticketpro.ca/api/v1/pages, aucun anti-bot ni rendu JS) : 1 fiche par spectacle avec titre, artiste, description, image, lieu complet (adresse, ville, code postal, lat/lng), toutes les dates horodatées, tags et drapeaux cancelled/soldout → 1 Event par (page, date à venir). 6 tenants QC dans data/ticketpro_tenants.json (tproqc agrège la province mais pas tprotsd), dédup inter-tenants par id de page. Lieux de restauration (soupers-spectacles St-Denis) et musée à créneaux exclus par config. startingPrice toujours 0 → aucun prix émis.", | |
| 463 | + "acces_legal": "Billetterie publique ; robots.txt n'interdit que /admin/ /gui/ /report/ (vérifié 2026-08-22) ; API du site officiel consommée telle quelle, GET throttlés 1 s, UA honnête, lien d'achat vers la fiche officielle /fr/pages/<id> du tenant", | |
| 464 | + "couverture": "Théâtre St-Denis + Studio St-Denis (Montréal), Fun Nation (Salle Pierre-Mercure, Monument-National, Club Soda), ExpoCité (Québec), Salle André-Gagnon (La Pocatière), Palais des congrès de Montréal, La Belle Église de Chertsey, Théâtre Rialto, Huntingdon… ~200 spectacles / ~1 100 séances datées (vérifié 2026-08-22)", | |
| 465 | + "cadence": "horaire (watcher PM2)", | |
| 466 | + "statut": "actif" | |
| 456 | 467 | } |
| 457 | 468 | ] |
| 458 | 469 | } |
| \ No newline at end of file | ||
added
data/ticketpro_tenants.json
+16 −0
@@ -0,0 +1,16 @@ | ||
| 1 | +{ | |
| 2 | + "_comment": "Sorti-Ka — tenants québécois de la billetterie Ticketpro (nouvelle plateforme SPA, API /api/v1). Auteur : Simon-Pierre Boucher <contact@spboucher.ai>. Chaque tenant = <domaine>.ticketpro.ca ; l'API /api/v1/pages y est publique (vérifié 2026-08-22). tproqc agrège la majorité des salles QC mais PAS tprotsd (vérifié) → les deux sont requis, dédup par id de page. Tenants hors Québec (tproatlantic, tprobarriecolts, goredsgo…) exclus par périmètre. tpromuseerodrigue exclu : créneaux d'admission de musée (176 plages quasi identiques), pas des événements. exclure_lieux : réservations de restaurants (soupers-spectacles du groupe St-Denis) filtrées par nom de lieu normalisé (sous-chaîne, sans accents ni casse).", | |
| 3 | + "tenants": [ | |
| 4 | + { "domaine": "tproqc", "nom": "Ticketpro Québec (agrégateur provincial)" }, | |
| 5 | + { "domaine": "tprotsd", "nom": "Théâtre St-Denis / Studio St-Denis (Montréal)" }, | |
| 6 | + { "domaine": "tprofunnation", "nom": "Fun Nation (Montréal)" }, | |
| 7 | + { "domaine": "expocitetpro", "nom": "ExpoCité — Centre de foires & Pavillon Guy-Lafleur (Québec)" }, | |
| 8 | + { "domaine": "sag", "nom": "Salle André-Gagnon (La Pocatière)" }, | |
| 9 | + { "domaine": "tpropdc", "nom": "Palais des congrès de Montréal" } | |
| 10 | + ], | |
| 11 | + "exclure_lieux": [ | |
| 12 | + "restaurant le moliere", | |
| 13 | + "trattoria dell'arte", | |
| 14 | + "musee rodrigue" | |
| 15 | + ] | |
| 16 | +} | |
modified
docs/connecteurs/INDEX.md
+33 −32
@@ -1,8 +1,8 @@ | ||
| 1 | 1 | # Sorti-Ka — Connecteurs de sources d'événements |
| 2 | 2 | |
| 3 | −> Index généré le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` (rejouable : `python3 scripts/gen_connector_docs.py`). Croise `data/sources.json`, l'introspection de `sortika/connectors/*.py` et la base live `data/sortika.db`. | |
| 3 | +> Index généré le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` (rejouable : `python3 scripts/gen_connector_docs.py`). Croise `data/sources.json`, l'introspection de `sortika/connectors/*.py` et la base live `data/sortika.db`. | |
| 4 | 4 | |
| 5 | −**39 sources au registre** — 30 actives/prêtes, 9 abandonnées · **24986 événements en base** (dont 17695 actifs). | |
| 5 | +**40 sources au registre** — 31 actives/prêtes, 9 abandonnées · **25968 événements en base** (dont 18227 actifs). | |
| 6 | 6 | |
| 7 | 7 | ⚠️ **Attributions requises** : Ville de Montréal (CC BY 4.0) ; SIT Québec / Ministère du Tourisme et Ville de Laval (CC 4.0 — Données Québec). Détails dans chaque fiche, section « Licence / attribution ». |
| 8 | 8 | |
@@ -10,36 +10,37 @@ | ||
| 10 | 10 | |
| 11 | 11 | | Source | Type | Statut | Actifs | GPS | Prix | Heure | Artistes | Image | Salle | Dernier sync | |
| 12 | 12 | |---|---|---|---|---|---|---|---|---|---|---| |
| 13 | −| [SIT Québec — Ministère du Tourisme](sitq.md) | donnees-ouvertes | actif | 1020 | 97 % | 0 % | 0 % | 0 % | 0 % | 0 % | 63 % | 74 % | 2026-08-21 20:55 | | |
| 14 | −| [Ville de Montréal — Événements publics](montreal.md) | donnees-ouvertes | actif | 3567 | 99 % | 100 % | 99 % | 99 % | 0 % | 0 % | 100 % | 4 % | 2026-08-21 20:55 | | |
| 15 | −| [Le point de vente — billetterie québécoise](lepointdevente.md) | billetterie | actif | 1789 | 30 % | 93 % | 94 % | 0 % | 0 % | 1 % | 100 % | 99 % | 2026-08-21 20:54 | | |
| 16 | −| [Ville de Laval — Calendrier des activités](laval.md) | donnees-ouvertes | morte-a-la-source | 1 | 0 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 20:50 | | |
| 17 | −| [Ville de Sherbrooke — Calendrier des événements](sherbrooke.md) | municipal | actif | 114 | 0 % | 100 % | 86 % | 92 % | 0 % | 0 % | 99 % | 0 % | 2026-08-21 20:55 | | |
| 18 | −| [Ville de Longueuil — Événements (nouveau portail)](longueuil.md) | municipal | actif | 4 | 75 % | 0 % | 100 % | 50 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 20:54 | | |
| 19 | −| [Eventbrite — billetterie libre-service (Québec)](eventbrite.md) | billetterie | actif | 438 | 100 % | 89 % | 100 % | 100 % | 0 % | 0 % | 98 % | 100 % | 2026-08-21 20:50 | | |
| 20 | −| [Tourisme Cantons-de-l'Est — calendrier officiel (ATR Estrie)](cantonsdelest.md) | tourisme-regional | actif | 11 | 91 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 20:49 | | |
| 21 | −| [evenko — grands concerts et festivals](evenko.md) | promoteur | actif | 417 | 97 % | 0 % | 99 % | 0 % | 1 % | 99 % | 100 % | 100 % | 2026-08-21 20:49 | | |
| 22 | −| [Atuvu.ca — calendrier culturel](atuvu.md) | agregateur | actif | 224 | 82 % | 25 % | 46 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 20:49 | | |
| 23 | −| [La Vitrine culturelle](lavitrine.md) | billetterie | actif | 5069 | 69 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 20:53 | | |
| 24 | −| [Ville de Brossard — Calendrier des événements](brossard.md) | municipal | actif | 147 | 95 % | 0 % | 96 % | 0 % | 0 % | 0 % | 100 % | 95 % | 2026-08-21 20:49 | | |
| 25 | −| [Ticketmaster — Discovery API (Québec)](ticketmaster.md) | billetterie | actif | 360 | 100 % | 0 % | 96 % | 0 % | 4 % | 0 % | 90 % | 100 % | 2026-08-21 20:56 | | |
| 26 | −| [Bandsintown — dates de concerts par artiste](bandsintown.md) | agregateur | actif | 521 | 100 % | 1 % | 100 % | 0 % | 0 % | 100 % | 9 % | 100 % | 2026-08-21 20:49 | | |
| 27 | −| [Ville de Laval — calendrier vivant laval.ca](lavalweb.md) | municipal | actif | 462 | 75 % | 0 % | 98 % | 0 % | 0 % | 0 % | 0 % | 100 % | 2026-08-21 20:53 | | |
| 28 | −| [Tourisme Outaouais — calendrier des événements (ATR)](outaouais.md) | tourisme-regional | actif | 24 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 20:55 | | |
| 29 | −| [Tourisme Lanaudière — événements (ATR)](lanaudiere.md) | tourisme-regional | actif | 44 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 93 % | 0 % | 2026-08-21 20:50 | | |
| 30 | −| [Sorties Saguenay — portail événementiel de la Ville](saguenaysorties.md) | municipal | actif | 437 | 80 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 86 % | 2026-08-21 20:55 | | |
| 31 | −| [Tourisme Bas-Saint-Laurent — événements (ATR)](bassaintlaurent.md) | tourisme-regional | actif | 20 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 20:49 | | |
| 32 | −| [Québec animée — Ville de Québec](quebecanimee.md) | municipal | actif | 121 | 100 % | 100 % | 0 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 20:55 | | |
| 33 | −| [Place des Arts — calendrier multi-salles](placedesarts.md) | salle-de-spectacle | actif | 347 | 94 % | 73 % | 100 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 20:55 | | |
| 34 | −| [LHJMQ — matchs des équipes québécoises](lhjmq.md) | sport | actif | 421 | 99 % | 0 % | 100 % | 0 % | 0 % | 0 % | 0 % | 100 % | 2026-08-21 20:54 | | |
| 35 | −| [Salles de spectacle — moteur générique JSON-LD Event](sallesjsonld.md) | salle-de-spectacle | actif | 278 | 100 % | 97 % | 100 % | 47 % | 1 % | 0 % | 3 % | 100 % | 2026-08-21 20:55 | | |
| 36 | −| [Tourisme Gaspésie — événements (ATR)](gaspesie.md) | tourisme-regional | actif | 10 | 90 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 21:08 | | |
| 37 | −| [Tuxedo Billet — billetterie québécoise multi-tenants](tuxedobillet.md) | billetterie | actif | 252 | 90 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 21:44 | | |
| 38 | −| [Tourisme Montérégie — événements (ATR)](monteregie.md) | tourisme-regional | actif | 28 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 96 % | 0 % | 2026-08-21 21:11 | | |
| 39 | −| [Tourisme Centre-du-Québec — événements (ATR)](centreduquebec.md) | tourisme-regional | actif | 9 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 21:09 | | |
| 40 | −| [Tourisme Chaudière-Appalaches — festivals et événements (ATR)](chaudiereappalaches.md) | tourisme-regional | actif | 28 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-21 21:09 | | |
| 41 | −| [TicketAcces.net — billetterie régionale québécoise](ticketacces.md) | billetterie | actif | 1320 | 73 % | 6 % | 100 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-21 21:40 | | |
| 42 | −| [Réseau Ovation — billetterie québécoise multi-salles](ovation.md) | billetterie | actif | 212 | 100 % | 0 % | 100 % | 0 % | 0 % | 94 % | 100 % | 100 % | 2026-08-21 21:46 | | |
| 13 | +| [SIT Québec — Ministère du Tourisme](sitq.md) | donnees-ouvertes | actif | 1014 | 97 % | 0 % | 0 % | 0 % | 0 % | 0 % | 63 % | 74 % | 2026-08-22 22:28 | | |
| 14 | +| [Ville de Montréal — Événements publics](montreal.md) | donnees-ouvertes | actif | 3522 | 99 % | 100 % | 99 % | 99 % | 0 % | 0 % | 100 % | 4 % | 2026-08-22 22:27 | | |
| 15 | +| [Le point de vente — billetterie québécoise](lepointdevente.md) | billetterie | actif | 1790 | 30 % | 92 % | 93 % | 0 % | 0 % | 1 % | 100 % | 99 % | 2026-08-22 22:27 | | |
| 16 | +| [Ville de Laval — Calendrier des activités](laval.md) | donnees-ouvertes | morte-a-la-source | 1 | 0 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:23 | | |
| 17 | +| [Ville de Sherbrooke — Calendrier des événements](sherbrooke.md) | municipal | actif | 109 | 0 % | 100 % | 85 % | 92 % | 0 % | 0 % | 99 % | 0 % | 2026-08-22 22:28 | | |
| 18 | +| [Ville de Longueuil — Événements (nouveau portail)](longueuil.md) | municipal | actif | 4 | 75 % | 0 % | 100 % | 50 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:27 | | |
| 19 | +| [Eventbrite — billetterie libre-service (Québec)](eventbrite.md) | billetterie | actif | 435 | 100 % | 88 % | 100 % | 100 % | 0 % | 0 % | 98 % | 100 % | 2026-08-22 22:23 | | |
| 20 | +| [Tourisme Cantons-de-l'Est — calendrier officiel (ATR Estrie)](cantonsdelest.md) | tourisme-regional | actif | 11 | 82 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:22 | | |
| 21 | +| [evenko — grands concerts et festivals](evenko.md) | promoteur | actif | 413 | 97 % | 0 % | 99 % | 0 % | 1 % | 99 % | 100 % | 100 % | 2026-08-22 22:22 | | |
| 22 | +| [Atuvu.ca — calendrier culturel](atuvu.md) | agregateur | actif | 216 | 82 % | 23 % | 46 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-22 22:22 | | |
| 23 | +| [La Vitrine culturelle](lavitrine.md) | billetterie | actif | 5039 | 69 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-22 22:26 | | |
| 24 | +| [Ville de Brossard — Calendrier des événements](brossard.md) | municipal | actif | 146 | 95 % | 0 % | 96 % | 0 % | 0 % | 0 % | 100 % | 95 % | 2026-08-22 22:22 | | |
| 25 | +| [Ticketmaster — Discovery API (Québec)](ticketmaster.md) | billetterie | actif | 359 | 100 % | 0 % | 96 % | 0 % | 4 % | 0 % | 89 % | 100 % | 2026-08-22 22:29 | | |
| 26 | +| [Bandsintown — dates de concerts par artiste](bandsintown.md) | agregateur | actif | 519 | 100 % | 1 % | 100 % | 0 % | 0 % | 100 % | 8 % | 100 % | 2026-08-22 22:22 | | |
| 27 | +| [Ville de Laval — calendrier vivant laval.ca](lavalweb.md) | municipal | actif | 443 | 75 % | 0 % | 98 % | 0 % | 0 % | 0 % | 0 % | 100 % | 2026-08-22 22:26 | | |
| 28 | +| [Tourisme Outaouais — calendrier des événements (ATR)](outaouais.md) | tourisme-regional | actif | 24 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:27 | | |
| 29 | +| [Tourisme Lanaudière — événements (ATR)](lanaudiere.md) | tourisme-regional | actif | 44 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 93 % | 0 % | 2026-08-22 22:23 | | |
| 30 | +| [Sorties Saguenay — portail événementiel de la Ville](saguenaysorties.md) | municipal | actif | 438 | 80 % | 0 % | 100 % | 0 % | 0 % | 0 % | 100 % | 86 % | 2026-08-22 22:28 | | |
| 31 | +| [Tourisme Bas-Saint-Laurent — événements (ATR)](bassaintlaurent.md) | tourisme-regional | actif | 20 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:22 | | |
| 32 | +| [Québec animée — Ville de Québec](quebecanimee.md) | municipal | actif | 102 | 100 % | 100 % | 0 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-22 22:27 | | |
| 33 | +| [Place des Arts — calendrier multi-salles](placedesarts.md) | salle-de-spectacle | actif | 346 | 94 % | 73 % | 100 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-22 22:27 | | |
| 34 | +| [LHJMQ — matchs des équipes québécoises](lhjmq.md) | sport | actif | 417 | 99 % | 0 % | 100 % | 0 % | 0 % | 0 % | 0 % | 100 % | 2026-08-22 22:27 | | |
| 35 | +| [Salles de spectacle — moteur générique JSON-LD Event](sallesjsonld.md) | salle-de-spectacle | actif | 308 | 100 % | 97 % | 100 % | 53 % | 1 % | 0 % | 13 % | 100 % | 2026-08-22 22:59 | | |
| 36 | +| [Tourisme Gaspésie — événements (ATR)](gaspesie.md) | tourisme-regional | actif | 10 | 90 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:23 | | |
| 37 | +| [Tuxedo Billet — billetterie québécoise multi-tenants](tuxedobillet.md) | billetterie | actif | 442 | 44 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 100 % | 2026-08-22 22:29 | | |
| 38 | +| [Tourisme Montérégie — événements (ATR)](monteregie.md) | tourisme-regional | actif | 28 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 96 % | 0 % | 2026-08-22 22:27 | | |
| 39 | +| [Tourisme Centre-du-Québec — événements (ATR)](centreduquebec.md) | tourisme-regional | actif | 9 | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:22 | | |
| 40 | +| [Tourisme Chaudière-Appalaches — festivals et événements (ATR)](chaudiereappalaches.md) | tourisme-regional | actif | 28 | 100 % | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 2026-08-22 22:22 | | |
| 41 | +| [TicketAcces.net — billetterie régionale québécoise](ticketacces.md) | billetterie | actif | 1318 | 74 % | 21 % | 100 % | 0 % | 0 % | 0 % | 99 % | 100 % | 2026-08-22 22:28 | | |
| 42 | +| [Réseau Ovation — billetterie québécoise multi-salles](ovation.md) | billetterie | actif | 311 | 100 % | 0 % | 100 % | 0 % | 0 % | 90 % | 100 % | 100 % | 2026-08-22 22:27 | | |
| 43 | +| [Ticketpro — billetterie canadienne (tenants Québec)](ticketpro.md) | billetterie | actif | 361 | 99 % | 0 % | 100 % | 0 % | 0 % | 78 % | 100 % | 100 % | 2026-08-22 22:57 | | |
| 43 | 44 | |
| 44 | 45 | ## Sources abandonnées |
| 45 | 46 | |
modified
docs/connecteurs/atuvu.md
+28 −28
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Atuvu.ca — calendrier culturel (`atuvu`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `agregateur` · Connecteur : `sortika/connectors/atuvu.py` |
| 6 | 6 | |
@@ -38,30 +38,30 @@ | ||
| 38 | 38 | |
| 39 | 39 | ## Champs récupérés → schéma |
| 40 | 40 | |
| 41 | −Complétude mesurée sur les **224 événements actifs** de la source ; exemples tirés d'un événement réel (`atuvu:une-femme-denfer-2026-08-21`). | |
| 41 | +Complétude mesurée sur les **216 événements actifs** de la source ; exemples tirés d'un événement réel (`atuvu:on-daaaaance-2026-08-22`). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 44 | 44 | |---|---|---|---| |
| 45 | −| `title` — Titre | titre de l'événement | 100 % | Une femme d'enfer | | |
| 45 | +| `title` — Titre | titre de l'événement | 100 % | On Daaaaance | | |
| 46 | 46 | | `description` — Description | texte descriptif (source ou fiche détail) | 0 % | ∅ | |
| 47 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://atuvu.ca/billets-spectacle/une-femme-denfer | | |
| 47 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://atuvu.ca/billets-spectacle/on-daaaaance | | |
| 48 | 48 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["musique", "arts-scene"] | |
| 49 | −| `venue` — Salle (venue) | nom du lieu | 100 % | La Comédie de Montréal | | |
| 49 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Maison Mère Baie-Saint-Paul | | |
| 50 | 50 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 51 | −| `city` — Ville | municipalité | 98 % | Montréal | | |
| 52 | −| `region` — Région | région administrative | 96 % | Montréal | | |
| 53 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 82 % | 45.518607, -73.558419 | | |
| 54 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 55 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 56 | −| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 46 % | 20:00 | | |
| 51 | +| `city` — Ville | municipalité | 98 % | Baie-Saint-Paul | | |
| 52 | +| `region` — Région | région administrative | 96 % | Capitale-Nationale | | |
| 53 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 82 % | 47.4384969, -70.5066321 | | |
| 54 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 55 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 56 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 46 % | 11:30 | | |
| 57 | 57 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 58 | 58 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 59 | −| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 19 % | 0 | | |
| 60 | −| `price_min` — Prix min | tarif minimal réel ($) | 25 % | 35.0 | | |
| 61 | −| `price_label` — Libellé prix | étiquette tarifaire affichable | 19 % | 35.00 $ (prix régulier atuvu.ca) | | |
| 59 | +| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 18 % | ∅ | | |
| 60 | +| `price_min` — Prix min | tarif minimal réel ($) | 23 % | 0.0 | | |
| 61 | +| `price_label` — Libellé prix | étiquette tarifaire affichable | 18 % | ∅ | | |
| 62 | 62 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 63 | 63 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 64 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://atuvu.ca/uploads/images/2026/06/femme-denfer.jpg | | |
| 64 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://atuvu.ca/uploads/images/2026/07/on-daaaaance.jpg | | |
| 65 | 65 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
@@ -76,19 +76,19 @@ Complétude mesurée sur les **224 événements actifs** de la source ; exemples | ||
| 76 | 76 | |
| 77 | 77 | ## Volumétrie & complétude live |
| 78 | 78 | |
| 79 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 80 | − | |
| 81 | −- **Événements en base** : 249 (dont **224 actifs**) | |
| 82 | −- **GPS** : 183/224 actifs (82 %) | |
| 83 | −- **Prix** : 55/224 actifs (25 %) | |
| 84 | −- **Heure (start_time)** : 103/224 actifs (46 %) | |
| 85 | −- **Heure de fin** : 0/224 actifs (0 %) | |
| 86 | −- **Statut (annulé/reporté/complet)** : 0/224 actifs (0 %) | |
| 87 | −- **Artistes** : 0/224 actifs (0 %) | |
| 88 | −- **Image** : 224/224 actifs (100 %) | |
| 89 | −- **Salle (venue)** : 224/224 actifs (100 %) | |
| 90 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 253, +0 ajoutés, ~2 mis à jour, -0 retirés | |
| 91 | −- **Syncs enregistrés** (sync_log) : 98 | |
| 79 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 80 | + | |
| 81 | +- **Événements en base** : 249 (dont **216 actifs**) | |
| 82 | +- **GPS** : 177/216 actifs (82 %) | |
| 83 | +- **Prix** : 50/216 actifs (23 %) | |
| 84 | +- **Heure (start_time)** : 100/216 actifs (46 %) | |
| 85 | +- **Heure de fin** : 0/216 actifs (0 %) | |
| 86 | +- **Statut (annulé/reporté/complet)** : 0/216 actifs (0 %) | |
| 87 | +- **Artistes** : 0/216 actifs (0 %) | |
| 88 | +- **Image** : 216/216 actifs (100 %) | |
| 89 | +- **Salle (venue)** : 216/216 actifs (100 %) | |
| 90 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 253, +0 ajoutés, ~2 mis à jour, -0 retirés | |
| 91 | +- **Syncs enregistrés** (sync_log) : 119 | |
| 92 | 92 | |
| 93 | 93 | ## Erreurs & dépannage |
| 94 | 94 | |
modified
docs/connecteurs/bandsintown.md
+16 −16
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Bandsintown — dates de concerts par artiste (`bandsintown`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `agregateur` · Connecteur : `sortika/connectors/bandsintown.py` |
| 6 | 6 | |
@@ -43,7 +43,7 @@ | ||
| 43 | 43 | |
| 44 | 44 | ## Champs récupérés → schéma |
| 45 | 45 | |
| 46 | −Complétude mesurée sur les **521 événements actifs** de la source ; exemples tirés d'un événement réel (`bandsintown:108801594`). | |
| 46 | +Complétude mesurée sur les **519 événements actifs** de la source ; exemples tirés d'un événement réel (`bandsintown:108801594`). | |
| 47 | 47 | |
| 48 | 48 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 49 | 49 | |---|---|---|---| |
@@ -66,7 +66,7 @@ Complétude mesurée sur les **521 événements actifs** de la source ; exemples | ||
| 66 | 66 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 67 | 67 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 100 % | ["Fine Food Market"] | |
| 68 | 68 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 69 | −| `image` — Image | visuel (og:image ou média source) | 9 % | https://photos.bandsintown.com/large/25970249.jpeg | | |
| 69 | +| `image` — Image | visuel (og:image ou média source) | 8 % | https://photos.bandsintown.com/large/25970249.jpeg | | |
| 70 | 70 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 71 | 71 | |
| 72 | 72 | ## Fréquence & budgets |
@@ -82,19 +82,19 @@ Complétude mesurée sur les **521 événements actifs** de la source ; exemples | ||
| 82 | 82 | |
| 83 | 83 | ## Volumétrie & complétude live |
| 84 | 84 | |
| 85 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 86 | − | |
| 87 | −- **Événements en base** : 529 (dont **521 actifs**) | |
| 88 | −- **GPS** : 521/521 actifs (100 %) | |
| 89 | −- **Prix** : 5/521 actifs (1 %) | |
| 90 | −- **Heure (start_time)** : 520/521 actifs (100 %) | |
| 91 | −- **Heure de fin** : 0/521 actifs (0 %) | |
| 92 | −- **Statut (annulé/reporté/complet)** : 0/521 actifs (0 %) | |
| 93 | −- **Artistes** : 521/521 actifs (100 %) | |
| 94 | −- **Image** : 48/521 actifs (9 %) | |
| 95 | −- **Salle (venue)** : 521/521 actifs (100 %) | |
| 96 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 521, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 97 | −- **Syncs enregistrés** (sync_log) : 83 | |
| 85 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 86 | + | |
| 87 | +- **Événements en base** : 532 (dont **519 actifs**) | |
| 88 | +- **GPS** : 519/519 actifs (100 %) | |
| 89 | +- **Prix** : 5/519 actifs (1 %) | |
| 90 | +- **Heure (start_time)** : 518/519 actifs (100 %) | |
| 91 | +- **Heure de fin** : 0/519 actifs (0 %) | |
| 92 | +- **Statut (annulé/reporté/complet)** : 0/519 actifs (0 %) | |
| 93 | +- **Artistes** : 519/519 actifs (100 %) | |
| 94 | +- **Image** : 44/519 actifs (8 %) | |
| 95 | +- **Salle (venue)** : 519/519 actifs (100 %) | |
| 96 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 522, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 97 | +- **Syncs enregistrés** (sync_log) : 104 | |
| 98 | 98 | |
| 99 | 99 | ## Erreurs & dépannage |
| 100 | 100 | |
modified
docs/connecteurs/bassaintlaurent.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Bas-Saint-Laurent — événements (ATR) (`bassaintlaurent`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/bassaintlaurent.py` |
| 6 | 6 | |
@@ -78,7 +78,7 @@ Complétude mesurée sur les **20 événements actifs** de la source ; exemples | ||
| 78 | 78 | |
| 79 | 79 | ## Volumétrie & complétude live |
| 80 | 80 | |
| 81 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 81 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 82 | 82 | |
| 83 | 83 | - **Événements en base** : 27 (dont **20 actifs**) |
| 84 | 84 | - **GPS** : 20/20 actifs (100 %) |
@@ -89,8 +89,8 @@ Complétude mesurée sur les **20 événements actifs** de la source ; exemples | ||
| 89 | 89 | - **Artistes** : 0/20 actifs (0 %) |
| 90 | 90 | - **Image** : 20/20 actifs (100 %) |
| 91 | 91 | - **Salle (venue)** : 0/20 actifs (0 %) |
| 92 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 27, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 93 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 92 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 27, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 93 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 94 | 94 | |
| 95 | 95 | ## Erreurs & dépannage |
| 96 | 96 | |
modified
docs/connecteurs/brossard.md
+15 −15
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Brossard — Calendrier des événements (`brossard`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/brossard.py` |
| 6 | 6 | |
@@ -43,7 +43,7 @@ | ||
| 43 | 43 | |
| 44 | 44 | ## Champs récupérés → schéma |
| 45 | 45 | |
| 46 | −Complétude mesurée sur les **147 événements actifs** de la source ; exemples tirés d'un événement réel (`brossard:37838`). | |
| 46 | +Complétude mesurée sur les **146 événements actifs** de la source ; exemples tirés d'un événement réel (`brossard:37838`). | |
| 47 | 47 | |
| 48 | 48 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 49 | 49 | |---|---|---|---| |
@@ -81,19 +81,19 @@ Complétude mesurée sur les **147 événements actifs** de la source ; exemples | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 85 | − | |
| 86 | −- **Événements en base** : 264 (dont **147 actifs**) | |
| 87 | −- **GPS** : 139/147 actifs (95 %) | |
| 88 | −- **Prix** : 0/147 actifs (0 %) | |
| 89 | −- **Heure (start_time)** : 141/147 actifs (96 %) | |
| 90 | −- **Heure de fin** : 0/147 actifs (0 %) | |
| 91 | −- **Statut (annulé/reporté/complet)** : 0/147 actifs (0 %) | |
| 92 | −- **Artistes** : 0/147 actifs (0 %) | |
| 93 | −- **Image** : 147/147 actifs (100 %) | |
| 94 | −- **Salle (venue)** : 139/147 actifs (95 %) | |
| 95 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 264, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 83 | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | + | |
| 86 | +- **Événements en base** : 264 (dont **146 actifs**) | |
| 87 | +- **GPS** : 138/146 actifs (95 %) | |
| 88 | +- **Prix** : 0/146 actifs (0 %) | |
| 89 | +- **Heure (start_time)** : 140/146 actifs (96 %) | |
| 90 | +- **Heure de fin** : 0/146 actifs (0 %) | |
| 91 | +- **Statut (annulé/reporté/complet)** : 0/146 actifs (0 %) | |
| 92 | +- **Artistes** : 0/146 actifs (0 %) | |
| 93 | +- **Image** : 146/146 actifs (100 %) | |
| 94 | +- **Salle (venue)** : 138/146 actifs (95 %) | |
| 95 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 264, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 104 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
modified
docs/connecteurs/cantonsdelest.md
+16 −16
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Cantons-de-l'Est — calendrier officiel (ATR Estrie) (`cantonsdelest`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/cantonsdelest.py` |
| 6 | 6 | |
@@ -41,20 +41,20 @@ | ||
| 41 | 41 | |
| 42 | 42 | ## Champs récupérés → schéma |
| 43 | 43 | |
| 44 | −Complétude mesurée sur les **11 événements actifs** de la source ; exemples tirés d'un événement réel (`cantonsdelest:7646-2584`). | |
| 44 | +Complétude mesurée sur les **11 événements actifs** de la source ; exemples tirés d'un événement réel (`cantonsdelest:10138-4642`). | |
| 45 | 45 | |
| 46 | 46 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 47 | 47 | |---|---|---|---| |
| 48 | −| `title` — Titre | titre de l'événement | 100 % | NanoFest | | |
| 49 | −| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | Le NanoFest présente de la musique, de la poésie, du conte, de la danse, du cirque et de l’art v… | | |
| 50 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.cantonsdelest.com/evenements/7646/nanofest/2584 | | |
| 51 | −| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | | |
| 48 | +| `title` — Titre | titre de l'événement | 100 % | Festival Malvina | | |
| 49 | +| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | Pour sa première édition, le Festival Malvina réunit artistes, chercheurs et spécialistes des te… | | |
| 50 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.cantonsdelest.com/evenements/10138/festival-malvina/4642 | | |
| 51 | +| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["festival"] | | |
| 52 | 52 | | `venue` — Salle (venue) | nom du lieu | 0 % | ∅ | |
| 53 | −| `address` — Adresse | adresse civique | 82 % | ∅ | | |
| 54 | −| `city` — Ville | municipalité | 100 % | Bury | | |
| 53 | +| `address` — Adresse | adresse civique | 82 % | 309 Chemin de Malvina | | |
| 54 | +| `city` — Ville | municipalité | 100 % | Saint-Malo | | |
| 55 | 55 | | `region` — Région | région administrative | 100 % | Estrie | |
| 56 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 91 % | 45.510797, -71.442105 | | |
| 57 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 56 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 82 % | 45.186432, -71.447036 | | |
| 57 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 58 | 58 | | `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-23 | |
| 59 | 59 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 60 | 60 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **11 événements actifs** de la source ; exemples | ||
| 64 | 64 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 65 | 65 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 66 | 66 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 67 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://mto.media.tourinsoft.eu/upload/IMG-0065.png?width=1191&height=670 | | |
| 67 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://mto.media.tourinsoft.eu/upload/Site-du-ccdMalvina-en-visite.jpg?width=1191&height=670 | | |
| 68 | 68 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 69 | 69 | |
| 70 | 70 | ## Fréquence & budgets |
@@ -79,10 +79,10 @@ Complétude mesurée sur les **11 événements actifs** de la source ; exemples | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 82 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 83 | 83 | |
| 84 | −- **Événements en base** : 47 (dont **11 actifs**) | |
| 85 | −- **GPS** : 10/11 actifs (91 %) | |
| 84 | +- **Événements en base** : 59 (dont **11 actifs**) | |
| 85 | +- **GPS** : 9/11 actifs (82 %) | |
| 86 | 86 | - **Prix** : 0/11 actifs (0 %) |
| 87 | 87 | - **Heure (start_time)** : 0/11 actifs (0 %) |
| 88 | 88 | - **Heure de fin** : 0/11 actifs (0 %) |
@@ -90,8 +90,8 @@ Complétude mesurée sur les **11 événements actifs** de la source ; exemples | ||
| 90 | 90 | - **Artistes** : 0/11 actifs (0 %) |
| 91 | 91 | - **Image** : 11/11 actifs (100 %) |
| 92 | 92 | - **Salle (venue)** : 0/11 actifs (0 %) |
| 93 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 13, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | −- **Syncs enregistrés** (sync_log) : 80 | |
| 93 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 13, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | +- **Syncs enregistrés** (sync_log) : 101 | |
| 95 | 95 | |
| 96 | 96 | ## Erreurs & dépannage |
| 97 | 97 | |
modified
docs/connecteurs/centreduquebec.md
+8 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Centre-du-Québec — événements (ATR) (`centreduquebec`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/centreduquebec.py` |
| 6 | 6 | |
@@ -79,7 +79,7 @@ Complétude mesurée sur les **9 événements actifs** de la source ; exemples t | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 82 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Événements en base** : 9 (dont **9 actifs**) |
| 85 | 85 | - **GPS** : 0/9 actifs (0 %) |
@@ -90,8 +90,8 @@ Complétude mesurée sur les **9 événements actifs** de la source ; exemples t | ||
| 90 | 90 | - **Artistes** : 0/9 actifs (0 %) |
| 91 | 91 | - **Image** : 9/9 actifs (100 %) |
| 92 | 92 | - **Salle (venue)** : 0/9 actifs (0 %) |
| 93 | −- **Dernier sync** : 2026-08-21 21:09 — fetched 9, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | −- **Syncs enregistrés** (sync_log) : 3 | |
| 93 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 9, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | +- **Syncs enregistrés** (sync_log) : 24 | |
| 95 | 95 | |
| 96 | 96 | ## Erreurs & dépannage |
| 97 | 97 | |
@@ -108,3 +108,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 108 | 108 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 109 | 109 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 110 | 110 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 111 | + | |
| 112 | +Commits touchant `sortika/connectors/centreduquebec.py` : | |
| 113 | + | |
| 114 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/chaudiereappalaches.md
+8 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Chaudière-Appalaches — festivals et événements (ATR) (`chaudiereappalaches`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/chaudiereappalaches.py` |
| 6 | 6 | |
@@ -81,7 +81,7 @@ Complétude mesurée sur les **28 événements actifs** de la source ; exemples | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | 85 | |
| 86 | 86 | - **Événements en base** : 28 (dont **28 actifs**) |
| 87 | 87 | - **GPS** : 28/28 actifs (100 %) |
@@ -92,8 +92,8 @@ Complétude mesurée sur les **28 événements actifs** de la source ; exemples | ||
| 92 | 92 | - **Artistes** : 0/28 actifs (0 %) |
| 93 | 93 | - **Image** : 28/28 actifs (100 %) |
| 94 | 94 | - **Salle (venue)** : 0/28 actifs (0 %) |
| 95 | −- **Dernier sync** : 2026-08-21 21:09 — fetched 28, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 3 | |
| 95 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 28, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 24 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
@@ -110,3 +110,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 110 | 110 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 111 | 111 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 112 | 112 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 113 | + | |
| 114 | +Commits touchant `sortika/connectors/chaudiereappalaches.py` : | |
| 115 | + | |
| 116 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/clubs-pros.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Clubs professionnels (CF Montréal, Alouettes, Rocket, Victoire…) (`clubs-pros`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `sport` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/evenko.md
+15 −15
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # evenko — grands concerts et festivals (`evenko`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `promoteur` · Connecteur : `sortika/connectors/evenko.py` |
| 6 | 6 | |
@@ -40,7 +40,7 @@ | ||
| 40 | 40 | |
| 41 | 41 | ## Champs récupérés → schéma |
| 42 | 42 | |
| 43 | −Complétude mesurée sur les **417 événements actifs** de la source ; exemples tirés d'un événement réel (`evenko:e008639`). | |
| 43 | +Complétude mesurée sur les **413 événements actifs** de la source ; exemples tirés d'un événement réel (`evenko:e008639`). | |
| 44 | 44 | |
| 45 | 45 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 46 | 46 | |---|---|---|---| |
@@ -73,19 +73,19 @@ Complétude mesurée sur les **417 événements actifs** de la source ; exemples | ||
| 73 | 73 | |
| 74 | 74 | ## Volumétrie & complétude live |
| 75 | 75 | |
| 76 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 77 | − | |
| 78 | −- **Événements en base** : 426 (dont **417 actifs**) | |
| 79 | −- **GPS** : 404/417 actifs (97 %) | |
| 80 | −- **Prix** : 0/417 actifs (0 %) | |
| 81 | −- **Heure (start_time)** : 414/417 actifs (99 %) | |
| 82 | −- **Heure de fin** : 0/417 actifs (0 %) | |
| 83 | −- **Statut (annulé/reporté/complet)** : 4/417 actifs (1 %) | |
| 84 | −- **Artistes** : 414/417 actifs (99 %) | |
| 85 | −- **Image** : 417/417 actifs (100 %) | |
| 86 | −- **Salle (venue)** : 417/417 actifs (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-21 20:49 — fetched 417, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 88 | −- **Syncs enregistrés** (sync_log) : 99 | |
| 76 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 77 | + | |
| 78 | +- **Événements en base** : 426 (dont **413 actifs**) | |
| 79 | +- **GPS** : 400/413 actifs (97 %) | |
| 80 | +- **Prix** : 0/413 actifs (0 %) | |
| 81 | +- **Heure (start_time)** : 410/413 actifs (99 %) | |
| 82 | +- **Heure de fin** : 0/413 actifs (0 %) | |
| 83 | +- **Statut (annulé/reporté/complet)** : 4/413 actifs (1 %) | |
| 84 | +- **Artistes** : 410/413 actifs (99 %) | |
| 85 | +- **Image** : 413/413 actifs (100 %) | |
| 86 | +- **Salle (venue)** : 413/413 actifs (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 22:22 — fetched 413, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 88 | +- **Syncs enregistrés** (sync_log) : 120 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/eventbrite.md
+29 −29
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Eventbrite — billetterie libre-service (Québec) (`eventbrite`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/eventbrite.py` |
| 6 | 6 | |
@@ -46,30 +46,30 @@ | ||
| 46 | 46 | |
| 47 | 47 | ## Champs récupérés → schéma |
| 48 | 48 | |
| 49 | −Complétude mesurée sur les **438 événements actifs** de la source ; exemples tirés d'un événement réel (`eventbrite:1997881258626`). | |
| 49 | +Complétude mesurée sur les **435 événements actifs** de la source ; exemples tirés d'un événement réel (`eventbrite:1998507569940`). | |
| 50 | 50 | |
| 51 | 51 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 52 | 52 | |---|---|---|---| |
| 53 | −| `title` — Titre | titre de l'événement | 100 % | SANTA RM - CELEBRA 20 AÑOS / MONTREAL, CANADA | | |
| 54 | −| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | SANTA RM CELEBRA POR PRIMERA VEZ 20 AÑOS DE TRAYECTORIA EN MONTREAL DISFRUTA EN VIVO TODOS SUS G… | | |
| 55 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.eventbrite.ca/e/santa-rm-celebra-20-anos-montreal-canada-tickets-1997881258626 | | |
| 53 | +| `title` — Titre | titre de l'événement | 100 % | 5 à Set: Cleo Sol's "Gold" Album Listening Party | | |
| 54 | +| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | Join us at Velora Café for a listening party of Cleo Sol's album: "Gold" on vinyl. | | |
| 55 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.eventbrite.com/e/5-a-set-cleo-sols-gold-album-listening-party-tickets-1998507569940 | | |
| 56 | 56 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | |
| 57 | −| `venue` — Salle (venue) | nom du lieu | 100 % | 60 Rue Saint-Jacques | | |
| 58 | −| `address` — Adresse | adresse civique | 100 % | 60 Rue Saint-Jacques | | |
| 57 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Velora Cafe Patisserie | | |
| 58 | +| `address` — Adresse | adresse civique | 100 % | 3009 Rue Notre-Dame Ouest | | |
| 59 | 59 | | `city` — Ville | municipalité | 100 % | Montréal | |
| 60 | 60 | | `region` — Région | région administrative | 99 % | Montréal | |
| 61 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 45.505461, -73.556948 | | |
| 62 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-10-03 | | |
| 63 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-10-03 | | |
| 61 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 45.481172, -73.578329 | | |
| 62 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-25 | | |
| 63 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-25 | | |
| 64 | 64 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 19:00 | |
| 65 | −| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 100 % | 22:30 | | |
| 65 | +| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 100 % | 21:30 | | |
| 66 | 66 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 67 | −| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 89 % | 0 | | |
| 68 | −| `price_min` — Prix min | tarif minimal réel ($) | 87 % | 60.03 | | |
| 69 | −| `price_label` — Libellé prix | étiquette tarifaire affichable | 89 % | 60.03 $ à 106.88 $ (Eventbrite) | | |
| 67 | +| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 88 % | 0 | | |
| 68 | +| `price_min` — Prix min | tarif minimal réel ($) | 88 % | 11.44 | | |
| 69 | +| `price_label` — Libellé prix | étiquette tarifaire affichable | 88 % | 11.44 $ (Eventbrite) | | |
| 70 | 70 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 71 | −| `organizer` — Organisateur | promoteur / organisme | 96 % | DIEGO MX | | |
| 72 | −| `image` — Image | visuel (og:image ou média source) | 98 % | https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F1191383521%2F2637625526451%2F1%2For… | | |
| 71 | +| `organizer` — Organisateur | promoteur / organisme | 97 % | 5 à Set | | |
| 72 | +| `image` — Image | visuel (og:image ou média source) | 98 % | https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F1191546814%2F2985293405298%2F1%2For… | | |
| 73 | 73 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 74 | 74 | |
| 75 | 75 | ## Fréquence & budgets |
@@ -84,19 +84,19 @@ Complétude mesurée sur les **438 événements actifs** de la source ; exemples | ||
| 84 | 84 | |
| 85 | 85 | ## Volumétrie & complétude live |
| 86 | 86 | |
| 87 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 88 | − | |
| 89 | −- **Événements en base** : 527 (dont **438 actifs**) | |
| 90 | −- **GPS** : 438/438 actifs (100 %) | |
| 91 | −- **Prix** : 388/438 actifs (89 %) | |
| 92 | −- **Heure (start_time)** : 438/438 actifs (100 %) | |
| 93 | −- **Heure de fin** : 438/438 actifs (100 %) | |
| 94 | −- **Statut (annulé/reporté/complet)** : 0/438 actifs (0 %) | |
| 95 | −- **Artistes** : 0/438 actifs (0 %) | |
| 96 | −- **Image** : 428/438 actifs (98 %) | |
| 97 | −- **Salle (venue)** : 438/438 actifs (100 %) | |
| 98 | −- **Dernier sync** : 2026-08-21 20:50 — fetched 427, +5 ajoutés, ~1 mis à jour, -2 retirés | |
| 99 | −- **Syncs enregistrés** (sync_log) : 81 | |
| 87 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 88 | + | |
| 89 | +- **Événements en base** : 570 (dont **435 actifs**) | |
| 90 | +- **GPS** : 435/435 actifs (100 %) | |
| 91 | +- **Prix** : 384/435 actifs (88 %) | |
| 92 | +- **Heure (start_time)** : 435/435 actifs (100 %) | |
| 93 | +- **Heure de fin** : 435/435 actifs (100 %) | |
| 94 | +- **Statut (annulé/reporté/complet)** : 0/435 actifs (0 %) | |
| 95 | +- **Artistes** : 0/435 actifs (0 %) | |
| 96 | +- **Image** : 426/435 actifs (98 %) | |
| 97 | +- **Salle (venue)** : 435/435 actifs (100 %) | |
| 98 | +- **Dernier sync** : 2026-08-22 22:23 — fetched 432, +3 ajoutés, ~0 mis à jour, -11 retirés | |
| 99 | +- **Syncs enregistrés** (sync_log) : 102 | |
| 100 | 100 | |
| 101 | 101 | ## Erreurs & dépannage |
| 102 | 102 | |
modified
docs/connecteurs/gaspesie.md
+8 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Gaspésie — événements (ATR) (`gaspesie`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/gaspesie.py` |
| 6 | 6 | |
@@ -83,7 +83,7 @@ Complétude mesurée sur les **10 événements actifs** de la source ; exemples | ||
| 83 | 83 | |
| 84 | 84 | ## Volumétrie & complétude live |
| 85 | 85 | |
| 86 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 86 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 87 | 87 | |
| 88 | 88 | - **Événements en base** : 26 (dont **10 actifs**) |
| 89 | 89 | - **GPS** : 9/10 actifs (90 %) |
@@ -94,8 +94,8 @@ Complétude mesurée sur les **10 événements actifs** de la source ; exemples | ||
| 94 | 94 | - **Artistes** : 0/10 actifs (0 %) |
| 95 | 95 | - **Image** : 10/10 actifs (100 %) |
| 96 | 96 | - **Salle (venue)** : 0/10 actifs (0 %) |
| 97 | −- **Dernier sync** : 2026-08-21 21:08 — fetched 26, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 98 | −- **Syncs enregistrés** (sync_log) : 4 | |
| 97 | +- **Dernier sync** : 2026-08-22 22:23 — fetched 26, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 98 | +- **Syncs enregistrés** (sync_log) : 25 | |
| 99 | 99 | |
| 100 | 100 | ## Erreurs & dépannage |
| 101 | 101 | |
@@ -112,3 +112,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 112 | 112 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 113 | 113 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 114 | 114 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 115 | + | |
| 116 | +Commits touchant `sortika/connectors/gaspesie.py` : | |
| 117 | + | |
| 118 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/gatineau.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Gatineau — Événements (`gatineau`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `municipal` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/lanaudiere.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Lanaudière — événements (ATR) (`lanaudiere`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/lanaudiere.py` |
| 6 | 6 | |
@@ -80,7 +80,7 @@ Complétude mesurée sur les **44 événements actifs** de la source ; exemples | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 83 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 84 | 84 | |
| 85 | 85 | - **Événements en base** : 81 (dont **44 actifs**) |
| 86 | 86 | - **GPS** : 0/44 actifs (0 %) |
@@ -91,8 +91,8 @@ Complétude mesurée sur les **44 événements actifs** de la source ; exemples | ||
| 91 | 91 | - **Artistes** : 0/44 actifs (0 %) |
| 92 | 92 | - **Image** : 41/44 actifs (93 %) |
| 93 | 93 | - **Salle (venue)** : 0/44 actifs (0 %) |
| 94 | −- **Dernier sync** : 2026-08-21 20:50 — fetched 81, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 95 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 94 | +- **Dernier sync** : 2026-08-22 22:23 — fetched 81, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 95 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 96 | 96 | |
| 97 | 97 | ## Erreurs & dépannage |
| 98 | 98 | |
modified
docs/connecteurs/laurentides.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Laurentides — événements (ATR) (`laurentides`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `tourisme-regional` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/laval.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Laval — Calendrier des activités (`laval`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : morte-a-la-source** · Type : `donnees-ouvertes` · Connecteur : `sortika/connectors/laval.py` |
| 6 | 6 | |
@@ -67,7 +67,7 @@ Complétude mesurée sur les **1 événements actifs** de la source ; exemples t | ||
| 67 | 67 | |
| 68 | 68 | ## Volumétrie & complétude live |
| 69 | 69 | |
| 70 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 70 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 71 | 71 | |
| 72 | 72 | - **Événements en base** : 277 (dont **1 actifs**) |
| 73 | 73 | - **GPS** : 0/1 actifs (0 %) |
@@ -78,8 +78,8 @@ Complétude mesurée sur les **1 événements actifs** de la source ; exemples t | ||
| 78 | 78 | - **Artistes** : 0/1 actifs (0 %) |
| 79 | 79 | - **Image** : 1/1 actifs (100 %) |
| 80 | 80 | - **Salle (venue)** : 0/1 actifs (0 %) |
| 81 | −- **Dernier sync** : 2026-08-21 20:50 — fetched 293, +0 ajoutés, ~32 mis à jour, -0 retirés | |
| 82 | −- **Syncs enregistrés** (sync_log) : 102 | |
| 81 | +- **Dernier sync** : 2026-08-22 22:23 — fetched 293, +0 ajoutés, ~32 mis à jour, -0 retirés | |
| 82 | +- **Syncs enregistrés** (sync_log) : 123 | |
| 83 | 83 | |
| 84 | 84 | ## Erreurs & dépannage |
| 85 | 85 | |
modified
docs/connecteurs/lavalweb.md
+16 −16
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Laval — calendrier vivant laval.ca (`lavalweb`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/lavalweb.py` |
| 6 | 6 | |
@@ -41,12 +41,12 @@ | ||
| 41 | 41 | |
| 42 | 42 | ## Champs récupérés → schéma |
| 43 | 43 | |
| 44 | −Complétude mesurée sur les **462 événements actifs** de la source ; exemples tirés d'un événement réel (`lavalweb:halloween-exposition-de-plantes-carnivores-et-dautres-etrangetes`). | |
| 44 | +Complétude mesurée sur les **443 événements actifs** de la source ; exemples tirés d'un événement réel (`lavalweb:halloween-exposition-de-plantes-carnivores-et-dautres-etrangetes`). | |
| 45 | 45 | |
| 46 | 46 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 47 | 47 | |---|---|---|---| |
| 48 | 48 | | `title` — Titre | titre de l'événement | 100 % | Halloween : exposition de plantes carnivores et d’autres étrangetés | |
| 49 | −| `description` — Description | texte descriptif (source ou fiche détail) | 48 % | ∅ | | |
| 49 | +| `description` — Description | texte descriptif (source ou fiche détail) | 49 % | ∅ | | |
| 50 | 50 | | `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.laval.ca/calendrier-activites/halloween-exposition-de-plantes-carnivores-et-dautres-… | |
| 51 | 51 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["exposition-musee"] | |
| 52 | 52 | | `venue` — Salle (venue) | nom du lieu | 100 % | Centre de la Nature | |
@@ -80,19 +80,19 @@ Complétude mesurée sur les **462 événements actifs** de la source ; exemples | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 84 | − | |
| 85 | −- **Événements en base** : 555 (dont **462 actifs**) | |
| 86 | −- **GPS** : 348/462 actifs (75 %) | |
| 87 | −- **Prix** : 0/462 actifs (0 %) | |
| 88 | −- **Heure (start_time)** : 453/462 actifs (98 %) | |
| 89 | −- **Heure de fin** : 0/462 actifs (0 %) | |
| 90 | −- **Statut (annulé/reporté/complet)** : 0/462 actifs (0 %) | |
| 91 | −- **Artistes** : 0/462 actifs (0 %) | |
| 92 | −- **Image** : 0/462 actifs (0 %) | |
| 93 | −- **Salle (venue)** : 462/462 actifs (100 %) | |
| 94 | −- **Dernier sync** : 2026-08-21 20:53 — fetched 461, +0 ajoutés, ~0 mis à jour, -3 retirés | |
| 95 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 83 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 84 | + | |
| 85 | +- **Événements en base** : 555 (dont **443 actifs**) | |
| 86 | +- **GPS** : 331/443 actifs (75 %) | |
| 87 | +- **Prix** : 0/443 actifs (0 %) | |
| 88 | +- **Heure (start_time)** : 434/443 actifs (98 %) | |
| 89 | +- **Heure de fin** : 0/443 actifs (0 %) | |
| 90 | +- **Statut (annulé/reporté/complet)** : 0/443 actifs (0 %) | |
| 91 | +- **Artistes** : 0/443 actifs (0 %) | |
| 92 | +- **Image** : 0/443 actifs (0 %) | |
| 93 | +- **Salle (venue)** : 443/443 actifs (100 %) | |
| 94 | +- **Dernier sync** : 2026-08-22 22:26 — fetched 441, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 95 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 96 | 96 | |
| 97 | 97 | ## Erreurs & dépannage |
| 98 | 98 | |
modified
docs/connecteurs/lavitrine.md
+25 −25
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # La Vitrine culturelle (`lavitrine`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/lavitrine.py` |
| 6 | 6 | |
@@ -43,21 +43,21 @@ | ||
| 43 | 43 | |
| 44 | 44 | ## Champs récupérés → schéma |
| 45 | 45 | |
| 46 | −Complétude mesurée sur les **5069 événements actifs** de la source ; exemples tirés d'un événement réel (`lavitrine:12490-2027-03-06`). | |
| 46 | +Complétude mesurée sur les **5039 événements actifs** de la source ; exemples tirés d'un événement réel (`lavitrine:38808-2027-03-19`). | |
| 47 | 47 | |
| 48 | 48 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 49 | 49 | |---|---|---|---| |
| 50 | −| `title` — Titre | titre de l'événement | 100 % | Les Tireux d'Roches | | |
| 51 | −| `description` — Description | texte descriptif (source ou fiche détail) | 99 % | Depuis 1998, Les Tireux d’Roches se sont affirmés comme des conteurs d’histoires et des artisans… | | |
| 52 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.lavitrine.com/fr/evenement/les-tireux-droches/12490 | | |
| 50 | +| `title` — Titre | titre de l'événement | 100 % | Guy Nantel - Bienveillant En rodage | | |
| 51 | +| `description` — Description | texte descriptif (source ou fiche détail) | 99 % | Alors que l’actualité regorge de sujets explosifs, d’opinions tranchées et de contradictions bie… | | |
| 52 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.lavitrine.com/fr/evenement/guy-nantel-bienveillant-en-rodage/38808 | | |
| 53 | 53 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | |
| 54 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Espace Mandeville | | |
| 54 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Théâtre Le Patriote | | |
| 55 | 55 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 56 | −| `city` — Ville | municipalité | 100 % | Drummondville | | |
| 57 | −| `region` — Région | région administrative | 100 % | Centre-du-Québec | | |
| 58 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 69 % | 45.883252, -72.489597 | | |
| 59 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2027-03-06 | | |
| 60 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2027-03-06 | | |
| 56 | +| `city` — Ville | municipalité | 100 % | Sainte-Agathe-des-Monts | | |
| 57 | +| `region` — Région | région administrative | 100 % | Laurentides | | |
| 58 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 69 % | 46.0308044, -74.284975 | | |
| 59 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2027-03-19 | | |
| 60 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2027-03-19 | | |
| 61 | 61 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 20:00 | |
| 62 | 62 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 63 | 63 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
@@ -66,7 +66,7 @@ Complétude mesurée sur les **5069 événements actifs** de la source ; exemple | ||
| 66 | 66 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 67 | 67 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 68 | 68 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 69 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://lvc-medias.lavitrine.com/83ac1924-a8fe-5cb3-9778-a11e5cc3757c.jpg | | |
| 69 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://lvc-medias.lavitrine.com/adfa7a36-cd01-5248-b4bf-ffada84d38e9.png | | |
| 70 | 70 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 71 | 71 | |
| 72 | 72 | ## Fréquence & budgets |
@@ -81,19 +81,19 @@ Complétude mesurée sur les **5069 événements actifs** de la source ; exemple | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 85 | − | |
| 86 | −- **Événements en base** : 5172 (dont **5069 actifs**) | |
| 87 | −- **GPS** : 3496/5069 actifs (69 %) | |
| 88 | −- **Prix** : 0/5069 actifs (0 %) | |
| 89 | −- **Heure (start_time)** : 5069/5069 actifs (100 %) | |
| 90 | −- **Heure de fin** : 0/5069 actifs (0 %) | |
| 91 | −- **Statut (annulé/reporté/complet)** : 0/5069 actifs (0 %) | |
| 92 | −- **Artistes** : 0/5069 actifs (0 %) | |
| 93 | −- **Image** : 5069/5069 actifs (100 %) | |
| 94 | −- **Salle (venue)** : 5067/5069 actifs (100 %) | |
| 95 | −- **Dernier sync** : 2026-08-21 20:53 — fetched 5120, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 93 | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | + | |
| 86 | +- **Événements en base** : 5173 (dont **5039 actifs**) | |
| 87 | +- **GPS** : 3473/5039 actifs (69 %) | |
| 88 | +- **Prix** : 0/5039 actifs (0 %) | |
| 89 | +- **Heure (start_time)** : 5039/5039 actifs (100 %) | |
| 90 | +- **Heure de fin** : 0/5039 actifs (0 %) | |
| 91 | +- **Statut (annulé/reporté/complet)** : 0/5039 actifs (0 %) | |
| 92 | +- **Artistes** : 0/5039 actifs (0 %) | |
| 93 | +- **Image** : 5039/5039 actifs (100 %) | |
| 94 | +- **Salle (venue)** : 5037/5039 actifs (100 %) | |
| 95 | +- **Dernier sync** : 2026-08-22 22:26 — fetched 5120, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 114 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
modified
docs/connecteurs/lepointdevente.md
+20 −20
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Le point de vente — billetterie québécoise (`lepointdevente`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/lepointdevente.py` |
| 6 | 6 | |
@@ -44,12 +44,12 @@ | ||
| 44 | 44 | |
| 45 | 45 | ## Champs récupérés → schéma |
| 46 | 46 | |
| 47 | −Complétude mesurée sur les **1789 événements actifs** de la source ; exemples tirés d'un événement réel (`lepointdevente:7gw260926001`). | |
| 47 | +Complétude mesurée sur les **1790 événements actifs** de la source ; exemples tirés d'un événement réel (`lepointdevente:7gw260926001`). | |
| 48 | 48 | |
| 49 | 49 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 50 | 50 | |---|---|---|---| |
| 51 | 51 | | `title` — Titre | titre de l'événement | 100 % | Sam Vigneault en rodage | |
| 52 | −| `description` — Description | texte descriptif (source ou fiche détail) | 88 % | Sam Vigneault en rodage– HumoristeSamedi 26 septembre 2026 à la Chapelle du LacOriginaire de Ple… | | |
| 52 | +| `description` — Description | texte descriptif (source ou fiche détail) | 87 % | Sam Vigneault en rodage– HumoristeSamedi 26 septembre 2026 à la Chapelle du LacOriginaire de Ple… | | |
| 53 | 53 | | `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://lepointdevente.com/billets/7gw260926001 | |
| 54 | 54 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | |
| 55 | 55 | | `venue` — Salle (venue) | nom du lieu | 99 % | Chapelle du Lac | |
@@ -59,12 +59,12 @@ Complétude mesurée sur les **1789 événements actifs** de la source ; exemple | ||
| 59 | 59 | | `lat` — GPS (lat/lng) | coordonnées géographiques | 30 % | 46.8903229, -71.6121222 | |
| 60 | 60 | | `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-09-26 | |
| 61 | 61 | | `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-09-26 | |
| 62 | −| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 94 % | 20:00 | | |
| 62 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 93 % | 20:00 | | |
| 63 | 63 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 64 | 64 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 65 | −| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 93 % | 0 | | |
| 66 | −| `price_min` — Prix min | tarif minimal réel ($) | 91 % | 30.0 | | |
| 67 | −| `price_label` — Libellé prix | étiquette tarifaire affichable | 93 % | Table basse et chaise 30 $ · Table-bar et tabouret avec dossier 30 $ · Table-bistro et tabouret … | | |
| 65 | +| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 92 % | 0 | | |
| 66 | +| `price_min` — Prix min | tarif minimal réel ($) | 90 % | 30.0 | | |
| 67 | +| `price_label` — Libellé prix | étiquette tarifaire affichable | 92 % | Table basse et chaise 30 $ · Table-bar et tabouret avec dossier 30 $ · Table-bistro et tabouret … | | |
| 68 | 68 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 1 % | ["Sam Vigneault"] | |
| 69 | 69 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 70 | 70 | | `image` — Image | visuel (og:image ou média source) | 100 % | https://tpos.s3.amazonaws.com/events/7GW/26/09/26/001/7gw260926001-1152x648-fr-6984c862.png | |
@@ -82,19 +82,19 @@ Complétude mesurée sur les **1789 événements actifs** de la source ; exemple | ||
| 82 | 82 | |
| 83 | 83 | ## Volumétrie & complétude live |
| 84 | 84 | |
| 85 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 86 | − | |
| 87 | −- **Événements en base** : 4396 (dont **1789 actifs**) | |
| 88 | −- **GPS** : 539/1789 actifs (30 %) | |
| 89 | −- **Prix** : 1660/1789 actifs (93 %) | |
| 90 | −- **Heure (start_time)** : 1675/1789 actifs (94 %) | |
| 91 | −- **Heure de fin** : 0/1789 actifs (0 %) | |
| 92 | −- **Statut (annulé/reporté/complet)** : 0/1789 actifs (0 %) | |
| 93 | −- **Artistes** : 15/1789 actifs (1 %) | |
| 94 | −- **Image** : 1789/1789 actifs (100 %) | |
| 95 | −- **Salle (venue)** : 1780/1789 actifs (99 %) | |
| 96 | −- **Dernier sync** : 2026-08-21 20:54 — fetched 1786, +1 ajoutés, ~4 mis à jour, -0 retirés | |
| 97 | −- **Syncs enregistrés** (sync_log) : 103 | |
| 85 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 86 | + | |
| 87 | +- **Événements en base** : 4446 (dont **1790 actifs**) | |
| 88 | +- **GPS** : 533/1790 actifs (30 %) | |
| 89 | +- **Prix** : 1645/1790 actifs (92 %) | |
| 90 | +- **Heure (start_time)** : 1673/1790 actifs (93 %) | |
| 91 | +- **Heure de fin** : 0/1790 actifs (0 %) | |
| 92 | +- **Statut (annulé/reporté/complet)** : 0/1790 actifs (0 %) | |
| 93 | +- **Artistes** : 16/1790 actifs (1 %) | |
| 94 | +- **Image** : 1790/1790 actifs (100 %) | |
| 95 | +- **Salle (venue)** : 1781/1790 actifs (99 %) | |
| 96 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 1745, +1 ajoutés, ~5 mis à jour, -21 retirés | |
| 97 | +- **Syncs enregistrés** (sync_log) : 124 | |
| 98 | 98 | |
| 99 | 99 | ## Erreurs & dépannage |
| 100 | 100 | |
modified
docs/connecteurs/levis.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Lévis — Calendrier (`levis`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `municipal` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/lhjmq.md
+25 −25
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # LHJMQ — matchs des équipes québécoises (`lhjmq`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `sport` · Connecteur : `sortika/connectors/lhjmq.py` |
| 6 | 6 | |
@@ -44,22 +44,22 @@ | ||
| 44 | 44 | |
| 45 | 45 | ## Champs récupérés → schéma |
| 46 | 46 | |
| 47 | −Complétude mesurée sur les **421 événements actifs** de la source ; exemples tirés d'un événement réel (`lhjmq:32601`). | |
| 47 | +Complétude mesurée sur les **417 événements actifs** de la source ; exemples tirés d'un événement réel (`lhjmq:32606`). | |
| 48 | 48 | |
| 49 | 49 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 50 | 50 | |---|---|---|---| |
| 51 | −| `title` — Titre | titre de l'événement | 100 % | LHJMQ : Voltigeurs (Drummondville) c. Cataractes (Shawinigan) | | |
| 52 | −| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | Match de la Ligue de hockey junior Maritimes Québec (LHJMQ) — Voltigeurs (Drummondville) en visi… | | |
| 53 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://theqmjhl.ca/gamecentre/32601 | | |
| 51 | +| `title` — Titre | titre de l'événement | 100 % | LHJMQ : Cataractes (Shawinigan) c. Voltigeurs (Drummondville) | | |
| 52 | +| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | Match de la Ligue de hockey junior Maritimes Québec (LHJMQ) — Cataractes (Shawinigan) en visite … | | |
| 53 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://theqmjhl.ca/gamecentre/32606 | | |
| 54 | 54 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["sport"] | |
| 55 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Aréna de Grand-Mère | | |
| 55 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Centre sportif Girardin - Drummondville (QC) | | |
| 56 | 56 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 57 | −| `city` — Ville | municipalité | 100 % | Shawinigan | | |
| 58 | −| `region` — Région | région administrative | 100 % | Mauricie | | |
| 59 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 99 % | 46.6119958, -72.6893595 | | |
| 60 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 61 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 62 | −| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 15:00 | | |
| 57 | +| `city` — Ville | municipalité | 100 % | Drummondville | | |
| 58 | +| `region` — Région | région administrative | 100 % | Centre-du-Québec | | |
| 59 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 99 % | 45.8744982, -72.5000621 | | |
| 60 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 61 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 62 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 14:00 | | |
| 63 | 63 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 64 | 64 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 65 | 65 | | `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 0 % | ∅ | |
@@ -77,19 +77,19 @@ Complétude mesurée sur les **421 événements actifs** de la source ; exemples | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 81 | − | |
| 82 | −- **Événements en base** : 423 (dont **421 actifs**) | |
| 83 | −- **GPS** : 415/421 actifs (99 %) | |
| 84 | −- **Prix** : 0/421 actifs (0 %) | |
| 85 | −- **Heure (start_time)** : 421/421 actifs (100 %) | |
| 86 | −- **Heure de fin** : 0/421 actifs (0 %) | |
| 87 | −- **Statut (annulé/reporté/complet)** : 0/421 actifs (0 %) | |
| 88 | −- **Artistes** : 0/421 actifs (0 %) | |
| 89 | −- **Image** : 0/421 actifs (0 %) | |
| 90 | −- **Salle (venue)** : 421/421 actifs (100 %) | |
| 91 | −- **Dernier sync** : 2026-08-21 20:54 — fetched 423, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 92 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 80 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 81 | + | |
| 82 | +- **Événements en base** : 423 (dont **417 actifs**) | |
| 83 | +- **GPS** : 411/417 actifs (99 %) | |
| 84 | +- **Prix** : 0/417 actifs (0 %) | |
| 85 | +- **Heure (start_time)** : 417/417 actifs (100 %) | |
| 86 | +- **Heure de fin** : 0/417 actifs (0 %) | |
| 87 | +- **Statut (annulé/reporté/complet)** : 0/417 actifs (0 %) | |
| 88 | +- **Artistes** : 0/417 actifs (0 %) | |
| 89 | +- **Image** : 0/417 actifs (0 %) | |
| 90 | +- **Salle (venue)** : 417/417 actifs (100 %) | |
| 91 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 423, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 92 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 93 | 93 | |
| 94 | 94 | ## Erreurs & dépannage |
| 95 | 95 | |
modified
docs/connecteurs/longueuil.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Longueuil — Événements (nouveau portail) (`longueuil`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/longueuil.py` |
| 6 | 6 | |
@@ -81,7 +81,7 @@ Complétude mesurée sur les **4 événements actifs** de la source ; exemples t | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | 85 | |
| 86 | 86 | - **Événements en base** : 9 (dont **4 actifs**) |
| 87 | 87 | - **GPS** : 3/4 actifs (75 %) |
@@ -92,8 +92,8 @@ Complétude mesurée sur les **4 événements actifs** de la source ; exemples t | ||
| 92 | 92 | - **Artistes** : 0/4 actifs (0 %) |
| 93 | 93 | - **Image** : 4/4 actifs (100 %) |
| 94 | 94 | - **Salle (venue)** : 0/4 actifs (0 %) |
| 95 | −- **Dernier sync** : 2026-08-21 20:54 — fetched 9, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 80 | |
| 95 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 9, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 101 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
modified
docs/connecteurs/mauricie.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Mauricie — événements (ATR) (`mauricie`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `tourisme-regional` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/monteregie.md
+8 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Montérégie — événements (ATR) (`monteregie`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/monteregie.py` |
| 6 | 6 | |
@@ -81,7 +81,7 @@ Complétude mesurée sur les **28 événements actifs** de la source ; exemples | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | 85 | |
| 86 | 86 | - **Événements en base** : 78 (dont **28 actifs**) |
| 87 | 87 | - **GPS** : 28/28 actifs (100 %) |
@@ -92,8 +92,8 @@ Complétude mesurée sur les **28 événements actifs** de la source ; exemples | ||
| 92 | 92 | - **Artistes** : 0/28 actifs (0 %) |
| 93 | 93 | - **Image** : 27/28 actifs (96 %) |
| 94 | 94 | - **Salle (venue)** : 0/28 actifs (0 %) |
| 95 | −- **Dernier sync** : 2026-08-21 21:11 — fetched 78, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 7 | |
| 95 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 78, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 28 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
@@ -110,3 +110,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 110 | 110 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 111 | 111 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 112 | 112 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 113 | + | |
| 114 | +Commits touchant `sortika/connectors/monteregie.py` : | |
| 115 | + | |
| 116 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/montreal.md
+15 −14
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Montréal — Événements publics (`montreal`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `donnees-ouvertes` · Connecteur : `sortika/connectors/montreal.py` |
| 6 | 6 | |
@@ -37,7 +37,7 @@ | ||
| 37 | 37 | |
| 38 | 38 | ## Champs récupérés → schéma |
| 39 | 39 | |
| 40 | −Complétude mesurée sur les **3567 événements actifs** de la source ; exemples tirés d'un événement réel (`montreal:schulichbon-pasteur-nelson-lee-denise-djokic-et-kyoko-hashimoto-118821`). | |
| 40 | +Complétude mesurée sur les **3522 événements actifs** de la source ; exemples tirés d'un événement réel (`montreal:schulichbon-pasteur-nelson-lee-denise-djokic-et-kyoko-hashimoto-118821`). | |
| 41 | 41 | |
| 42 | 42 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 43 | 43 | |---|---|---|---| |
@@ -75,19 +75,19 @@ Complétude mesurée sur les **3567 événements actifs** de la source ; exemple | ||
| 75 | 75 | |
| 76 | 76 | ## Volumétrie & complétude live |
| 77 | 77 | |
| 78 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 78 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 79 | 79 | |
| 80 | −- **Événements en base** : 6205 (dont **3567 actifs**) | |
| 81 | −- **GPS** : 3531/3567 actifs (99 %) | |
| 82 | −- **Prix** : 3567/3567 actifs (100 %) | |
| 83 | −- **Heure (start_time)** : 3548/3567 actifs (99 %) | |
| 84 | −- **Heure de fin** : 3548/3567 actifs (99 %) | |
| 85 | −- **Statut (annulé/reporté/complet)** : 0/3567 actifs (0 %) | |
| 86 | −- **Artistes** : 0/3567 actifs (0 %) | |
| 87 | −- **Image** : 3567/3567 actifs (100 %) | |
| 88 | −- **Salle (venue)** : 155/3567 actifs (4 %) | |
| 89 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 5855, +36 ajoutés, ~6 mis à jour, -0 retirés | |
| 90 | −- **Syncs enregistrés** (sync_log) : 103 | |
| 80 | +- **Événements en base** : 6207 (dont **3522 actifs**) | |
| 81 | +- **GPS** : 3486/3522 actifs (99 %) | |
| 82 | +- **Prix** : 3522/3522 actifs (100 %) | |
| 83 | +- **Heure (start_time)** : 3503/3522 actifs (99 %) | |
| 84 | +- **Heure de fin** : 3503/3522 actifs (99 %) | |
| 85 | +- **Statut (annulé/reporté/complet)** : 0/3522 actifs (0 %) | |
| 86 | +- **Artistes** : 0/3522 actifs (0 %) | |
| 87 | +- **Image** : 3522/3522 actifs (100 %) | |
| 88 | +- **Salle (venue)** : 154/3522 actifs (4 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 5757, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 90 | +- **Syncs enregistrés** (sync_log) : 124 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
@@ -95,6 +95,7 @@ Erreurs relevées dans `sync_log` : | ||
| 95 | 95 | |
| 96 | 96 | | Erreur | Occurrences | Dernière fois | |
| 97 | 97 | |---|---|---| |
| 98 | +| 503 Server Error: Service Unavailable for url: https://donnees.montreal.ca/api/3/action/datastor… | 1 | 2026-08-22 02:31 | | |
| 98 | 99 | | 403 Client Error: Forbidden for url: https://donnees.montreal.ca/api/3/action/datastore_search?r… | 1 | 2026-08-17 15:45 | |
| 99 | 100 | |
| 100 | 101 | - Le WAF de donnees.montreal.ca renvoie **403** à tout User-Agent contenant « bot » — le UA `SortiKa/1.0 (+URL; courriel)` est volontairement sans ce mot. Un 403 ponctuel est en général transitoire (WAF) ; vérifier le UA avant tout. |
modified
docs/connecteurs/outaouais.md
+4 −4
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tourisme Outaouais — calendrier des événements (ATR) (`outaouais`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `tourisme-regional` · Connecteur : `sortika/connectors/outaouais.py` |
| 6 | 6 | |
@@ -75,7 +75,7 @@ Complétude mesurée sur les **24 événements actifs** de la source ; exemples | ||
| 75 | 75 | |
| 76 | 76 | ## Volumétrie & complétude live |
| 77 | 77 | |
| 78 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 78 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 79 | 79 | |
| 80 | 80 | - **Événements en base** : 162 (dont **24 actifs**) |
| 81 | 81 | - **GPS** : 0/24 actifs (0 %) |
@@ -86,8 +86,8 @@ Complétude mesurée sur les **24 événements actifs** de la source ; exemples | ||
| 86 | 86 | - **Artistes** : 0/24 actifs (0 %) |
| 87 | 87 | - **Image** : 24/24 actifs (100 %) |
| 88 | 88 | - **Salle (venue)** : 0/24 actifs (0 %) |
| 89 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 159, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 90 | −- **Syncs enregistrés** (sync_log) : 61 | |
| 89 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 159, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 90 | +- **Syncs enregistrés** (sync_log) : 82 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/ovation.md
+32 −28
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Réseau Ovation — billetterie québécoise multi-salles (`ovation`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/ovation.py` |
| 6 | 6 | |
@@ -53,30 +53,30 @@ | ||
| 53 | 53 | |
| 54 | 54 | ## Champs récupérés → schéma |
| 55 | 55 | |
| 56 | −Complétude mesurée sur les **212 événements actifs** de la source ; exemples tirés d'un événement réel (`ovation:00000O-1D068U`). | |
| 56 | +Complétude mesurée sur les **311 événements actifs** de la source ; exemples tirés d'un événement réel (`ovation:00000P-0104ZJ`). | |
| 57 | 57 | |
| 58 | 58 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 59 | 59 | |---|---|---|---| |
| 60 | −| `title` — Titre | titre de l'événement | 100 % | Louis-Jean Cormier et l’Orchestre FILMharmonique | | |
| 61 | −| `description` — Description | texte descriptif (source ou fiche détail) | 77 % | Depuis plus de vingt ans, Louis-Jean Cormier explore l’intime avec une sensibilité qui a marqué … | | |
| 62 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://m.ovation.ca/00000O/fr/Event/?eventId=1D068U | | |
| 63 | −| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["musique"] | | |
| 64 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Centre culturel de l’Université de Sherbrooke - Salle Maurice-O’Bready | | |
| 65 | −| `address` — Adresse | adresse civique | 100 % | 2500, boul. de l’Université | | |
| 66 | −| `city` — Ville | municipalité | 100 % | Sherbrooke | | |
| 67 | −| `region` — Région | région administrative | 100 % | Estrie | | |
| 68 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 45.3767733, -71.940274 | | |
| 69 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-09-10 | | |
| 70 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-09-10 | | |
| 60 | +| `title` — Titre | titre de l'événement | 100 % | Maxim Martin — Bon chien | | |
| 61 | +| `description` — Description | texte descriptif (source ou fiche détail) | 75 % | Même après cinq one-man-show, un livre et une série sur son quotidien avec sa fille, Maxim Marti… | | |
| 62 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://m.ovation.ca/00000P/fr/Event/?eventId=0104ZJ | | |
| 63 | +| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["arts-scene"] | | |
| 64 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Maison des arts Desjardins Drummondville - Salle principale | | |
| 65 | +| `address` — Adresse | adresse civique | 100 % | 175, rue Ringuet | | |
| 66 | +| `city` — Ville | municipalité | 100 % | Drummondville | | |
| 67 | +| `region` — Région | région administrative | 100 % | Centre-du-Québec | | |
| 68 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 45.8771456, -72.5006843 | | |
| 69 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2027-01-08 | | |
| 70 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2027-01-08 | | |
| 71 | 71 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 20:00 | |
| 72 | 72 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 73 | 73 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 74 | 74 | | `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 0 % | ∅ | |
| 75 | 75 | | `price_min` — Prix min | tarif minimal réel ($) | 0 % | ∅ | |
| 76 | 76 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 77 | −| `artists` — Artistes | têtes d'affiche / lineup (JSON) | 94 % | ["Louis-Jean Cormier", "Orchestre FILMharmonique"] | | |
| 78 | −| `organizer` — Organisateur | promoteur / organisme | 100 % | Centre culturel de l'Université de Sherbrooke | | |
| 79 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://m.ovation.ca/product-catalog-images/thumbnails/ca5a09cd-236b-427a-aa44-f79eafcb130c.jpg | | |
| 77 | +| `artists` — Artistes | têtes d'affiche / lineup (JSON) | 90 % | ["Maxim Martin"] | | |
| 78 | +| `organizer` — Organisateur | promoteur / organisme | 100 % | Maison des Arts Desjardins Drummondville | | |
| 79 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://m.ovation.ca/product-catalog-images/thumbnails/28ea40e8-efc8-4d42-a967-06a97817417a.jpg | | |
| 80 | 80 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 81 | 81 | |
| 82 | 82 | ## Fréquence & budgets |
@@ -93,19 +93,19 @@ Complétude mesurée sur les **212 événements actifs** de la source ; exemples | ||
| 93 | 93 | |
| 94 | 94 | ## Volumétrie & complétude live |
| 95 | 95 | |
| 96 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 96 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 97 | 97 | |
| 98 | −- **Événements en base** : 212 (dont **212 actifs**) | |
| 99 | −- **GPS** : 212/212 actifs (100 %) | |
| 100 | −- **Prix** : 0/212 actifs (0 %) | |
| 101 | −- **Heure (start_time)** : 212/212 actifs (100 %) | |
| 102 | −- **Heure de fin** : 0/212 actifs (0 %) | |
| 103 | −- **Statut (annulé/reporté/complet)** : 0/212 actifs (0 %) | |
| 104 | −- **Artistes** : 199/212 actifs (94 %) | |
| 105 | −- **Image** : 211/212 actifs (100 %) | |
| 106 | −- **Salle (venue)** : 212/212 actifs (100 %) | |
| 107 | −- **Dernier sync** : 2026-08-21 21:46 — fetched 212, +212 ajoutés, ~0 mis à jour, -0 retirés | |
| 108 | −- **Syncs enregistrés** (sync_log) : 1 | |
| 98 | +- **Événements en base** : 312 (dont **311 actifs**) | |
| 99 | +- **GPS** : 311/311 actifs (100 %) | |
| 100 | +- **Prix** : 0/311 actifs (0 %) | |
| 101 | +- **Heure (start_time)** : 311/311 actifs (100 %) | |
| 102 | +- **Heure de fin** : 0/311 actifs (0 %) | |
| 103 | +- **Statut (annulé/reporté/complet)** : 0/311 actifs (0 %) | |
| 104 | +- **Artistes** : 279/311 actifs (90 %) | |
| 105 | +- **Image** : 310/311 actifs (100 %) | |
| 106 | +- **Salle (venue)** : 311/311 actifs (100 %) | |
| 107 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 311, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 108 | +- **Syncs enregistrés** (sync_log) : 22 | |
| 109 | 109 | |
| 110 | 110 | ## Erreurs & dépannage |
| 111 | 111 | |
@@ -122,3 +122,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 122 | 122 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 123 | 123 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 124 | 124 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 125 | + | |
| 126 | +Commits touchant `sortika/connectors/ovation.py` : | |
| 127 | + | |
| 128 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/placedesarts.md
+15 −15
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Place des Arts — calendrier multi-salles (`placedesarts`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `salle-de-spectacle` · Connecteur : `sortika/connectors/placedesarts.py` |
| 6 | 6 | |
@@ -44,7 +44,7 @@ | ||
| 44 | 44 | |
| 45 | 45 | ## Champs récupérés → schéma |
| 46 | 46 | |
| 47 | −Complétude mesurée sur les **347 événements actifs** de la source ; exemples tirés d'un événement réel (`placedesarts:24-poses-portraits-2026-09-02-19:30`). | |
| 47 | +Complétude mesurée sur les **346 événements actifs** de la source ; exemples tirés d'un événement réel (`placedesarts:24-poses-portraits-2026-09-02-19:30`). | |
| 48 | 48 | |
| 49 | 49 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 50 | 50 | |---|---|---|---| |
@@ -82,19 +82,19 @@ Complétude mesurée sur les **347 événements actifs** de la source ; exemples | ||
| 82 | 82 | |
| 83 | 83 | ## Volumétrie & complétude live |
| 84 | 84 | |
| 85 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 86 | − | |
| 87 | −- **Événements en base** : 356 (dont **347 actifs**) | |
| 88 | −- **GPS** : 325/347 actifs (94 %) | |
| 89 | −- **Prix** : 253/347 actifs (73 %) | |
| 90 | −- **Heure (start_time)** : 346/347 actifs (100 %) | |
| 91 | −- **Heure de fin** : 0/347 actifs (0 %) | |
| 92 | −- **Statut (annulé/reporté/complet)** : 0/347 actifs (0 %) | |
| 93 | −- **Artistes** : 0/347 actifs (0 %) | |
| 94 | −- **Image** : 347/347 actifs (100 %) | |
| 95 | −- **Salle (venue)** : 347/347 actifs (100 %) | |
| 96 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 354, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 97 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 85 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 86 | + | |
| 87 | +- **Événements en base** : 356 (dont **346 actifs**) | |
| 88 | +- **GPS** : 324/346 actifs (94 %) | |
| 89 | +- **Prix** : 252/346 actifs (73 %) | |
| 90 | +- **Heure (start_time)** : 345/346 actifs (100 %) | |
| 91 | +- **Heure de fin** : 0/346 actifs (0 %) | |
| 92 | +- **Statut (annulé/reporté/complet)** : 0/346 actifs (0 %) | |
| 93 | +- **Artistes** : 0/346 actifs (0 %) | |
| 94 | +- **Image** : 346/346 actifs (100 %) | |
| 95 | +- **Salle (venue)** : 346/346 actifs (100 %) | |
| 96 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 354, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 97 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 98 | 98 | |
| 99 | 99 | ## Erreurs & dépannage |
| 100 | 100 | |
modified
docs/connecteurs/quebecanimee.md
+15 −15
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Québec animée — Ville de Québec (`quebecanimee`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/quebecanimee.py` |
| 6 | 6 | |
@@ -41,7 +41,7 @@ | ||
| 41 | 41 | |
| 42 | 42 | ## Champs récupérés → schéma |
| 43 | 43 | |
| 44 | −Complétude mesurée sur les **121 événements actifs** de la source ; exemples tirés d'un événement réel (`quebecanimee:videoprojection-sur-la-bibliotheque-gabrielle-roy-avec-irina-gonzalez-2026-09-04`). | |
| 44 | +Complétude mesurée sur les **102 événements actifs** de la source ; exemples tirés d'un événement réel (`quebecanimee:videoprojection-sur-la-bibliotheque-gabrielle-roy-avec-irina-gonzalez-2026-09-04`). | |
| 45 | 45 | |
| 46 | 46 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 47 | 47 | |---|---|---|---| |
@@ -79,19 +79,19 @@ Complétude mesurée sur les **121 événements actifs** de la source ; exemples | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 83 | − | |
| 84 | −- **Événements en base** : 131 (dont **121 actifs**) | |
| 85 | −- **GPS** : 121/121 actifs (100 %) | |
| 86 | −- **Prix** : 121/121 actifs (100 %) | |
| 87 | −- **Heure (start_time)** : 0/121 actifs (0 %) | |
| 88 | −- **Heure de fin** : 0/121 actifs (0 %) | |
| 89 | −- **Statut (annulé/reporté/complet)** : 0/121 actifs (0 %) | |
| 90 | −- **Artistes** : 0/121 actifs (0 %) | |
| 91 | −- **Image** : 121/121 actifs (100 %) | |
| 92 | −- **Salle (venue)** : 121/121 actifs (100 %) | |
| 93 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 115, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 82 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 83 | + | |
| 84 | +- **Événements en base** : 131 (dont **102 actifs**) | |
| 85 | +- **GPS** : 102/102 actifs (100 %) | |
| 86 | +- **Prix** : 102/102 actifs (100 %) | |
| 87 | +- **Heure (start_time)** : 0/102 actifs (0 %) | |
| 88 | +- **Heure de fin** : 0/102 actifs (0 %) | |
| 89 | +- **Statut (annulé/reporté/complet)** : 0/102 actifs (0 %) | |
| 90 | +- **Artistes** : 0/102 actifs (0 %) | |
| 91 | +- **Image** : 102/102 actifs (100 %) | |
| 92 | +- **Salle (venue)** : 102/102 actifs (100 %) | |
| 93 | +- **Dernier sync** : 2026-08-22 22:27 — fetched 102, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 95 | 95 | |
| 96 | 96 | ## Erreurs & dépannage |
| 97 | 97 | |
modified
docs/connecteurs/repentigny.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Repentigny — Événements (`repentigny`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `donnees-ouvertes` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/saguenay.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Saguenay — Événements culturels (`saguenay`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `donnees-ouvertes` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/saguenaysorties.md
+22 −22
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Sorties Saguenay — portail événementiel de la Ville (`saguenaysorties`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/saguenaysorties.py` |
| 6 | 6 | |
@@ -41,21 +41,21 @@ | ||
| 41 | 41 | |
| 42 | 42 | ## Champs récupérés → schéma |
| 43 | 43 | |
| 44 | −Complétude mesurée sur les **437 événements actifs** de la source ; exemples tirés d'un événement réel (`saguenaysorties:570260-2027-01-28-20:00`). | |
| 44 | +Complétude mesurée sur les **438 événements actifs** de la source ; exemples tirés d'un événement réel (`saguenaysorties:331172-2026-11-14-20:00`). | |
| 45 | 45 | |
| 46 | 46 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 47 | 47 | |---|---|---|---| |
| 48 | −| `title` — Titre | titre de l'événement | 100 % | Confessions d'un enfant du siècle dernier | | |
| 49 | −| `description` — Description | texte descriptif (source ou fiche détail) | 98 % | Cinq facettes d’un jeune homme en quête de lui-même. Entre l’école et la maison, un adolescent d… | | |
| 50 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://sorties.saguenay.ca/festivals?id=570260 | | |
| 51 | −| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["arts-scene"] | | |
| 48 | +| `title` — Titre | titre de l'événement | 100 % | Pierre Lapointe - Chansons démodées pour ceux qui ont le cœur abîmé | | |
| 49 | +| `description` — Description | texte descriptif (source ou fiche détail) | 98 % | Les chansons démodées pour ceux qui ont le coeur abîmé de Pierre Lapointe sur scène, un spectacl… | | |
| 50 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://sorties.saguenay.ca/festivals?id=331172 | | |
| 51 | +| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["musique"] | | |
| 52 | 52 | | `venue` — Salle (venue) | nom du lieu | 86 % | Théâtre C | |
| 53 | 53 | | `address` — Adresse | adresse civique | 100 % | 534 Rue Jacques-Cartier E | |
| 54 | 54 | | `city` — Ville | municipalité | 86 % | Chicoutimi | |
| 55 | 55 | | `region` — Région | région administrative | 100 % | Saguenay–Lac-Saint-Jean | |
| 56 | 56 | | `lat` — GPS (lat/lng) | coordonnées géographiques | 80 % | 48.424452, -71.053231 | |
| 57 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2027-01-28 | | |
| 58 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2027-01-28 | | |
| 57 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-11-14 | | |
| 58 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-11-14 | | |
| 59 | 59 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 20:00 | |
| 60 | 60 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 61 | 61 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **437 événements actifs** de la source ; exemples | ||
| 64 | 64 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 65 | 65 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 66 | 66 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 67 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://lvc-medias.lavitrine.com/54f46863-28df-579a-8bcf-9471f0383d1f.jpg | | |
| 67 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://lvc-medias.lavitrine.com/343c0962-3759-5b36-9776-ba53a67bbcc6.jpg | | |
| 68 | 68 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 69 | 69 | |
| 70 | 70 | ## Fréquence & budgets |
@@ -80,19 +80,19 @@ Complétude mesurée sur les **437 événements actifs** de la source ; exemples | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 84 | − | |
| 85 | −- **Événements en base** : 460 (dont **437 actifs**) | |
| 86 | −- **GPS** : 350/437 actifs (80 %) | |
| 87 | −- **Prix** : 0/437 actifs (0 %) | |
| 88 | −- **Heure (start_time)** : 436/437 actifs (100 %) | |
| 89 | −- **Heure de fin** : 0/437 actifs (0 %) | |
| 90 | −- **Statut (annulé/reporté/complet)** : 0/437 actifs (0 %) | |
| 91 | −- **Artistes** : 0/437 actifs (0 %) | |
| 92 | −- **Image** : 437/437 actifs (100 %) | |
| 93 | −- **Salle (venue)** : 376/437 actifs (86 %) | |
| 94 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 437, +0 ajoutés, ~0 mis à jour, -14 retirés | |
| 95 | −- **Syncs enregistrés** (sync_log) : 60 | |
| 83 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 84 | + | |
| 85 | +- **Événements en base** : 460 (dont **438 actifs**) | |
| 86 | +- **GPS** : 351/438 actifs (80 %) | |
| 87 | +- **Prix** : 0/438 actifs (0 %) | |
| 88 | +- **Heure (start_time)** : 437/438 actifs (100 %) | |
| 89 | +- **Heure de fin** : 0/438 actifs (0 %) | |
| 90 | +- **Statut (annulé/reporté/complet)** : 0/438 actifs (0 %) | |
| 91 | +- **Artistes** : 0/438 actifs (0 %) | |
| 92 | +- **Image** : 438/438 actifs (100 %) | |
| 93 | +- **Salle (venue)** : 377/438 actifs (86 %) | |
| 94 | +- **Dernier sync** : 2026-08-22 22:28 — fetched 438, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 95 | +- **Syncs enregistrés** (sync_log) : 81 | |
| 96 | 96 | |
| 97 | 97 | ## Erreurs & dépannage |
| 98 | 98 | |
modified
docs/connecteurs/sallesjsonld.md
+31 −31
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Salles de spectacle — moteur générique JSON-LD Event (`sallesjsonld`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `salle-de-spectacle` · Connecteur : `sortika/connectors/sallesjsonld.py` |
| 6 | 6 | |
@@ -43,31 +43,31 @@ | ||
| 43 | 43 | |
| 44 | 44 | ## Champs récupérés → schéma |
| 45 | 45 | |
| 46 | −Complétude mesurée sur les **278 événements actifs** de la source ; exemples tirés d'un événement réel (`sallesjsonld:grandtheatre-arpin-lepine-tournee-lune-brune-2026-10-04-0000`). | |
| 46 | +Complétude mesurée sur les **308 événements actifs** de la source ; exemples tirés d'un événement réel (`sallesjsonld:odyscene-pierre-verville-en-rodage-2026-08-27-2000`). | |
| 47 | 47 | |
| 48 | 48 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 49 | 49 | |---|---|---|---| |
| 50 | −| `title` — Titre | titre de l'événement | 100 % | Tournée Lune Brune | | |
| 51 | −| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | PRÉVENTE EN COURS Pour être informé des prochaines préventes, inscrivez vous à l'infolettre!Arpi… | | |
| 52 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://grandtheatre.qc.ca/programmation/arpin-lepine-tournee-lune-brune/ | | |
| 50 | +| `title` — Titre | titre de l'événement | 100 % | Pierre Verville | | |
| 51 | +| `description` — Description | texte descriptif (source ou fiche détail) | 100 % | En rodage Plongez dans l’univers unique de Pierre Verville avec Pour une dernière voix, un spect… | | |
| 52 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://odyscene.com/programmation/pierre-verville-en-rodage/ | | |
| 53 | 53 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | |
| 54 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Grand Théatre de Québec | | |
| 55 | −| `address` — Adresse | adresse civique | 100 % | 269 Boulevard René-Lévesque E | | |
| 56 | −| `city` — Ville | municipalité | 100 % | Québec | | |
| 57 | −| `region` — Région | région administrative | 100 % | Capitale-Nationale | | |
| 58 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 46.8062847, -71.2217335 | | |
| 59 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-10-03 | | |
| 60 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-10-04 | | |
| 54 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Théâtre Lionel-Groulx | | |
| 55 | +| `address` — Adresse | adresse civique | 96 % | ∅ | | |
| 56 | +| `city` — Ville | municipalité | 100 % | Sainte-Thérèse | | |
| 57 | +| `region` — Région | région administrative | 100 % | Laurentides | | |
| 58 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 100 % | 45.642259, -73.842239 | | |
| 59 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-27 | | |
| 60 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-28 | | |
| 61 | 61 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 20:00 | |
| 62 | −| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 47 % | ∅ | | |
| 63 | −| `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 1 % | cancelled | | |
| 62 | +| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 53 % | 22:00 | | |
| 63 | +| `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 1 % | ∅ | | |
| 64 | 64 | | `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 97 % | 0 | |
| 65 | −| `price_min` — Prix min | tarif minimal réel ($) | 97 % | 25.0 | | |
| 66 | −| `price_label` — Libellé prix | étiquette tarifaire affichable | 97 % | 25.00 $ | | |
| 65 | +| `price_min` — Prix min | tarif minimal réel ($) | 97 % | 37.0 | | |
| 66 | +| `price_label` — Libellé prix | étiquette tarifaire affichable | 97 % | 37 $ à 42 $ | | |
| 67 | 67 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 68 | 68 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 69 | −| `image` — Image | visuel (og:image ou média source) | 3 % | ∅ | | |
| 70 | −| `website` — Site web | site officiel de l'événement | 100 % | https://am.ticketmaster.com/grandtheatre/fr-ca/buy/ism/UzEyNjEyMDE%3D | | |
| 69 | +| `image` — Image | visuel (og:image ou média source) | 13 % | https://odyscene.com/wp-content/uploads/tuxedo/pierre20verville-onsp-ctxfe7h44jyexi.png | | |
| 70 | +| `website` — Site web | site officiel de l'événement | 100 % | https://odyscene.com/programmation/pierre-verville-en-rodage/ | | |
| 71 | 71 | |
| 72 | 72 | ## Fréquence & budgets |
| 73 | 73 | |
@@ -81,19 +81,19 @@ Complétude mesurée sur les **278 événements actifs** de la source ; exemples | ||
| 81 | 81 | |
| 82 | 82 | ## Volumétrie & complétude live |
| 83 | 83 | |
| 84 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 85 | − | |
| 86 | −- **Événements en base** : 282 (dont **278 actifs**) | |
| 87 | −- **GPS** : 278/278 actifs (100 %) | |
| 88 | −- **Prix** : 270/278 actifs (97 %) | |
| 89 | −- **Heure (start_time)** : 278/278 actifs (100 %) | |
| 90 | −- **Heure de fin** : 131/278 actifs (47 %) | |
| 91 | −- **Statut (annulé/reporté/complet)** : 2/278 actifs (1 %) | |
| 92 | −- **Artistes** : 0/278 actifs (0 %) | |
| 93 | −- **Image** : 8/278 actifs (3 %) | |
| 94 | −- **Salle (venue)** : 278/278 actifs (100 %) | |
| 95 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 281, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | −- **Syncs enregistrés** (sync_log) : 61 | |
| 84 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 85 | + | |
| 86 | +- **Événements en base** : 315 (dont **308 actifs**) | |
| 87 | +- **GPS** : 308/308 actifs (100 %) | |
| 88 | +- **Prix** : 300/308 actifs (97 %) | |
| 89 | +- **Heure (start_time)** : 308/308 actifs (100 %) | |
| 90 | +- **Heure de fin** : 164/308 actifs (53 %) | |
| 91 | +- **Statut (annulé/reporté/complet)** : 2/308 actifs (1 %) | |
| 92 | +- **Artistes** : 0/308 actifs (0 %) | |
| 93 | +- **Image** : 41/308 actifs (13 %) | |
| 94 | +- **Salle (venue)** : 308/308 actifs (100 %) | |
| 95 | +- **Dernier sync** : 2026-08-22 22:59 — fetched 309, +33 ajoutés, ~0 mis à jour, -0 retirés | |
| 96 | +- **Syncs enregistrés** (sync_log) : 83 | |
| 97 | 97 | |
| 98 | 98 | ## Erreurs & dépannage |
| 99 | 99 | |
modified
docs/connecteurs/sherbrooke.md
+25 −25
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Sherbrooke — Calendrier des événements (`sherbrooke`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `municipal` · Connecteur : `sortika/connectors/sherbrooke.py` |
| 6 | 6 | |
@@ -36,30 +36,30 @@ | ||
| 36 | 36 | |
| 37 | 37 | ## Champs récupérés → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **114 événements actifs** de la source ; exemples tirés d'un événement réel (`sherbrooke:2818`). | |
| 39 | +Complétude mesurée sur les **109 événements actifs** de la source ; exemples tirés d'un événement réel (`sherbrooke:1610`). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 42 | 42 | |---|---|---|---| |
| 43 | −| `title` — Titre | titre de l'événement | 100 % | Semaine de la Santé | | |
| 44 | −| `description` — Description | texte descriptif (source ou fiche détail) | 98 % | À l’occasion de la Semaine de la Santé, le Musée de la nature et des sciences de Sherbrooke prop… | | |
| 45 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.sherbrooke.ca/fr/culture-sports-et-loisirs/calendrier-des-activites/2818/semaine-de-… | | |
| 46 | −| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | | |
| 43 | +| `title` — Titre | titre de l'événement | 100 % | Festival de Danse Contemporaine de Sherbrooke | | |
| 44 | +| `description` — Description | texte descriptif (source ou fiche détail) | 98 % | Le Festival de Danse Contemporaine de Sherbrooke (FDCS) est un événement récurrent annuel, dans … | | |
| 45 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://www.sherbrooke.ca/fr/culture-sports-et-loisirs/calendrier-des-activites/1610/festival-de… | | |
| 46 | +| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["festival", "arts-scene"] | | |
| 47 | 47 | | `venue` — Salle (venue) | nom du lieu | 0 % | ∅ | |
| 48 | 48 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 49 | 49 | | `city` — Ville | municipalité | 100 % | Sherbrooke | |
| 50 | 50 | | `region` — Région | région administrative | 100 % | Estrie | |
| 51 | 51 | | `lat` — GPS (lat/lng) | coordonnées géographiques | 0 % | ∅ | |
| 52 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-17 | | |
| 53 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-21 | | |
| 54 | −| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 86 % | 09:00 | | |
| 55 | −| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 92 % | 17:00 | | |
| 52 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-20 | | |
| 53 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 54 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 85 % | 19:00 | | |
| 55 | +| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 92 % | 21:00 | | |
| 56 | 56 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 57 | −| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 100 % | 0 | | |
| 57 | +| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 100 % | 1 | | |
| 58 | 58 | | `price_min` — Prix min | tarif minimal réel ($) | 0 % | ∅ | |
| 59 | 59 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 60 | 60 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 61 | 61 | | `organizer` — Organisateur | promoteur / organisme | 100 % | Ville de Sherbrooke | |
| 62 | −| `image` — Image | visuel (og:image ou média source) | 99 % | https://www.sherbrooke.ca/Fichiers/3337a882-4a53-e611-80ea-00155d09650f/Entities/0b82c068-841d-4… | | |
| 62 | +| `image` — Image | visuel (og:image ou média source) | 99 % | https://www.sherbrooke.ca/Fichiers/3337a882-4a53-e611-80ea-00155d09650f/Entities/b34b6e54-1f7d-4… | | |
| 63 | 63 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 64 | 64 | |
| 65 | 65 | ## Fréquence & budgets |
@@ -69,19 +69,19 @@ Complétude mesurée sur les **114 événements actifs** de la source ; exemples | ||
| 69 | 69 | |
| 70 | 70 | ## Volumétrie & complétude live |
| 71 | 71 | |
| 72 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 73 | − | |
| 74 | −- **Événements en base** : 275 (dont **114 actifs**) | |
| 75 | −- **GPS** : 0/114 actifs (0 %) | |
| 76 | −- **Prix** : 114/114 actifs (100 %) | |
| 77 | −- **Heure (start_time)** : 98/114 actifs (86 %) | |
| 78 | −- **Heure de fin** : 105/114 actifs (92 %) | |
| 79 | −- **Statut (annulé/reporté/complet)** : 0/114 actifs (0 %) | |
| 80 | −- **Artistes** : 0/114 actifs (0 %) | |
| 81 | −- **Image** : 113/114 actifs (99 %) | |
| 82 | −- **Salle (venue)** : 0/114 actifs (0 %) | |
| 83 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 274, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 84 | −- **Syncs enregistrés** (sync_log) : 95 | |
| 72 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 73 | + | |
| 74 | +- **Événements en base** : 275 (dont **109 actifs**) | |
| 75 | +- **GPS** : 0/109 actifs (0 %) | |
| 76 | +- **Prix** : 109/109 actifs (100 %) | |
| 77 | +- **Heure (start_time)** : 93/109 actifs (85 %) | |
| 78 | +- **Heure de fin** : 100/109 actifs (92 %) | |
| 79 | +- **Statut (annulé/reporté/complet)** : 0/109 actifs (0 %) | |
| 80 | +- **Artistes** : 0/109 actifs (0 %) | |
| 81 | +- **Image** : 108/109 actifs (99 %) | |
| 82 | +- **Salle (venue)** : 0/109 actifs (0 %) | |
| 83 | +- **Dernier sync** : 2026-08-22 22:28 — fetched 274, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 84 | +- **Syncs enregistrés** (sync_log) : 116 | |
| 85 | 85 | |
| 86 | 86 | ## Erreurs & dépannage |
| 87 | 87 | |
modified
docs/connecteurs/sitq.md
+16 −16
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # SIT Québec — Ministère du Tourisme (`sitq`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `donnees-ouvertes` · Connecteur : `sortika/connectors/sitq.py` |
| 6 | 6 | |
@@ -41,12 +41,12 @@ | ||
| 41 | 41 | |
| 42 | 42 | ## Champs récupérés → schéma |
| 43 | 43 | |
| 44 | −Complétude mesurée sur les **1020 événements actifs** de la source ; exemples tirés d'un événement réel (`sitq:EVENMTOV503QAX`). | |
| 44 | +Complétude mesurée sur les **1014 événements actifs** de la source ; exemples tirés d'un événement réel (`sitq:EVENMTOV503QAX`). | |
| 45 | 45 | |
| 46 | 46 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 47 | 47 | |---|---|---|---| |
| 48 | 48 | | `title` — Titre | titre de l'événement | 100 % | Génération MusiquePlus – 86-96 | |
| 49 | −| `description` — Description | texte descriptif (source ou fiche détail) | 89 % | Renseignements : info@espacestdenis.com | | |
| 49 | +| `description` — Description | texte descriptif (source ou fiche détail) | 90 % | Renseignements : info@espacestdenis.com | | |
| 50 | 50 | | `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://espacestdenis.com/evenement/generation-musique-plus/ | |
| 51 | 51 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["musique", "cinema", "patrimoine"] | |
| 52 | 52 | | `venue` — Salle (venue) | nom du lieu | 74 % | Studio-Cabaret - Théâtre St-Denis | |
@@ -79,19 +79,19 @@ Complétude mesurée sur les **1020 événements actifs** de la source ; exemple | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 83 | − | |
| 84 | −- **Événements en base** : 1814 (dont **1020 actifs**) | |
| 85 | −- **GPS** : 987/1020 actifs (97 %) | |
| 86 | −- **Prix** : 0/1020 actifs (0 %) | |
| 87 | −- **Heure (start_time)** : 0/1020 actifs (0 %) | |
| 88 | −- **Heure de fin** : 0/1020 actifs (0 %) | |
| 89 | −- **Statut (annulé/reporté/complet)** : 0/1020 actifs (0 %) | |
| 90 | −- **Artistes** : 0/1020 actifs (0 %) | |
| 91 | −- **Image** : 644/1020 actifs (63 %) | |
| 92 | −- **Salle (venue)** : 751/1020 actifs (74 %) | |
| 93 | −- **Dernier sync** : 2026-08-21 20:55 — fetched 1798, +0 ajoutés, ~0 mis à jour, -3 retirés | |
| 94 | −- **Syncs enregistrés** (sync_log) : 104 | |
| 82 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 83 | + | |
| 84 | +- **Événements en base** : 1814 (dont **1014 actifs**) | |
| 85 | +- **GPS** : 981/1014 actifs (97 %) | |
| 86 | +- **Prix** : 0/1014 actifs (0 %) | |
| 87 | +- **Heure (start_time)** : 0/1014 actifs (0 %) | |
| 88 | +- **Heure de fin** : 0/1014 actifs (0 %) | |
| 89 | +- **Statut (annulé/reporté/complet)** : 0/1014 actifs (0 %) | |
| 90 | +- **Artistes** : 0/1014 actifs (0 %) | |
| 91 | +- **Image** : 639/1014 actifs (63 %) | |
| 92 | +- **Salle (venue)** : 748/1014 actifs (74 %) | |
| 93 | +- **Dernier sync** : 2026-08-22 22:28 — fetched 1798, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 94 | +- **Syncs enregistrés** (sync_log) : 125 | |
| 95 | 95 | |
| 96 | 96 | ## Erreurs & dépannage |
| 97 | 97 | |
modified
docs/connecteurs/terrebonne.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Terrebonne — Calendrier (`terrebonne`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `municipal` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/ticketacces.md
+31 −27
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # TicketAcces.net — billetterie régionale québécoise (`ticketacces`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/ticketacces.py` |
| 6 | 6 | |
@@ -59,30 +59,30 @@ | ||
| 59 | 59 | |
| 60 | 60 | ## Champs récupérés → schéma |
| 61 | 61 | |
| 62 | −Complétude mesurée sur les **1320 événements actifs** de la source ; exemples tirés d'un événement réel (`ticketacces:salledesjardins-304-2026-08-22-17:00`). | |
| 62 | +Complétude mesurée sur les **1318 événements actifs** de la source ; exemples tirés d'un événement réel (`ticketacces:lachapellespectacles-11094-2026-09-20-15:00`). | |
| 63 | 63 | |
| 64 | 64 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 65 | 65 | |---|---|---|---| |
| 66 | −| `title` — Titre | titre de l'événement | 100 % | Unchained and The madDogs - hommage à Joe Cocker — sur le Parvis | | |
| 67 | −| `description` — Description | texte descriptif (source ou fiche détail) | 6 % | Venez voir Unchained and The madDogs - hommage à Joe Cocker avec Marie-Ève Brosseau en première … | | |
| 68 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://salledesjardins.ticketacces.net/fr/organisation/representations/index.cfm?EvenementID=30… | | |
| 66 | +| `title` — Titre | titre de l'événement | 100 % | Jeanick Fournier — Authentique - En supplémentaire | | |
| 67 | +| `description` — Description | texte descriptif (source ou fiche détail) | 20 % | Certaines voix sont si puissantes qu'elles vous coupent le souffle dès la première note. La chan… | | |
| 68 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://lachapellespectacles.ticketacces.net/fr/organisation/representations/index.cfm?Evenement… | | |
| 69 | 69 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["arts-scene"] | |
| 70 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Carrefour culturel Estacade - Salle Desjardins | | |
| 70 | +| `venue` — Salle (venue) | nom du lieu | 100 % | La Chapelle | | |
| 71 | 71 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 72 | −| `city` — Ville | municipalité | 100 % | Gatineau | | |
| 73 | −| `region` — Région | région administrative | 100 % | Outaouais | | |
| 74 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 73 % | 45.6229867, -72.9455913 | | |
| 75 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 76 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 77 | −| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 17:00 | | |
| 72 | +| `city` — Ville | municipalité | 100 % | Québec | | |
| 73 | +| `region` — Région | région administrative | 100 % | Capitale-Nationale | | |
| 74 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 74 % | 45.5231154, -73.5771387 | | |
| 75 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-09-20 | | |
| 76 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-09-20 | | |
| 77 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 15:00 | | |
| 78 | 78 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 79 | 79 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
| 80 | 80 | | `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 0 % | ∅ | |
| 81 | −| `price_min` — Prix min | tarif minimal réel ($) | 6 % | 0.0 | | |
| 81 | +| `price_min` — Prix min | tarif minimal réel ($) | 21 % | 47.0 | | |
| 82 | 82 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 83 | 83 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 84 | −| `organizer` — Organisateur | promoteur / organisme | 100 % | Carrefour culturel Estacade - Salle Desjardins | | |
| 85 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://www.ticketacces.net/organisations/salledesjardins/evenements/petites/affiche-joe-cocker.… | | |
| 84 | +| `organizer` — Organisateur | promoteur / organisme | 100 % | La Chapelle | | |
| 85 | +| `image` — Image | visuel (og:image ou média source) | 99 % | https://www.ticketacces.net/organisations/lachapellespectacles/evenements/petites/nouveau-site-w… | | |
| 86 | 86 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 87 | 87 | |
| 88 | 88 | ## Fréquence & budgets |
@@ -98,19 +98,19 @@ Complétude mesurée sur les **1320 événements actifs** de la source ; exemple | ||
| 98 | 98 | |
| 99 | 99 | ## Volumétrie & complétude live |
| 100 | 100 | |
| 101 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 101 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 102 | 102 | |
| 103 | −- **Événements en base** : 1320 (dont **1320 actifs**) | |
| 104 | −- **GPS** : 959/1320 actifs (73 %) | |
| 105 | −- **Prix** : 76/1320 actifs (6 %) | |
| 106 | −- **Heure (start_time)** : 1320/1320 actifs (100 %) | |
| 107 | −- **Heure de fin** : 0/1320 actifs (0 %) | |
| 108 | −- **Statut (annulé/reporté/complet)** : 0/1320 actifs (0 %) | |
| 109 | −- **Artistes** : 0/1320 actifs (0 %) | |
| 110 | −- **Image** : 1319/1320 actifs (100 %) | |
| 111 | −- **Salle (venue)** : 1320/1320 actifs (100 %) | |
| 112 | −- **Dernier sync** : 2026-08-21 21:40 — fetched 1320, +1320 ajoutés, ~0 mis à jour, -0 retirés | |
| 113 | −- **Syncs enregistrés** (sync_log) : 1 | |
| 103 | +- **Événements en base** : 1359 (dont **1318 actifs**) | |
| 104 | +- **GPS** : 974/1318 actifs (74 %) | |
| 105 | +- **Prix** : 283/1318 actifs (21 %) | |
| 106 | +- **Heure (start_time)** : 1318/1318 actifs (100 %) | |
| 107 | +- **Heure de fin** : 0/1318 actifs (0 %) | |
| 108 | +- **Statut (annulé/reporté/complet)** : 0/1318 actifs (0 %) | |
| 109 | +- **Artistes** : 0/1318 actifs (0 %) | |
| 110 | +- **Image** : 1300/1318 actifs (99 %) | |
| 111 | +- **Salle (venue)** : 1318/1318 actifs (100 %) | |
| 112 | +- **Dernier sync** : 2026-08-22 22:28 — fetched 1318, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 113 | +- **Syncs enregistrés** (sync_log) : 22 | |
| 114 | 114 | |
| 115 | 115 | ## Erreurs & dépannage |
| 116 | 116 | |
@@ -127,3 +127,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 127 | 127 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 128 | 128 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 129 | 129 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 130 | + | |
| 131 | +Commits touchant `sortika/connectors/ticketacces.py` : | |
| 132 | + | |
| 133 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
modified
docs/connecteurs/ticketmaster.md
+16 −16
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ticketmaster — Discovery API (Québec) (`ticketmaster`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/ticketmaster.py` |
| 6 | 6 | |
@@ -46,7 +46,7 @@ | ||
| 46 | 46 | |
| 47 | 47 | ## Champs récupérés → schéma |
| 48 | 48 | |
| 49 | −Complétude mesurée sur les **360 événements actifs** de la source ; exemples tirés d'un événement réel (`ticketmaster:310064CAFB66B462`). | |
| 49 | +Complétude mesurée sur les **359 événements actifs** de la source ; exemples tirés d'un événement réel (`ticketmaster:310064CAFB66B462`). | |
| 50 | 50 | |
| 51 | 51 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 52 | 52 | |---|---|---|---| |
@@ -69,7 +69,7 @@ Complétude mesurée sur les **360 événements actifs** de la source ; exemples | ||
| 69 | 69 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 70 | 70 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 71 | 71 | | `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | |
| 72 | −| `image` — Image | visuel (og:image ou média source) | 90 % | https://mapsapi.tmol.io/maps/geometry/3/event/310064CAFB66B462/staticImage?type=png&systemId=HOS… | | |
| 72 | +| `image` — Image | visuel (og:image ou média source) | 89 % | https://mapsapi.tmol.io/maps/geometry/3/event/310064CAFB66B462/staticImage?type=png&systemId=HOS… | | |
| 73 | 73 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 74 | 74 | |
| 75 | 75 | ## Fréquence & budgets |
@@ -87,19 +87,19 @@ Complétude mesurée sur les **360 événements actifs** de la source ; exemples | ||
| 87 | 87 | |
| 88 | 88 | ## Volumétrie & complétude live |
| 89 | 89 | |
| 90 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 91 | − | |
| 92 | −- **Événements en base** : 394 (dont **360 actifs**) | |
| 93 | −- **GPS** : 360/360 actifs (100 %) | |
| 94 | −- **Prix** : 0/360 actifs (0 %) | |
| 95 | −- **Heure (start_time)** : 345/360 actifs (96 %) | |
| 96 | −- **Heure de fin** : 0/360 actifs (0 %) | |
| 97 | −- **Statut (annulé/reporté/complet)** : 15/360 actifs (4 %) | |
| 98 | −- **Artistes** : 0/360 actifs (0 %) | |
| 99 | −- **Image** : 323/360 actifs (90 %) | |
| 100 | −- **Salle (venue)** : 360/360 actifs (100 %) | |
| 101 | −- **Dernier sync** : 2026-08-21 20:56 — fetched 360, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 102 | −- **Syncs enregistrés** (sync_log) : 84 | |
| 90 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 91 | + | |
| 92 | +- **Événements en base** : 404 (dont **359 actifs**) | |
| 93 | +- **GPS** : 359/359 actifs (100 %) | |
| 94 | +- **Prix** : 0/359 actifs (0 %) | |
| 95 | +- **Heure (start_time)** : 346/359 actifs (96 %) | |
| 96 | +- **Heure de fin** : 0/359 actifs (0 %) | |
| 97 | +- **Statut (annulé/reporté/complet)** : 15/359 actifs (4 %) | |
| 98 | +- **Artistes** : 0/359 actifs (0 %) | |
| 99 | +- **Image** : 318/359 actifs (89 %) | |
| 100 | +- **Salle (venue)** : 359/359 actifs (100 %) | |
| 101 | +- **Dernier sync** : 2026-08-22 22:29 — fetched 360, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 102 | +- **Syncs enregistrés** (sync_log) : 105 | |
| 103 | 103 | |
| 104 | 104 | ## Erreurs & dépannage |
| 105 | 105 | |
added
docs/connecteurs/ticketpro.md
+113 −0
@@ -0,0 +1,113 @@ | ||
| 1 | +# Ticketpro — billetterie canadienne (tenants Québec) (`ticketpro`) | |
| 2 | + | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | + | |
| 5 | +**Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/ticketpro.py` | |
| 6 | + | |
| 7 | +## Description | |
| 8 | + | |
| 9 | +- **Source** : [Ticketpro — billetterie canadienne (tenants Québec)](https://www.ticketpro.ca/) | |
| 10 | +- **Couverture** : Théâtre St-Denis + Studio St-Denis (Montréal), Fun Nation (Salle Pierre-Mercure, Monument-National, Club Soda), ExpoCité (Québec), Salle André-Gagnon (La Pocatière), Palais des congrès de Montréal, La Belle Église de Chertsey, Théâtre Rialto, Huntingdon… ~200 spectacles / ~1 100 séances datées (vérifié 2026-08-22) | |
| 11 | +- **Extraction** : API JSON publique de la nouvelle plateforme SPA par tenant (<org>.ticketpro.ca/api/v1/pages, aucun anti-bot ni rendu JS) : 1 fiche par spectacle avec titre, artiste, description, image, lieu complet (adresse, ville, code postal, lat/lng), toutes les dates horodatées, tags et drapeaux cancelled/soldout → 1 Event par (page, date à venir). 6 tenants QC dans data/ticketpro_tenants.json (tproqc agrège la province mais pas tprotsd), dédup inter-tenants par id de page. Lieux de restauration (soupers-spectacles St-Denis) et musée à créneaux exclus par config. startingPrice toujours 0 → aucun prix émis. | |
| 12 | + | |
| 13 | +## Accès | |
| 14 | + | |
| 15 | +- **Type** : billetterie | |
| 16 | +- **Endpoint** : voir URL source (https://www.ticketpro.ca/) | |
| 17 | +- **Auth** : Aucune côté source ; `SCRAPFLY_API_KEY` requis pour le backend Scrapfly | |
| 18 | +- **Pagination** : par numéro de page | |
| 19 | +- **Backend** : Scrapfly (anti-bot / rendu JS) via `base.get_scrapfly()` | |
| 20 | +- **Throttle** : 1.0 s entre requêtes | |
| 21 | +- **Accès légal** : Billetterie publique ; robots.txt n'interdit que /admin/ /gui/ /report/ (vérifié 2026-08-22) ; API du site officiel consommée telle quelle, GET throttlés 1 s, UA honnête, lien d'achat vers la fiche officielle /fr/pages/<id> du tenant | |
| 22 | + | |
| 23 | +<details><summary>En-tête documentaire du connecteur</summary> | |
| 24 | + | |
| 25 | +> connectors/ticketpro.py : Ticketpro — billetterie canadienne, tenants Québec | |
| 26 | +> (Phase 5). Grande billetterie indépendante (Théâtre St-Denis, Fun Nation, | |
| 27 | +> ExpoCité, Salle André-Gagnon, Palais des congrès, salles régionales…). | |
| 28 | +> Source : nouvelle plateforme SPA par tenant <org>.ticketpro.ca dont | |
| 29 | +> l'API JSON est PUBLIQUE et sans anti-bot (vérifié 2026-08-22, | |
| 30 | +> robots.txt : seuls /admin/ /gui/ /report/ interdits) : | |
| 31 | +> GET /api/v1/pages = 1 fiche par spectacle avec titre, artiste, | |
| 32 | +> sous-titre, description, image, lieu COMPLET (adresse, ville, | |
| 33 | +> province, code postal, lat/lng), TOUTES les dates horodatées | |
| 34 | +> des représentations, tags (catégories) et drapeaux | |
| 35 | +> cancelled/soldout. AUCUN rendu JS ni Scrapfly nécessaire. | |
| 36 | +> Extraction: 1 GET /api/v1/pages par tenant (6 tenants QC configurés dans | |
| 37 | +> data/ticketpro_tenants.json — tproqc agrège la province mais | |
| 38 | +> PAS tprotsd, vérifié) → 1 Event par (page, date à venir), | |
| 39 | +> dédup inter-tenants par id de page (ids globaux). Les lieux | |
| 40 | +> de restauration (soupers-spectacles) et le musée à créneaux | |
| 41 | +> sont exclus par config (exclure_lieux). Filtre province: | |
| 42 | +> provinceState == QC. startingPrice est toujours 0 sur ces | |
| 43 | +> tenants → aucun prix émis (jamais inventé). | |
| 44 | +> Accès : billetterie publique, API du site officiel, GET throttlés | |
| 45 | +> 1 s, identification honnête, lien d'achat vers la fiche | |
| 46 | +> officielle /fr/pages/<id> du tenant. | |
| 47 | + | |
| 48 | +</details> | |
| 49 | + | |
| 50 | +## Champs récupérés → schéma | |
| 51 | + | |
| 52 | +Complétude mesurée sur les **361 événements actifs** de la source ; exemples tirés d'un événement réel (`ticketpro:1678581012-2026-09-25T2000`). | |
| 53 | + | |
| 54 | +| Champ (`events.*`) | Description | Complétude | Exemple réel | | |
| 55 | +|---|---|---|---| | |
| 56 | +| `title` — Titre | titre de l'événement | 100 % | Fun Nation présente Jérémy Demay: Naturel | | |
| 57 | +| `description` — Description | texte descriptif (source ou fiche détail) | 98 % | Jérémy Demay, le plus québécois des humoristes français, résidant au Québec depuis plus de 17 an… | | |
| 58 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://tproqc.ticketpro.ca/fr/pages/1678581012 | | |
| 59 | +| `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["arts-scene"] | | |
| 60 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Salle Pierre-Mercure du centre Pierre-Péladeau | | |
| 61 | +| `address` — Adresse | adresse civique | 99 % | 300, boulevard De Maisonneuve Est | | |
| 62 | +| `city` — Ville | municipalité | 100 % | Montréal | | |
| 63 | +| `region` — Région | région administrative | 100 % | Montréal | | |
| 64 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 99 % | 45.5134852, -73.5622721 | | |
| 65 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-09-25 | | |
| 66 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-09-25 | | |
| 67 | +| `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 100 % | 20:00 | | |
| 68 | +| `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | | |
| 69 | +| `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | | |
| 70 | +| `is_free` — Gratuité (is_free) | 1 gratuit / 0 payant / NULL inconnu | 0 % | ∅ | | |
| 71 | +| `price_min` — Prix min | tarif minimal réel ($) | 0 % | ∅ | | |
| 72 | +| `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | | |
| 73 | +| `artists` — Artistes | têtes d'affiche / lineup (JSON) | 78 % | ["Jérémy Demay"] | | |
| 74 | +| `organizer` — Organisateur | promoteur / organisme | 0 % | ∅ | | |
| 75 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://tproqc.ticketpro.ca/api/v1/resources/1678588362.jpeg?version=2 | | |
| 76 | +| `website` — Site web | site officiel de l'événement | 0 % | ∅ | | |
| 77 | + | |
| 78 | +## Fréquence & budgets | |
| 79 | + | |
| 80 | +- **Cadence** : horaire (watcher PM2) | |
| 81 | +- **Budget global** : géocodage Nominatim plafonné à `SORTIKA_GEOCODE_MAX` (défaut 120) requêtes réseau/cycle, toutes sources confondues (`sortika/geocode.py`, cache disque). | |
| 82 | + | |
| 83 | +## Volumétrie & complétude live | |
| 84 | + | |
| 85 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 86 | + | |
| 87 | +- **Événements en base** : 361 (dont **361 actifs**) | |
| 88 | +- **GPS** : 357/361 actifs (99 %) | |
| 89 | +- **Prix** : 0/361 actifs (0 %) | |
| 90 | +- **Heure (start_time)** : 361/361 actifs (100 %) | |
| 91 | +- **Heure de fin** : 0/361 actifs (0 %) | |
| 92 | +- **Statut (annulé/reporté/complet)** : 0/361 actifs (0 %) | |
| 93 | +- **Artistes** : 280/361 actifs (78 %) | |
| 94 | +- **Image** : 361/361 actifs (100 %) | |
| 95 | +- **Salle (venue)** : 361/361 actifs (100 %) | |
| 96 | +- **Dernier sync** : 2026-08-22 22:57 — fetched 364, +361 ajoutés, ~0 mis à jour, -0 retirés | |
| 97 | +- **Syncs enregistrés** (sync_log) : 1 | |
| 98 | + | |
| 99 | +## Erreurs & dépannage | |
| 100 | + | |
| 101 | +Aucune erreur dans `sync_log` pour cette source. ✅ | |
| 102 | + | |
| 103 | +- Rejouer un sync isolé : `python3 run.py sync --source ticketpro` (ou via le watcher PM2) ; inspecter ensuite `sync_log` : `sqlite3 data/sortika.db "SELECT * FROM sync_log WHERE source='ticketpro' ORDER BY ts DESC LIMIT 5;"` | |
| 104 | + | |
| 105 | +## Licence / attribution | |
| 106 | + | |
| 107 | +- Billetterie publique ; robots.txt n'interdit que /admin/ /gui/ /report/ (vérifié 2026-08-22) ; API du site officiel consommée telle quelle, GET throttlés 1 s, UA honnête, lien d'achat vers la fiche officielle /fr/pages/<id> du tenant | |
| 108 | + | |
| 109 | +## Historique | |
| 110 | + | |
| 111 | +- **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. | |
| 112 | +- **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). | |
| 113 | +- **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». | |
modified
docs/connecteurs/trois-rivieres.md
+1 −1
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Ville de Trois-Rivières — Événements (`trois-rivieres`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : abandonnee** · Type : `municipal` · Connecteur : *aucun (source sans connecteur runtime)* |
| 6 | 6 | |
modified
docs/connecteurs/tuxedobillet.md
+28 −24
@@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Tuxedo Billet — billetterie québécoise multi-tenants (`tuxedobillet`) |
| 2 | 2 | |
| 3 | −> Fiche générée le 2026-08-21 21:47 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 3 | +> Fiche générée le 2026-08-22 23:01 EDT par `scripts/gen_connector_docs.py` — ne pas éditer à la main, relancer le script. | |
| 4 | 4 | |
| 5 | 5 | **Statut : actif** · Type : `billetterie` · Connecteur : `sortika/connectors/tuxedobillet.py` |
| 6 | 6 | |
@@ -50,21 +50,21 @@ | ||
| 50 | 50 | |
| 51 | 51 | ## Champs récupérés → schéma |
| 52 | 52 | |
| 53 | −Complétude mesurée sur les **252 événements actifs** de la source ; exemples tirés d'un événement réel (`tuxedobillet:centredesarts-le-duplex-260822`). | |
| 53 | +Complétude mesurée sur les **442 événements actifs** de la source ; exemples tirés d'un événement réel (`tuxedobillet:centrepierrepeladeau-le-comte-de-monte-cristo`). | |
| 54 | 54 | |
| 55 | 55 | | Champ (`events.*`) | Description | Complétude | Exemple réel | |
| 56 | 56 | |---|---|---|---| |
| 57 | −| `title` — Titre | titre de l'événement | 100 % | Le duplex — Comédie - Théâtre d'été | | |
| 57 | +| `title` — Titre | titre de l'événement | 100 % | Le Comte de Monte-Cristo — Présenté par Les Agents Doubles Productions | | |
| 58 | 58 | | `description` — Description | texte descriptif (source ou fiche détail) | 0 % | ∅ | |
| 59 | −| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://centredesarts.tuxedobillet.com/main/le-duplex-260822 | | |
| 59 | +| `url` — URL | lien vers la fiche originale / billetterie | 100 % | https://centrepierrepeladeau.tuxedobillet.com/main/le-comte-de-monte-cristo | | |
| 60 | 60 | | `categories` — Catégories | taxonomie canonique Sorti-Ka (JSON) | 100 % | ["autre"] | |
| 61 | −| `venue` — Salle (venue) | nom du lieu | 100 % | Centre des arts Juliette-Lassonde | | |
| 61 | +| `venue` — Salle (venue) | nom du lieu | 100 % | Centre Pierre-Péladeau | | |
| 62 | 62 | | `address` — Adresse | adresse civique | 0 % | ∅ | |
| 63 | −| `city` — Ville | municipalité | 100 % | Saint-Hyacinthe | | |
| 64 | −| `region` — Région | région administrative | 100 % | Montérégie | | |
| 65 | −| `lat` — GPS (lat/lng) | coordonnées géographiques | 90 % | 45.6229339, -72.9455416 | | |
| 66 | −| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 67 | −| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-22 | | |
| 63 | +| `city` — Ville | municipalité | 100 % | Montréal | | |
| 64 | +| `region` — Région | région administrative | 96 % | Montréal | | |
| 65 | +| `lat` — GPS (lat/lng) | coordonnées géographiques | 44 % | 45.5134852, -73.5622721 | | |
| 66 | +| `start_date` — Date début | date locale AAAA-MM-JJ | 100 % | 2026-08-23 | | |
| 67 | +| `end_date` — Date fin | date locale AAAA-MM-JJ | 100 % | 2026-08-23 | | |
| 68 | 68 | | `start_time` — Heure (start_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 69 | 69 | | `end_time` — Heure de fin (end_time) | heure locale HH:MM (Québec) | 0 % | ∅ | |
| 70 | 70 | | `status` — Statut | cancelled / postponed / soldout (NULL = prévu) | 0 % | ∅ | |
@@ -72,8 +72,8 @@ Complétude mesurée sur les **252 événements actifs** de la source ; exemples | ||
| 72 | 72 | | `price_min` — Prix min | tarif minimal réel ($) | 0 % | ∅ | |
| 73 | 73 | | `price_label` — Libellé prix | étiquette tarifaire affichable | 0 % | ∅ | |
| 74 | 74 | | `artists` — Artistes | têtes d'affiche / lineup (JSON) | 0 % | [] | |
| 75 | −| `organizer` — Organisateur | promoteur / organisme | 100 % | Centre des arts Juliette-Lassonde | | |
| 76 | −| `image` — Image | visuel (og:image ou média source) | 100 % | https://tuxedov1.blob.core.windows.net/tuxedo-centredesarts/show/Le%20duplex_-OpJkp-kUHJSuv8wru8… | | |
| 75 | +| `organizer` — Organisateur | promoteur / organisme | 100 % | Centre Pierre-Péladeau | | |
| 76 | +| `image` — Image | visuel (og:image ou média source) | 100 % | https://tuxedov1.blob.core.windows.net/tuxedo-centrepierrepeladeau/show/Le%20Comte%20de%20Monte-… | | |
| 77 | 77 | | `website` — Site web | site officiel de l'événement | 0 % | ∅ | |
| 78 | 78 | |
| 79 | 79 | ## Fréquence & budgets |
@@ -90,19 +90,19 @@ Complétude mesurée sur les **252 événements actifs** de la source ; exemples | ||
| 90 | 90 | |
| 91 | 91 | ## Volumétrie & complétude live |
| 92 | 92 | |
| 93 | −*(mesuré le 2026-08-21 21:47 EDT dans `data/sortika.db`)* | |
| 93 | +*(mesuré le 2026-08-22 23:01 EDT dans `data/sortika.db`)* | |
| 94 | 94 | |
| 95 | −- **Événements en base** : 252 (dont **252 actifs**) | |
| 96 | −- **GPS** : 226/252 actifs (90 %) | |
| 97 | −- **Prix** : 0/252 actifs (0 %) | |
| 98 | −- **Heure (start_time)** : 0/252 actifs (0 %) | |
| 99 | −- **Heure de fin** : 0/252 actifs (0 %) | |
| 100 | −- **Statut (annulé/reporté/complet)** : 0/252 actifs (0 %) | |
| 101 | −- **Artistes** : 0/252 actifs (0 %) | |
| 102 | −- **Image** : 252/252 actifs (100 %) | |
| 103 | −- **Salle (venue)** : 252/252 actifs (100 %) | |
| 104 | −- **Dernier sync** : 2026-08-21 21:44 — fetched 252, +252 ajoutés, ~0 mis à jour, -0 retirés | |
| 105 | −- **Syncs enregistrés** (sync_log) : 1 | |
| 95 | +- **Événements en base** : 580 (dont **442 actifs**) | |
| 96 | +- **GPS** : 195/442 actifs (44 %) | |
| 97 | +- **Prix** : 0/442 actifs (0 %) | |
| 98 | +- **Heure (start_time)** : 0/442 actifs (0 %) | |
| 99 | +- **Heure de fin** : 0/442 actifs (0 %) | |
| 100 | +- **Statut (annulé/reporté/complet)** : 0/442 actifs (0 %) | |
| 101 | +- **Artistes** : 0/442 actifs (0 %) | |
| 102 | +- **Image** : 442/442 actifs (100 %) | |
| 103 | +- **Salle (venue)** : 442/442 actifs (100 %) | |
| 104 | +- **Dernier sync** : 2026-08-22 22:29 — fetched 442, +0 ajoutés, ~0 mis à jour, -0 retirés | |
| 105 | +- **Syncs enregistrés** (sync_log) : 22 | |
| 106 | 106 | |
| 107 | 107 | ## Erreurs & dépannage |
| 108 | 108 | |
@@ -119,3 +119,7 @@ Aucune erreur dans `sync_log` pour cette source. ✅ | ||
| 119 | 119 | - **2026-08-18 — Vague 1 d'enrichissement** (commit `7d9d1b0`) : géocodage Nominatim des salles (`sortika/geocode.py`, cache disque, plafond `SORTIKA_GEOCODE_MAX`), fiches détail lepointdevente (description, heure, tarifs réels `/plugins/rates/<id>`), contacts Tourinsoft (SITQ), heure locale Montréal via JSON-LD. |
| 120 | 120 | - **2026-08-18 — Vague 2 d'enrichissement** (commit `65d2d33`) : colonnes additives `events.start_time` (HH:MM locale QC) et `events.artists` (JSON) + migration auto ; heure captée partout où la source la publie (lepointdevente, evenko, Laval, Sherbrooke, Montréal, atuvu) ; artistes (headliners evenko, lineup Bandsintown, attractions Ticketmaster, patrons sûrs sur les titres) ; 3 nouveaux connecteurs (brossard, ticketmaster, bandsintown). |
| 121 | 121 | - **2026-08-19 — Phase 2 (travail de moine)** : colonnes additives `end_time`, `status` (annulé/reporté/complet) et `quarantine` (règles anti-aberrations, non publié mais réintégrable) ; règle d'ARCHIVAGE des événements terminés à chaque cycle (jamais supprimés) ; dedup_key inclut désormais l'heure (les séances multiples d'un même jour ne sont plus écrasées à l'affichage) ; alerte « 0 événement futur / chute > 80 % » par source (data/future_counts.json + /api/sources) ; heure et description La Vitrine ; end_time/organisateur/statut Eventbrite ; og:description Atuvu ; premières parties + portes + tournée evenko ; offres billets Bandsintown ; taxonomie type-event + description intégrale Brossard ; image Longueuil ; géocodage par ADRESSE CIVIQUE prioritaire ; villes normalisées au Répertoire MAMH (data/villes_canon.json) ; laval consignée « morte-a-la-source ». |
| 122 | + | |
| 123 | +Commits touchant `sortika/connectors/tuxedobillet.py` : | |
| 124 | + | |
| 125 | +- `5973906` 2026-08-21 Phase 4 — 7 nouveaux connecteurs : régions manquantes (Montérégie, Centre-du-Québec, Chaudière-Appalaches, Gaspésie via Scrapfly) + billetteries QC (TicketAcces, Réseau Ovation, Tuxedo via acteur Apify ka-tuxedo) | |
added
sortika/connectors/ticketpro.py
+146 −0
@@ -0,0 +1,146 @@ | ||
| 1 | +# ----------------------------------------------------------------------------- | |
| 2 | +# Sorti-Ka — Agrégateur de sorties & événements (province de Québec) | |
| 3 | +# Auteur : Simon-Pierre Boucher — contact@spboucher.ai | |
| 4 | +# connectors/ticketpro.py : Ticketpro — billetterie canadienne, tenants Québec | |
| 5 | +# (Phase 5). Grande billetterie indépendante (Théâtre St-Denis, Fun Nation, | |
| 6 | +# ExpoCité, Salle André-Gagnon, Palais des congrès, salles régionales…). | |
| 7 | +# Source : nouvelle plateforme SPA par tenant <org>.ticketpro.ca dont | |
| 8 | +# l'API JSON est PUBLIQUE et sans anti-bot (vérifié 2026-08-22, | |
| 9 | +# robots.txt : seuls /admin/ /gui/ /report/ interdits) : | |
| 10 | +# GET /api/v1/pages = 1 fiche par spectacle avec titre, artiste, | |
| 11 | +# sous-titre, description, image, lieu COMPLET (adresse, ville, | |
| 12 | +# province, code postal, lat/lng), TOUTES les dates horodatées | |
| 13 | +# des représentations, tags (catégories) et drapeaux | |
| 14 | +# cancelled/soldout. AUCUN rendu JS ni Scrapfly nécessaire. | |
| 15 | +# Extraction: 1 GET /api/v1/pages par tenant (6 tenants QC configurés dans | |
| 16 | +# data/ticketpro_tenants.json — tproqc agrège la province mais | |
| 17 | +# PAS tprotsd, vérifié) → 1 Event par (page, date à venir), | |
| 18 | +# dédup inter-tenants par id de page (ids globaux). Les lieux | |
| 19 | +# de restauration (soupers-spectacles) et le musée à créneaux | |
| 20 | +# sont exclus par config (exclure_lieux). Filtre province: | |
| 21 | +# provinceState == QC. startingPrice est toujours 0 sur ces | |
| 22 | +# tenants → aucun prix émis (jamais inventé). | |
| 23 | +# Accès : billetterie publique, API du site officiel, GET throttlés | |
| 24 | +# 1 s, identification honnête, lien d'achat vers la fiche | |
| 25 | +# officielle /fr/pages/<id> du tenant. | |
| 26 | +# ----------------------------------------------------------------------------- | |
| 27 | +from __future__ import annotations | |
| 28 | + | |
| 29 | +import json | |
| 30 | +import re | |
| 31 | +from datetime import date | |
| 32 | +from pathlib import Path | |
| 33 | + | |
| 34 | +from ..normalize import clean_text, strip_accents | |
| 35 | +from ..schema import Event | |
| 36 | +from .base import BaseConnector | |
| 37 | + | |
| 38 | +CONFIG_PATH = Path(__file__).resolve().parents[2] / "data" / "ticketpro_tenants.json" | |
| 39 | + | |
| 40 | +_TAG_RE = re.compile(r"<[^>]+>") | |
| 41 | +_BLOCK_RE = re.compile(r"<(style|script)[^>]*>.*?</\1>", re.S | re.I) | |
| 42 | +# CSS inline hors balise (les fiches en contiennent parfois du résiduel) | |
| 43 | +_CSS_RE = re.compile(r"(?:@media[^{]*|[\w\.\#\-]+\s*)\{[^}]*\}") | |
| 44 | +_DATE_RE = re.compile(r"^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2})") | |
| 45 | + | |
| 46 | + | |
| 47 | +def _strip_html(raw: str) -> str: | |
| 48 | + """HTML de description → texte plat (les fiches sont en HTML riche).""" | |
| 49 | + txt = _BLOCK_RE.sub(" ", raw or "") | |
| 50 | + txt = _CSS_RE.sub(" ", _TAG_RE.sub(" ", txt)) | |
| 51 | + return clean_text(txt) | |
| 52 | + | |
| 53 | + | |
| 54 | +def _lieu_key(name: str) -> str: | |
| 55 | + return strip_accents(clean_text(name or "")).lower() | |
| 56 | + | |
| 57 | + | |
| 58 | +class TicketproConnector(BaseConnector): | |
| 59 | + source_id = "ticketpro" | |
| 60 | + request_delay = 1.0 | |
| 61 | + | |
| 62 | + def _load_config(self) -> dict: | |
| 63 | + try: | |
| 64 | + return json.loads(CONFIG_PATH.read_text(encoding="utf-8")) | |
| 65 | + except Exception: | |
| 66 | + return {"tenants": [], "exclure_lieux": []} | |
| 67 | + | |
| 68 | + def _events_from_page(self, tenant: str, page: dict, | |
| 69 | + excluded: list[str]) -> list[Event]: | |
| 70 | + title = clean_text(page.get("title") or "") | |
| 71 | + dates = page.get("dates") or [] | |
| 72 | + loc = (page.get("locations") or [{}])[0] or {} | |
| 73 | + if not title or not dates: | |
| 74 | + return [] | |
| 75 | + if (loc.get("provinceState") or "QC").upper() != "QC": | |
| 76 | + return [] # tenant QC mais salle hors province | |
| 77 | + venue_key = _lieu_key(loc.get("name") or "") | |
| 78 | + if any(x in venue_key for x in excluded): | |
| 79 | + return [] # restauration / musée à créneaux | |
| 80 | + | |
| 81 | + page_id = page.get("id") | |
| 82 | + url = f"https://{tenant}.ticketpro.ca/fr/pages/{page.get('slug') or page_id}" | |
| 83 | + image = page.get("imageUrlBig") or page.get("imageUrlSmall") or "" | |
| 84 | + if image and not image.startswith("http"): | |
| 85 | + # « /v1/resources/… » → servi par l'API du tenant (vérifié 200) | |
| 86 | + image = f"https://{tenant}.ticketpro.ca/api{image}" | |
| 87 | + status = ("cancelled" if page.get("cancelled") | |
| 88 | + else "soldout" if page.get("soldout") else "") | |
| 89 | + artist = clean_text(page.get("artist") or "") | |
| 90 | + raw_cats = [t.get("smallName") or t.get("name") or "" | |
| 91 | + for t in page.get("tags") or []] | |
| 92 | + description = _strip_html(page.get("description") | |
| 93 | + or page.get("miniDescription") or "") | |
| 94 | + | |
| 95 | + today = date.today().isoformat() | |
| 96 | + events: list[Event] = [] | |
| 97 | + for d in dates: | |
| 98 | + m = _DATE_RE.match(str(d)) | |
| 99 | + if not m: | |
| 100 | + continue | |
| 101 | + day, hh, mm = m.group(1), m.group(2), m.group(3) | |
| 102 | + if day < today: # l'API conserve les dates passées | |
| 103 | + continue | |
| 104 | + events.append(Event( | |
| 105 | + source=self.source_id, | |
| 106 | + external_id=f"{page_id}-{day}T{hh}{mm}", | |
| 107 | + url=url, | |
| 108 | + title=title, | |
| 109 | + description=description, | |
| 110 | + raw_categories=[c for c in raw_cats if c] or [title], | |
| 111 | + venue=clean_text(loc.get("name") or ""), | |
| 112 | + address=clean_text(loc.get("addressLine1") or ""), | |
| 113 | + city=clean_text(loc.get("city") or ""), | |
| 114 | + postal_code=clean_text(loc.get("postalCode") or ""), | |
| 115 | + lat=loc.get("latitude"), | |
| 116 | + lng=loc.get("longitude"), | |
| 117 | + start_date=day, | |
| 118 | + start_time=f"{hh}:{mm}", | |
| 119 | + status=status, | |
| 120 | + artists=[artist] if artist else [], | |
| 121 | + image=image, | |
| 122 | + )) | |
| 123 | + return events | |
| 124 | + | |
| 125 | + def fetch(self) -> list[Event]: | |
| 126 | + config = self._load_config() | |
| 127 | + tenants = [t["domaine"] for t in config.get("tenants", [])] | |
| 128 | + excluded = [_lieu_key(x) for x in config.get("exclure_lieux", [])] | |
| 129 | + if not tenants: | |
| 130 | + return [] | |
| 131 | + | |
| 132 | + events: list[Event] = [] | |
| 133 | + seen_pages: set = set() # ids de page globaux inter-tenants | |
| 134 | + for tenant in tenants: | |
| 135 | + try: | |
| 136 | + data = self.get_json( | |
| 137 | + f"https://{tenant}.ticketpro.ca/api/v1/pages") | |
| 138 | + except Exception as exc: # un tenant en panne ne bloque pas | |
| 139 | + print(f"[sorti-ka] ticketpro : tenant {tenant} ignoré ({exc})") | |
| 140 | + continue | |
| 141 | + for page in data.get("pages") or []: | |
| 142 | + if page.get("id") in seen_pages: | |
| 143 | + continue | |
| 144 | + seen_pages.add(page.get("id")) | |
| 145 | + events += self._events_from_page(tenant, page, excluded) | |
| 146 | + return events | |
| 147 | ||