#!/usr/bin/env python3 # ----------------------------------------------------------------------------- # Sorti-Ka — Agrégateur de sorties & événements (province de Québec) # Auteur : Simon-Pierre Boucher — contact@spboucher.ai # scripts/build_venues.py : AMORÇAGE de l'annuaire de salles (Phase 3) — # apprentissage depuis la base (0 réseau) + extrait Overpass des lieux # culturels du Québec (1 requête, overpass-api.de) + géocodage Nominatim des # salles récurrentes (plafond en argument, défaut 300, throttle 1,1 s) + # application aux événements sans GPS. Les syncs horaires entretiennent # ensuite l'annuaire (venues.run dans le pipeline, plafonds réduits). # Usage : .venv/bin/python scripts/build_venues.py [max_nominatim] # ----------------------------------------------------------------------------- from __future__ import annotations import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from sortika import db, venues # noqa: E402 def main() -> None: max_nominatim = int(sys.argv[1]) if len(sys.argv) > 1 else 300 con = db.connect() print("[venues] apprentissage…") print(" appris :", venues.learn(con)) print("[venues] Overpass (lieux culturels QC)…") try: print(" osm :", venues.refresh_osm(con, force=True)) except Exception as exc: print(" osm ÉCHEC :", exc) print(f"[venues] Nominatim top salles (max {max_nominatim})…") print(" nominatim :", venues.geocode_top(con, max_requests=max_nominatim)) print("[venues] application aux événements sans GPS…") print(" apply :", venues.apply(con)) total = con.execute("SELECT COUNT(*) FROM venues").fetchone()[0] print(f"[venues] annuaire : {total} salles") con.close() if __name__ == "__main__": main()