Application Streamlit pour suivre en temps réel les trains entre Nice Riquier et Monaco Monte Carlo, avec visualisation des horaires et alertes e-mail en cas de retard.
Vous pourrez trouver l'application ici : https://my-zou-way.streamlit.app/
L’application permet de :
- Suivre les trajets TER dans les deux sens (Nice ⇄ Monaco)
- Être alerté par e-mail en cas de retard ou perturbation
- Visualiser les horaires de départs/arrivées dans une interface de type tableau de gare
Les données proviennent de l’API SNCF (Navitia) :
https://api.sncf.com/
Cette API permet d’accéder en temps réel aux horaires, retards, causes de perturbations, etc.
- 🐍 Python 3.10+
- ⚡ Streamlit
- 📡 API SNCF
- 📬 Gmail API (OAuth 2.0)
- 🧪 Pandas, Requests
- 🔒
python-dotenv
pour la gestion des secrets - 🚀
uv
pour l’installation rapide des dépendances
- Cloner le dépôt :
git clone https://github.com/Mastocodeur/sncf-project.git
cd sncf-project
uv venv
source .venv/bin/activate
uv pip install -r pyproject.toml
- Ajouter un fichier .env à la racine :
SNCF_API_KEY=ta_cle_api_sncf
[email protected]
- Placer le fichier
credentials.json
(Gmail OAuth) à la racine
- Accéder à Google Cloud Console
- Créer un nouveau projet (ex. : sncf-project)
- Menu > API & Services > Bibliothèque
- Rechercher Gmail API → Activer
- Menu > Identifiants > Créer des identifiants > ID client OAuth
- Type d'application : Application de bureau
- Télécharger le fichier
.json
et le renommer encredentials.json
Dans la configuration OAuth, ajouter les URI suivantes :
Créer un fichier src/authenticate_gmail.py :
from google_auth_oauthlib.flow import InstalledAppFlow
import pickle
SCOPES = ['https://www.googleapis.com/auth/gmail.send']
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=8083)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
print("✅ Token enregistré sous token.pickle")
Exécuter une seule fois :
python src/authenticate_gmail.py
Une URL de validation s’affichera dans le terminal : ouvrir dans un navigateur, autoriser, et le token sera généré.
- Accéder à Écran de consentement OAuth
- Ajouter l’adresse Gmail utilisée dans la section Utilisateurs testeurs
streamlit run src/main.py
notebooks/01_exploration_api_sncf.ipynb
:
- Recherche de gares par nom
- Récupération de trajets
- Analyse des horaires, retards, perturbations
- Exploration via pandas
notebooks/02_gmail.ipynb
:
- Test de l’authentification Gmail
- Envoi d’e-mails via l’API
En cas de retard détecté, un e-mail est envoyé automatiquement grâce à l’API Gmail.
L'adresse destinataire est configurable via EMAIL_DEST
dans le fichier .env
.