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.8.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.8.0
File Size Uploaded
siri_lite-0.8.0.tar.gz 17.2 kB Details

Built distribution (wheel)

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

Total release size: 34.0 kB

Release files / siri_lite-0.8.0.tar.gz

Download URL siri_lite-0.8.0.tar.gz
Size 17.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3c1b59f68b47acbfa53e53cbe557fb6cb6d1aefd09fc38835a7cf3380f51619b
BLAKE2b-256 checksum
How to use checksums
2bc61cf885899e5d7e658d5db7d537e431433fdaf2addabae7ad079b7ae8d522
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.8.0-py3-none-any.whl

Download URL siri_lite-0.8.0-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a5cf3604a66b00454bcc110de0c544a1d73a328939c510a4ef3c42c7ecbd0056
BLAKE2b-256 checksum
How to use checksums
4b9dd9ffbeb415bb6bab17d70107bacab449a9028ac7ac4d6b8cd9fb43322889
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

This release

0.8.0 This release

2 release files

0.7.0

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