Spaces:
Sleeping
Sleeping
import requests | |
from datetime import datetime | |
import pytz | |
def get_station_departures(api_key, station_id): | |
""" | |
Récupère les prochains départs d'une gare spécifique | |
""" | |
headers = { | |
'Authorization': api_key | |
} | |
# On utilise l'API des départs pour la gare spécifique | |
url = f'https://api.navitia.io/v1/coverage/sncf/stop_points/{station_id}/departures' | |
try: | |
response = requests.get(url, headers=headers) | |
response.raise_for_status() | |
data = response.json() | |
departures = [] | |
for departure in data.get('departures', []): | |
# On extrait les informations pertinentes | |
departure_time = departure['stop_date_time']['departure_date_time'] | |
direction = departure['display_informations']['direction'] | |
line_name = departure['display_informations']['commercial_mode'] | |
headsign = departure['display_informations']['headsign'] | |
# Conversion du temps de départ | |
dt = datetime.strptime(departure_time, "%Y%m%dT%H%M%S") | |
paris_tz = pytz.timezone('Europe/Paris') | |
dt = paris_tz.localize(dt) | |
formatted_time = dt.strftime("%H:%M") | |
departures.append({ | |
'time': formatted_time, | |
'direction': direction, | |
'type': line_name, | |
'train_number': headsign | |
}) | |
return departures | |
except requests.exceptions.RequestException as e: | |
print(f"Erreur lors de la récupération des départs: {e}") | |
return [] | |
def get_all_departures(api_key): | |
""" | |
Récupère les départs des deux gares principales de Lille | |
""" | |
# IDs des gares de Lille | |
stations = { | |
'Lille Europe': 'stop_point:SNCF:87223263:Train', | |
'Lille Flandres': 'stop_point:SNCF:87286005:Train' | |
} | |
all_departures = {} | |
for station_name, station_id in stations.items(): | |
departures = get_station_departures(api_key, station_id) | |
all_departures[station_name] = departures | |
return all_departures | |