[server]: Add average punctuality to transient_data
This commit is contained in:
@ -21,6 +21,18 @@ timestamp = int(time.time())
|
|||||||
|
|
||||||
# API URLs
|
# API URLs
|
||||||
irishrail_url = "http://api.irishrail.ie/realtime/realtime.asmx/"
|
irishrail_url = "http://api.irishrail.ie/realtime/realtime.asmx/"
|
||||||
|
punctuality_api_url = "https://fv7l6v5he4.execute-api.us-east-1.amazonaws.com/return_punctuality_by_objectID"
|
||||||
|
|
||||||
|
def fetch_punctuality_data():
|
||||||
|
"""
|
||||||
|
Fetches punctuality data for trains from an external API.
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary mapping objectID to average punctuality.
|
||||||
|
"""
|
||||||
|
response = session.get(punctuality_api_url)
|
||||||
|
response.raise_for_status()
|
||||||
|
punctuality_data = response.json()
|
||||||
|
return {item["objectID"]: int(item["average_punctuality"]) for item in punctuality_data}
|
||||||
|
|
||||||
def fetch_trains():
|
def fetch_trains():
|
||||||
"""
|
"""
|
||||||
@ -41,10 +53,13 @@ def fetch_trains():
|
|||||||
trains_xml = response.text
|
trains_xml = response.text
|
||||||
trains_json = xmltodict.parse(trains_xml)
|
trains_json = xmltodict.parse(trains_xml)
|
||||||
|
|
||||||
|
punctuality_data = fetch_punctuality_data()
|
||||||
|
|
||||||
for train in trains_json["ArrayOfObjTrainPositions"]["objTrainPositions"]:
|
for train in trains_json["ArrayOfObjTrainPositions"]["objTrainPositions"]:
|
||||||
train_code = str(train["TrainCode"])
|
train_code = str(train["TrainCode"])
|
||||||
train_status = train["TrainStatus"]
|
train_status = train["TrainStatus"]
|
||||||
public_message = train["PublicMessage"]
|
public_message = train["PublicMessage"]
|
||||||
|
avg_punctuality = punctuality_data.get("IrishRailTrain-" + train_code, 0) # Default to 0 if not found
|
||||||
|
|
||||||
split_message = public_message.split("\\n")
|
split_message = public_message.split("\\n")
|
||||||
trainDetails = split_message[1].split("(")[0]
|
trainDetails = split_message[1].split("(")[0]
|
||||||
@ -94,7 +109,8 @@ def fetch_trains():
|
|||||||
"trainPunctualityStatus": punctuality_status,
|
"trainPunctualityStatus": punctuality_status,
|
||||||
"latenessMessage": lateness_message,
|
"latenessMessage": lateness_message,
|
||||||
"trainDetails": trainDetails,
|
"trainDetails": trainDetails,
|
||||||
"trainUpdate": trainUpdate
|
"trainUpdate": trainUpdate,
|
||||||
|
"averagePunctuality": avg_punctuality
|
||||||
})
|
})
|
||||||
|
|
||||||
return trains
|
return trains
|
||||||
|
Reference in New Issue
Block a user