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# ==============================================================================2# Author: Simon-Pierre Boucher <contact@spboucher.ai>3# File: run.py4# Desc: CLI Sorti-Ka — sync (ingestion), watch (boucle périodique),5# web (API FastAPI + frontend). Patron Lou-Ka : run.py.6# ==============================================================================7from __future__ import annotations89import argparse10import sys111213def main() -> int:14 parser = argparse.ArgumentParser(15 prog="sorti-ka",16 description="Sorti-Ka — toutes les sorties et tous les événements du Québec")17 sub = parser.add_subparsers(dest="cmd", required=True)1819 p_sync = sub.add_parser("sync", help="exécuter l'ingestion (toutes les sources)")20 p_sync.add_argument("sources", nargs="*", help="ids de sources (défaut : toutes)")2122 p_watch = sub.add_parser("watch", help="ingestion en boucle périodique")23 p_watch.add_argument("--interval", type=int, default=6 * 3600,24 help="intervalle en secondes (défaut : 21600 = 6 h)")2526 p_web = sub.add_parser("web", help="lancer l'API + le frontend")27 p_web.add_argument("--host", default="127.0.0.1")28 p_web.add_argument("--port", type=int, default=8120)2930 args = parser.parse_args()3132 if args.cmd == "sync":33 from sortika import ingest34 results = ingest.run(args.sources or None)35 return 1 if any("error" in r for r in results) else 03637 if args.cmd == "watch":38 from sortika import ingest39 ingest.watch(args.interval)40 return 04142 if args.cmd == "web":43 import uvicorn44 uvicorn.run("sortika.web:app", host=args.host, port=args.port)45 return 04647 return 2484950if __name__ == "__main__":51 sys.exit(main())52