Разбор GTFS в реальном времени для конкретных станций
Я чувствую, что это только на кончике моих пальцев, но я не могу удержать все мысленное моделирование в моей голове (возможно, я немного заржавел на своем питоне).
Я пытаюсь работать с каналом GTFS в реальном времени NYC MTA, чтобы выяснить, когда следующие поезда прибудут на данную станцию. Используя некоторый пример кода, я могу вывести список всех поездов в системе:
from google.transit import gtfs_realtime_pb2
import urllib
#this of stations:
#http://mtaapi.herokuapp.com/stations
target = open('output1.txt', 'w')
feed = gtfs_realtime_pb2.FeedMessage()
response = urllib.urlopen('http://datamine.mta.info/mta_esi.php?key=<APIKEY>&feed_id=21')
feed.ParseFromString(response.read())
for entity in feed.entity:
if entity.HasField('trip_update'):
gold = entity.trip_update.stop_time_update
print gold
target.write(str(gold))
target.close()
Это создает вывод, который выглядит следующим образом:
[arrival {
time: 1506789060
}
departure {
time: 1506789060
}
stop_id: "B19S"
schedule_relationship: SCHEDULED
, arrival {
time: 1506789150
}
departure {
time: 1506789150
}
stop_id: "B20S"
schedule_relationship: SCHEDULED
, arrival {
time: 1506789255
}
departure {
time: 1506789255
}
stop_id: "B21S"
schedule_relationship: SCHEDULED
, arrival {
time: 1506789390
}
departure {
time: 1506789390
}
stop_id: "B22S"
schedule_relationship: SCHEDULED
, arrival {
time: 1506789585
}
departure {
time: 1506789585
}
stop_id: "B23S"
schedule_relationship: SCHEDULED
, . . . ]
Теперь я хочу сузить этот вывод на основе stop_id. Однако я не могу понять, каким должен быть дополнительный бит кода. В основном я хочу "если stop_id = X, печатать время прибытия", но между словарями, вложенными в списки, я не могу до конца добраться. Любые указатели будут высоко оценены.
Спасибо!