Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mytrains = {}
- time_trains = {}
- def darwin_checker(departure_station, arrival_station, query_time):
- # global mytrains # modifies the global copy of mytrains otherwise a new variable is created
- formatted_times = ",".join(query_time)
- response = requests.get("http://huxley.apphb.com/all/" + str(departure_station) + "/to/" + str(arrival_station) + "/" + str(formatted_times), params={"accessToken": jsonToken})
- response.raise_for_status() # this makes an error if something failed
- data1 = response.json()
- mytrains['departure'] = str(data1['crs'])
- mytrains['arrival'] = str(data1['filtercrs'])
- try:
- found_service = 0
- for index, service in enumerate(data1['trainServices']):
- if service['std'].replace(':', '') in formatted_times:
- found_service += 1
- mytrains[index] = {}
- mytrains[index]['serviceID'] = str(data1['trainServices'][index]['serviceID'])
- mytrains[index]['arrival_time'] = str(data1['trainServices'][index]['std'])
- mytrains[index]['estimated_arrival'] = str(data1['trainServices'][index]['eta'])
- if mytrains[index]['estimated_arrival'] == 'On time':
- mytrains[index]['status'] = 'On time'
- if mytrains[index]['estimated_arrival'] != 'On time':
- mytrains[index]['status'] = 'Delayed'
- if mytrains[index]['estimated_arrival'] == 'Cancelled':
- mytrains[index]['status'] = 'Cancelled'
- mytrains[index]['alternate_service'] = str(data1['trainServices'][index - 1]['std'])
- mytrains[index]['alternate_status'] = str(data1['trainServices'][index - 1]['eta'])
- new = {}
- new['serviceID'] = str(data1['trainServices'][index]['serviceID'])
- new['arrival_time'] = str(data1['trainServices'][index]['std'])
- if all([mytrains[i] != new for i in mytrains]): # catches duplicate entries, if duplicate don't add to index
- mytrains[index] = new
- if found_service == 0: # if no service is found
- mytrains['state'] = 'The services currently available are not specified in user_time.'
- except (TypeError, AttributeError) as error:
- mytrains['errorMessage'] = 'There is no train service data'
- try:
- NRCCRegex = re.compile('^(.*?)[\.!\?](?:\s|$)') # regex pulls all characters until hitting a . or ! or ?
- myline = NRCCRegex.search(data1['nrccMessages'][0]['value']) # regex searches through nrccMessages
- mytrains['nrcc'] = myline.group(1) # prints parsed NRCC message
- except (TypeError, AttributeError) as error: # tuple catches multiple errors, AttributeError for None value
- mytrains['nrcc'] = 'No NRCC'
- return mytrains
- def darwin_time(time_of_day):
- global time_trains
- time_trains = darwin_checker(train_station['work_station'], train_station['connect_station'], user_time[time_of_day])
- return time_trains
- def time_trains_services():
- train_service_data = [j for i, j in time_trains.items() if isinstance(j, dict)] # grabs train service data into dict
- return train_service_data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement