-
Notifications
You must be signed in to change notification settings - Fork 0
/
trainInfo.py
66 lines (55 loc) · 2.29 KB
/
trainInfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import requests
import sys
from lines import lines
def getAllTrainsMatchingCriteria(line, direction, trainId):
# Returns a list of all trains that meet the user's search criteria.
print('Search Criteria: ' + line + ' ' + direction)
# Make API Call
url = 'http://realtime.mbta.com/developer/api/v2/vehiclesbyroute?api_key=DXxEHBSTPEKF4sFlsamMaw&route=CR-'+line+'&format=json'
try:
response = (requests.get(url)).json()
except ConnectionError:
print('Unable to connect to API endpoint at realtime.mbta.com')
# Parse Data
for trip in response['direction']:
if trip['direction_name'] == direction:
trains = []
for train in trip['trip']:
trains.append(train)
print('\nFound Train:')
print(train)
print('Found ' + str(len(trains)) + ' train(s) matching the search criteria.')
if trainId != '000':
print ('Searching for ID: ' + trainId)
for train in trains:
tripId = train['trip_id'].split('-')[-1]
if trainId == tripId:
print(train)
return train
else:
return trains
def getTrainCoordinates(train):
# Takes a train object from getAllTrainsMatchingCriteria(), and returns its coordinates
lat = train['vehicle']['vehicle_lat']
lon = train['vehicle']['vehicle_lon']
return lat,lon
def getAllTrains():
trains = []
for line in lines():
print(line[0])
# Make API Calls
url = 'http://realtime.mbta.com/developer/api/v2/vehiclesbyroute?api_key=DXxEHBSTPEKF4sFlsamMaw&route=CR-'+line[0]+'&format=json'
try:
response = (requests.get(url)).json()
except ConnectionError:
print('Unable to connect to API endpoint at realtime.mbta.com')
if 'error' in response:
print('No trains on line: ' + line[0])
else:
for direction in response['direction']:
for train in direction['trip']:
trains.append(train)
print('\nFound Train:')
print(train)
print('Found ' + str(len(trains)) + ' train(s) matching the search criteria.')
return trains