mirror of
https://github.com/home-assistant/core.git
synced 2025-07-07 21:37:07 +00:00
Cleanup GTFS query (#20874)
This commit is contained in:
parent
9db9a81793
commit
a014c2be59
@ -65,22 +65,20 @@ def get_next_departure(sched, start_station_id, end_station_id, offset):
|
||||
|
||||
sql_query = text("""
|
||||
SELECT trip.trip_id, trip.route_id,
|
||||
time(origin_stop_time.departure_time),
|
||||
time(destination_stop_time.arrival_time),
|
||||
time(origin_stop_time.arrival_time),
|
||||
time(origin_stop_time.departure_time),
|
||||
origin_stop_time.drop_off_type,
|
||||
origin_stop_time.pickup_type,
|
||||
origin_stop_time.shape_dist_traveled,
|
||||
origin_stop_time.stop_headsign,
|
||||
origin_stop_time.stop_sequence,
|
||||
time(destination_stop_time.arrival_time),
|
||||
time(destination_stop_time.departure_time),
|
||||
destination_stop_time.drop_off_type,
|
||||
destination_stop_time.pickup_type,
|
||||
destination_stop_time.shape_dist_traveled,
|
||||
destination_stop_time.stop_headsign,
|
||||
destination_stop_time.stop_sequence
|
||||
time(origin_stop_time.arrival_time) AS origin_arrival_time,
|
||||
time(origin_stop_time.departure_time) AS origin_depart_time,
|
||||
origin_stop_time.drop_off_type AS origin_drop_off_type,
|
||||
origin_stop_time.pickup_type AS origin_pickup_type,
|
||||
origin_stop_time.shape_dist_traveled AS origin_shape_dist_traveled,
|
||||
origin_stop_time.stop_headsign AS origin_stop_headsign,
|
||||
origin_stop_time.stop_sequence AS origin_stop_sequence,
|
||||
time(destination_stop_time.arrival_time) AS dest_arrival_time,
|
||||
time(destination_stop_time.departure_time) AS dest_depart_time,
|
||||
destination_stop_time.drop_off_type AS dest_drop_off_type,
|
||||
destination_stop_time.pickup_type AS dest_pickup_type,
|
||||
destination_stop_time.shape_dist_traveled AS dest_dist_traveled,
|
||||
destination_stop_time.stop_headsign AS dest_stop_headsign,
|
||||
destination_stop_time.stop_sequence AS dest_stop_sequence
|
||||
FROM trips trip
|
||||
INNER JOIN calendar calendar
|
||||
ON trip.service_id = calendar.service_id
|
||||
@ -93,13 +91,14 @@ def get_next_departure(sched, start_station_id, end_station_id, offset):
|
||||
INNER JOIN stops end_station
|
||||
ON destination_stop_time.stop_id = end_station.stop_id
|
||||
WHERE calendar.{day_name} = 1
|
||||
AND time(origin_stop_time.departure_time) > time(:now_str)
|
||||
AND origin_depart_time > time(:now_str)
|
||||
AND start_station.stop_id = :origin_station_id
|
||||
AND end_station.stop_id = :end_station_id
|
||||
AND origin_stop_time.stop_sequence < destination_stop_time.stop_sequence
|
||||
AND origin_stop_sequence < dest_stop_sequence
|
||||
AND calendar.start_date <= :today
|
||||
AND calendar.end_date >= :today
|
||||
ORDER BY origin_stop_time.departure_time LIMIT 1;
|
||||
ORDER BY origin_stop_time.departure_time
|
||||
LIMIT 1
|
||||
""".format(day_name=day_name))
|
||||
result = sched.engine.execute(sql_query, now_str=now_str,
|
||||
origin_station_id=origin_station.id,
|
||||
@ -112,46 +111,46 @@ def get_next_departure(sched, start_station_id, end_station_id, offset):
|
||||
if item == {}:
|
||||
return None
|
||||
|
||||
departure_time_string = '{} {}'.format(today, item[2])
|
||||
arrival_time_string = '{} {}'.format(today, item[3])
|
||||
departure_time = datetime.datetime.strptime(departure_time_string,
|
||||
TIME_FORMAT)
|
||||
arrival_time = datetime.datetime.strptime(arrival_time_string,
|
||||
TIME_FORMAT)
|
||||
origin_arrival_time = '{} {}'.format(today, item['origin_arrival_time'])
|
||||
origin_depart_time = '{} {}'.format(today, item['origin_depart_time'])
|
||||
dest_arrival_time = '{} {}'.format(today, item['dest_arrival_time'])
|
||||
dest_depart_time = '{} {}'.format(today, item['dest_depart_time'])
|
||||
|
||||
seconds_until = (departure_time-datetime.datetime.now()).total_seconds()
|
||||
depart_time = datetime.datetime.strptime(origin_depart_time, TIME_FORMAT)
|
||||
arrival_time = datetime.datetime.strptime(dest_arrival_time, TIME_FORMAT)
|
||||
|
||||
seconds_until = (depart_time - datetime.datetime.now()).total_seconds()
|
||||
minutes_until = int(seconds_until / 60)
|
||||
|
||||
route = sched.routes_by_id(item[1])[0]
|
||||
|
||||
origin_stoptime_arrival_time = '{} {}'.format(today, item[4])
|
||||
origin_stoptime_departure_time = '{} {}'.format(today, item[5])
|
||||
dest_stoptime_arrival_time = '{} {}'.format(today, item[11])
|
||||
dest_stoptime_depart_time = '{} {}'.format(today, item[12])
|
||||
route = sched.routes_by_id(item['route_id'])[0]
|
||||
|
||||
origin_stop_time_dict = {
|
||||
'Arrival Time': origin_stoptime_arrival_time,
|
||||
'Departure Time': origin_stoptime_departure_time,
|
||||
'Drop Off Type': item[6], 'Pickup Type': item[7],
|
||||
'Shape Dist Traveled': item[8], 'Headsign': item[9],
|
||||
'Sequence': item[10]
|
||||
'Arrival Time': origin_arrival_time,
|
||||
'Departure Time': origin_depart_time,
|
||||
'Drop Off Type': item['origin_drop_off_type'],
|
||||
'Pickup Type': item['origin_pickup_type'],
|
||||
'Shape Dist Traveled': item['origin_shape_dist_traveled'],
|
||||
'Headsign': item['origin_stop_headsign'],
|
||||
'Sequence': item['origin_stop_sequence']
|
||||
}
|
||||
|
||||
destination_stop_time_dict = {
|
||||
'Arrival Time': dest_stoptime_arrival_time,
|
||||
'Departure Time': dest_stoptime_depart_time,
|
||||
'Drop Off Type': item[13], 'Pickup Type': item[14],
|
||||
'Shape Dist Traveled': item[15], 'Headsign': item[16],
|
||||
'Sequence': item[17]
|
||||
'Arrival Time': dest_arrival_time,
|
||||
'Departure Time': dest_depart_time,
|
||||
'Drop Off Type': item['dest_drop_off_type'],
|
||||
'Pickup Type': item['dest_pickup_type'],
|
||||
'Shape Dist Traveled': item['dest_dist_traveled'],
|
||||
'Headsign': item['dest_stop_headsign'],
|
||||
'Sequence': item['dest_stop_sequence']
|
||||
}
|
||||
|
||||
return {
|
||||
'trip_id': item[0],
|
||||
'trip': sched.trips_by_id(item[0])[0],
|
||||
'trip_id': item['trip_id'],
|
||||
'trip': sched.trips_by_id(item['trip_id'])[0],
|
||||
'route': route,
|
||||
'agency': sched.agencies_by_id(route.agency_id)[0],
|
||||
'origin_station': origin_station,
|
||||
'departure_time': departure_time,
|
||||
'departure_time': depart_time,
|
||||
'destination_station': destination_station,
|
||||
'arrival_time': arrival_time,
|
||||
'seconds_until_departure': seconds_until,
|
||||
|
Loading…
x
Reference in New Issue
Block a user