Skip to main content

SIRI-lite

SIRI-lite

Dhrions Version 0.5.0, 12/08/2026

Outil Python pour interroger des API de transport en commun compatibles SIRI-lite

Documentation · Issues

⚡ TL;DR

  • 🚌 Interroge des API de transport en commun compatibles SIRI-lite pour les prochains passages et le temps restant avant arrivée
  • 🎯 Pour qui : usage personnel, intégrations (ex. Home Assistant)
  • 🚀 siri-lite stop-monitoring --service CTS --stop-code 43A --token YOUR_TOKEN --print

Le projet fournit :

  • 🖥️ une CLI (ligne de commande),
  • 🌐 une interface web minimale (Flask),
  • 🔗 une base solide pour des intégrations (ex. Home Assistant).

📋 Table des matières


✨ Fonctionnalités principales

  • ⏱️ Récupération du temps restant avant l'arrivée d'un véhicule à un arrêt
  • 🚌 Support de plusieurs réseaux (ex. CTS, PRIM / Île-de-France Mobilités)
  • 📤 Sortie console, fichier JSON ou intégration applicative
  • 📦 Exécution locale ou via Docker
  • 📚 Documentation complète générée avec Antora

🚀 Installation rapide

Environnement Python

python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"

Configuration

Copier .env.example vers .env (fichier réellement ignoré par git, contrairement à .env.example qui n'est qu'un gabarit) et y renseigner les paramètres du service utilisé :

CTS_BASE_API_URL=https://api.cts-strasbourg.eu/
CTS_AUTH_METH=Basic Auth
PRIM_BASE_API_URL=https://prim.iledefrance-mobilites.fr/
PRIM_AUTH_METH=apiKey
STOP_MONITORING_ENDPOINT=siri/2.0/stop-monitoring?MonitoringRef=

Ces mêmes valeurs peuvent aussi être fournies via services.conf, résolu en suivant la spec XDG Base Directory (--config, puis $XDG_CONFIG_HOME/siri-lite/, puis ~/.siri-lite/, puis le répertoire courant) — voir la documentation Antora pour le détail. Les tokens, eux, ne doivent jamais être commités ; ils se passent via --token (CLI) ou {SERVICE}_TOKEN (interface web, ex. CTS_TOKEN ou PRIM_TOKEN selon le paramètre ?service=).


💻 Utilisation (CLI)

Exemple avec le service CTS :

siri-lite stop-monitoring \
  --service CTS \
  --stop-code 43A \
  --token YOUR_TOKEN \
  --print

Exemple avec PRIM :

siri-lite stop-monitoring \
  --service PRIM \
  --stop-code STIF%3AStopPoint%3AQ%3A473921%3A \
  --token YOUR_TOKEN \
  --print

Options

Option Description
--service Réseau de transport (CTS ou PRIM)
--stop-code Code de l'arrêt à interroger
--token Token d'authentification de l'API
--print Affiche le résultat sur la sortie standard
--unit Unité du temps restant (minutes ou seconds, défaut minutes)
-c, --count Nombre de prochains passages à afficher (défaut 1 : un entier ; au-delà, une liste)
-o, --output Écrit le résultat au format JSON dans le fichier indiqué
--config Chemin explicite vers services.conf (voir section Configuration ci-dessus)
-d, --debug Active les logs de debug

Recherche d'arrêts PRIM

siri-lite stops-discovery "Châtelet" --print
Option Description
QUERY Nom d'arrêt à rechercher (sous-chaîne, insensible à la casse/accents)
--print Affiche le résultat sur la sortie standard
-l, --limit Nombre maximal d'arrêts affichés (défaut 10)
--refresh Force le retéléchargement du jeu de données (sinon mis en cache)
--cache Chemin explicite du fichier de cache (défaut : $XDG_CACHE_HOME/siri-lite/)
-o, --output Écrit le résultat au format JSON dans le fichier indiqué
-d, --debug Active les logs de debug

⚠️ Cette commande aide à retrouver un arrêt PRIM (nom, commune, lignes), mais ne renvoie pas un code garanti utilisable tel quel avec stop-monitoring — voir la documentation Antora (PRIM → Arrêts) pour le détail de cette limite.


📦 Utilisation avec Docker

docker build -t siri-lite .
docker run --env-file .env siri-lite stop-monitoring \
  --service CTS \
  --stop-code 43A \
  --token YOUR_TOKEN

🧪 Tests

# Tous les tests
pytest tests/

# Un fichier spécifique
pytest tests/test_models.py

# Avec couverture
coverage run -m pytest tests/ && coverage report

🏗️ Architecture

Structure plate et simple :

src/siri_lite/
├── cli.py             # Commandes CLI (Click)
├── web.py             # Interface web (Flask)
├── services.py        # Logique métier
├── siri_client.py     # Client API SIRI + parsing
├── models.py          # Modèles de données (DTOs)
├── http_client.py     # Client HTTP générique (requests)
├── config.py          # Chargement configuration
├── main.py            # Point d'entrée
└── logging_config.py  # Configuration du logging

📚 Documentation complète

La documentation détaillée (architecture, services supportés, exemples, intégration Home Assistant, etc.) est disponible via Antora :

antora antora-playbook.yml

Sources de la documentation : docs/


⚠️ Sécurité

  • Les fichiers .env et .secrets ne doivent jamais être versionnés
  • Les tokens visibles dans l'historique doivent être considérés comme compromis et régénérés

📄 Licence

Projet personnel – licence à définir.

Metadata

Release files for siri-lite 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for siri-lite 0.7.0
File Size Uploaded
siri_lite-0.7.0.tar.gz 17.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for siri-lite 0.7.0
File Interpreter ABI Platform
siri_lite-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.5 kB

Release files / siri_lite-0.7.0.tar.gz

Download URL siri_lite-0.7.0.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f7ae260ec29049d771c46f4ecf6a42a8f1f29987c593734ab1b382e605ee4e75
BLAKE2b-256 checksum
How to use checksums
ba017a414e3a4024fb295bba98b7fcd732b20622c4ef24b329298e9453ed26db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / siri_lite-0.7.0-py3-none-any.whl

Download URL siri_lite-0.7.0-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b0409511cb2fbaf89e7692455351b7f31378f5073f3bb563360e61f0f6385b43
BLAKE2b-256 checksum
How to use checksums
81964a7fea7e213e7014a1895ee0617735166c3997973201dca566c44e5e108b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page