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

# 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 .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.10.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.10.0
File Size Uploaded
siri_lite-0.10.0.tar.gz 19.5 kB Details

Built distribution (wheel)

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

Total release size: 39.5 kB

Release files / siri_lite-0.10.0.tar.gz

Download URL siri_lite-0.10.0.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
cd42251cecb42538ea60b2228e0db381fb8a7455b4c107204b7ec22a6754986f
BLAKE2b-256 checksum
How to use checksums
f4dea2b95c957c4fcc69d3d27d6cc7c93eb5090bf6071add2913bf536cc526b5
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.10.0-py3-none-any.whl

Download URL siri_lite-0.10.0-py3-none-any.whl
Size 20.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d79eb064ebefd50dbe4504cd874e92e875b0eb9d970c5fa91582ad8b30f93a37
BLAKE2b-256 checksum
How to use checksums
b1e9d83c3e67e35d28d3d42ac32129cdbb722e638f99863a54fadb3a2a234cf5
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

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.0

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