Toutes les sorties et tous les événements du Québec, un seul endroit — 7 connecteurs, fiches SSR, design Groupe KA.
HTML 82.9%
Python 15.2%
TypeScript 0.9%
JavaScript 0.7%
1#!/usr/bin/env python32# -----------------------------------------------------------------------------3# Sorti-Ka — Agrégateur de sorties & événements (province de Québec)4# Auteur : Simon-Pierre Boucher — contact@spboucher.ai5# scripts/build_venues.py : AMORÇAGE de l'annuaire de salles (Phase 3) —6# apprentissage depuis la base (0 réseau) + extrait Overpass des lieux7# culturels du Québec (1 requête, overpass-api.de) + géocodage Nominatim des8# salles récurrentes (plafond en argument, défaut 300, throttle 1,1 s) +9# application aux événements sans GPS. Les syncs horaires entretiennent10# ensuite l'annuaire (venues.run dans le pipeline, plafonds réduits).11# Usage : .venv/bin/python scripts/build_venues.py [max_nominatim]12# -----------------------------------------------------------------------------13from __future__ import annotations1415import sys16from pathlib import Path1718sys.path.insert(0, str(Path(__file__).resolve().parents[1]))1920from sortika import db, venues # noqa: E402212223def main() -> None:24 max_nominatim = int(sys.argv[1]) if len(sys.argv) > 1 else 30025 con = db.connect()26 print("[venues] apprentissage…")27 print(" appris :", venues.learn(con))28 print("[venues] Overpass (lieux culturels QC)…")29 try:30 print(" osm :", venues.refresh_osm(con, force=True))31 except Exception as exc:32 print(" osm ÉCHEC :", exc)33 print(f"[venues] Nominatim top salles (max {max_nominatim})…")34 print(" nominatim :", venues.geocode_top(con, max_requests=max_nominatim))35 print("[venues] application aux événements sans GPS…")36 print(" apply :", venues.apply(con))37 total = con.execute("SELECT COUNT(*) FROM venues").fetchone()[0]38 print(f"[venues] annuaire : {total} salles")39 con.close()404142if __name__ == "__main__":43 main()44