Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.21 KB | None | 0 0
  1. mytrains = {}
  2.  
  3. time_trains = {}
  4.  
  5.  
  6. def darwin_checker(departure_station, arrival_station, query_time):
  7.     # global mytrains  # modifies the global copy of mytrains otherwise a new variable is created
  8.     formatted_times = ",".join(query_time)
  9.     response = requests.get("http://huxley.apphb.com/all/" + str(departure_station) + "/to/" + str(arrival_station) + "/" + str(formatted_times), params={"accessToken": jsonToken})
  10.     response.raise_for_status()  # this makes an error if something failed
  11.     data1 = response.json()
  12.     mytrains['departure'] = str(data1['crs'])
  13.     mytrains['arrival'] = str(data1['filtercrs'])
  14.     try:
  15.         found_service = 0
  16.         for index, service in enumerate(data1['trainServices']):
  17.             if service['std'].replace(':', '') in formatted_times:
  18.                 found_service += 1
  19.                 mytrains[index] = {}
  20.                 mytrains[index]['serviceID'] = str(data1['trainServices'][index]['serviceID'])
  21.                 mytrains[index]['arrival_time'] = str(data1['trainServices'][index]['std'])
  22.                 mytrains[index]['estimated_arrival'] = str(data1['trainServices'][index]['eta'])
  23.                 if mytrains[index]['estimated_arrival'] == 'On time':
  24.                     mytrains[index]['status'] = 'On time'
  25.                 if mytrains[index]['estimated_arrival'] != 'On time':
  26.                     mytrains[index]['status'] = 'Delayed'
  27.                 if mytrains[index]['estimated_arrival'] == 'Cancelled':
  28.                     mytrains[index]['status'] = 'Cancelled'
  29.                     mytrains[index]['alternate_service'] = str(data1['trainServices'][index - 1]['std'])
  30.                     mytrains[index]['alternate_status'] = str(data1['trainServices'][index - 1]['eta'])
  31.                 new = {}
  32.                 new['serviceID'] = str(data1['trainServices'][index]['serviceID'])
  33.                 new['arrival_time'] = str(data1['trainServices'][index]['std'])
  34.                 if all([mytrains[i] != new for i in mytrains]):   # catches duplicate entries, if duplicate don't add to index
  35.                     mytrains[index] = new
  36.         if found_service == 0:  # if no service is found
  37.             mytrains['state'] = 'The services currently available are not specified in user_time.'
  38.     except (TypeError, AttributeError) as error:
  39.         mytrains['errorMessage'] = 'There is no train service data'
  40.     try:
  41.         NRCCRegex = re.compile('^(.*?)[\.!\?](?:\s|$)')  # regex pulls all characters until hitting a . or ! or ?
  42.         myline = NRCCRegex.search(data1['nrccMessages'][0]['value'])  # regex searches through nrccMessages
  43.         mytrains['nrcc'] = myline.group(1)  # prints parsed NRCC message
  44.     except (TypeError, AttributeError) as error:  # tuple catches multiple errors, AttributeError for None value
  45.         mytrains['nrcc'] = 'No NRCC'
  46.     return mytrains
  47.  
  48.  
  49. def darwin_time(time_of_day):
  50.     global time_trains
  51.     time_trains = darwin_checker(train_station['work_station'], train_station['connect_station'], user_time[time_of_day])
  52.     return time_trains
  53.  
  54.  
  55. def time_trains_services():
  56.     train_service_data = [j for i, j in time_trains.items() if isinstance(j, dict)]  # grabs train service data into dict
  57.     return train_service_data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement