Train Traveler
Warning
Train Traveler is currently under construction and is in alpha stage. Use at your own risk. Features and functionality may change.
Train Traveler is a versatile tool for accessing SNCF train information. It provides both a Python module offering a framework to access the SNCF API and an interactive command-line interface (CLI) to retrieve upcoming trains for a specified departure and destination, as well as the last journey of the day.
Table of Contents
Features
- SNCF API Access Framework: Easily interact with the SNCF API to retrieve train information.
- Interactive Command-Line Interface: Quickly get upcoming trains and the last journey of the day via CLI.
- Custom Searches: Specify departure and arrival stations to get precise information.
- Journey History: Check the last journeys of the day.
Installation
-
Clone the GitHub repository:
git clone https://github.com/Matthyeux/train-traveler-api.git
-
Navigate to the project directory:
cd train-traveler-api
Usage
As a Python Module
You can use Train Traveler as a Python module to interact with the SNCF API in your own scripts.
from sncf.connections.connection_manager import ApiConnectionManager
from sncf.repositories.journey_repository import ApiJourneyRepository
from sncf.repositories.stop_area_repository import ApiStopAreaRepository
from sncf.repositories.disruption_repository import ApiDisruptionRepository
from sncf.services.journey_service import JourneyService
connection = ApiConnectionManager(url, api_key, region)
journey_service = JourneyService(
stop_area_repository=ApiStopAreaRepository(connection),
journey_repository=ApiJourneyRepository(connection),
disruption_repository=ApiDisruptionRepository(connection)
)
departure = Area('stop_area:SNCF:87391003', 'Paris - Montparnasse - Hall 1 & 2 (Paris)', 'Paris - Montparnasse - Hall 1 & 2', {'lon': '2.320514', 'lat': '48.841172'})
destination = Area('stop_area:SNCF:87581009', 'Bordeaux Saint-Jean (Bordeaux)', 'Bordeaux Saint-Jean', {'lon': '-0.556697', 'lat': '44.825873'})
next_trains = journey_service.get_direct_journeys(departure, destination, count=2)
last_train = journey_service.get_last_direct_journeys(departure, destination)
As a Command-Line Tool
Train Traveler includes a CLI for quick and interactive use.
train-traveler journey --from Paris --to Bordeaux --max-journeys 2
train-traveler journey --from Paris --to Bordeaux --last-journey
Configuration
To use the SNCF API, you need to obtain an API key from the SNCF Developer Portal.
Set your API key by defining the url
, region
and api_key
, in config/auth.yml or by setting:
export SNCF_API_URL='https://api.sncf.com/v1'
export SNCF_API_REGION='sncf'
export SNCF_API_KEY='your_api_key'
Contributing
Contributions are welcome! Please submit a pull request or open an issue to discuss the changes you want to make.
Fork the project
Create your feature branch (git checkout -b feature/AmazingFeature)
Commit your changes (git commit -m 'Add some AmazingFeature')
Push to the branch (git push origin feature/AmazingFeature)
Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.