SIRI-lite
Dhrions Version 0.5.0, 12/08/2026
Outil Python pour interroger des API de transport en commun compatibles SIRI-lite
⚡ 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
- ⚡ TL;DR
- ✨ Fonctionnalités principales
- 🚀 Installation rapide
- 💻 Utilisation (CLI)
- 📦 Utilisation avec Docker
- 🧪 Tests
- 🏗️ Architecture
- 📚 Documentation complète
- ⚠️ Sécurité
- 📄 Licence
✨ 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) |
--format |
Forme de la sortie : minutes (temps restants seuls, défaut) ou json (détail par passage : ligne, destination, sens) |
--resolve-lines |
Avec --format json, complète les published_line_name vides avec le nom court de ligne (13, 58…) résolu depuis le référentiel ouvert IDFM (mis en cache localement) |
-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
# Backend static (défaut) : sans token, métadonnées seulement
siri-lite stops-discovery "Châtelet" --print
# Backend icar (recommandé) : token requis, MonitoringRef candidat
siri-lite stops-discovery "Châtelet" --backend icar --token "$PRIM_TOKEN" --print
| Option | Description |
|---|---|
QUERY |
Nom d'arrêt à rechercher (sous-chaîne, insensible à la casse/accents) |
--backend |
static (défaut, sans token) ou icar (référentiel ICAR, --token requis) |
--token |
Token PRIM, requis pour --backend icar |
--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 |
⚠️ Le backend static aide à retrouver un arrêt PRIM (nom, commune,
lignes) sans code garanti utilisable avec stop-monitoring. Le backend
icar affiche un MonitoringRef candidat (même espace d'identifiants que
SIRI, vérifié empiriquement), mais son premier appel télécharge ~120 Mo
(~30 s, pas de recherche par nom côté API ICAR). Voir la documentation
Antora (PRIM → Arrêts) pour le détail.
📦 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
.envet.secretsne 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.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| siri_lite-0.13.0.tar.gz | 23.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| siri_lite-0.13.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.2 kB
Release files / siri_lite-0.13.0.tar.gz
| Download URL | siri_lite-0.13.0.tar.gz |
|---|---|
| Size | 23.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1981dadece043335b76b359bbdf8ce0f2d955dd46e72c06454344fa503585d8
|
|
BLAKE2b-256 checksum How to use checksums |
4f4d91b99eec7f22c6f0a97547cbe1a08aa80af70602cfff90102ece071ad355
|
| 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.13.0-py3-none-any.whl
| Download URL | siri_lite-0.13.0-py3-none-any.whl |
|---|---|
| Size | 24.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e38dd12f01942e5ffb7d39afa313063122da843506ddd9bde773b3a4fdda363
|
|
BLAKE2b-256 checksum How to use checksums |
0485f22ceec204ee202da74378ade22107d4ce336e810844a2043f70763e39d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|