SPB Git forge

spb/resto-ka

Public

Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)

52commits 1branches 0releases
11.6 MBsize
maindefault branch
19 days agolast push
Python 69.3% TypeScript 16.7% CSS 7.9% JavaScript 4.7% HTML 1.4%
2.0 KB · 60 lines python
Raw Blame History
1#!/usr/bin/env python32# ==============================================================================3# Author: Simon-Pierre Boucher <contact@spboucher.ai>4# File:   run.py5# Desc:   Resto·Ka — point d'entrée : `sync`, `watch`, `serve`, `geocode`,6#         `dedup`. Même patron que le run.py de Lou·Ka.7# ==============================================================================8"""Utilisation :9    python run.py sync [source ...]     # synchronise les restos + menus10    python run.py watch [heures]        # synchronise en boucle (défaut 24 h)11    python run.py serve [port]          # démarre l'API + le frontend (défaut 8115)12    python run.py geocode [n]           # géocode les restos sans coordonnées13    python run.py dedup                 # déduplication inter-sources14"""15from __future__ import annotations1617import os18import sys19from pathlib import Path2021# Charger .env (SCRAPFLY_KEY, FIRECRAWL_API_KEY…) sans dépendance externe22_env = Path(__file__).parent / ".env"23if _env.exists():24    for line in _env.read_text().splitlines():25        line = line.strip()26        if line and not line.startswith("#") and "=" in line:27            k, _, v = line.partition("=")28            os.environ.setdefault(k.strip(), v.strip())293031def main() -> None:32    cmd = sys.argv[1] if len(sys.argv) > 1 else "serve"33    args = sys.argv[2:]3435    if cmd == "sync":36        from restoka import ingest37        ingest.run(args or None)38        ingest.enrich()39    elif cmd == "watch":40        from restoka import ingest41        hours = float(args[0]) if args else 24.042        ingest.watch(int(hours * 3600))43    elif cmd == "serve":44        import uvicorn45        port = int(args[0]) if args else 811546        uvicorn.run("restoka.web:app", host="0.0.0.0", port=port)47    elif cmd == "geocode":48        from restoka import geocode49        geocode.run_batch(int(args[0]) if args else 200)50    elif cmd == "dedup":51        from restoka import dedup52        print(dedup.run())53    else:54        print(__doc__)55        sys.exit(1)565758if __name__ == "__main__":59    main()60