dragon-bot/app/trackdays.py

79 lines
2.7 KiB
Python
Executable File

from datetime import datetime
import json
import requests
import xmltodict
def get_msreg():
base_url = "https://api.motorsportreg.com/rest/calendars/organization"
orgs = {
# "speeddistrict": "2E22740B-E8C9-9FB9-21406A496429A28B",
"ongrid": "06277C99-00C9-23EB-FD08FE5275BCC0C5",
"speedsf": "072A885E-AD68-6F64-E88C19E4D0D21DFB",
# "turn8": "F3469266-BEFF-E329-4FD6C4B189ACE2A8",
"speedventures": "DF7453ED-BF33-DC17-2C9BFD84C1F05E86",
"nextlevel": "CC23AEA4-AAB1-D087-4A10818D229DAFD2",
"corsaclub": "CE6E69CF-BAEC-DBB6-303EE7D3EC69B8A3",
}
events = {}
for org_name, org_id in orgs.items():
xml_blob = requests.get(
"%s/%s?exclude_cancelled=true&postalcode=94549&radius=500"
% (base_url, org_id)
).text
json_blob = json.loads(
json.dumps(xmltodict.parse(xml_blob)["response"]["events"])
)
for event in json_blob["event"]:
tracks_we_care_about = ["buttonwillow", "thunderhill"]
try:
if any(x in event["name"].lower() for x in tracks_we_care_about):
event_object = {
"event_name": event["name"],
"event_url": event["detailuri"].split("?utm")[0],
"event_date": event["start"],
}
track = event["venue"]["name"]
if track not in events:
events[track] = []
events[track].append(event_object)
except TypeError:
pass
# sort track events by date
def date_to_datetime(input):
return datetime.strptime(input["event_date"], "%Y-%m-%d")
for races in events.values():
sorted(races, key=date_to_datetime)
return events
def get_corsa_club():
base_url = "https://corsa.club"
events = {}
products_blob = requests.get(base_url + "/products.json").json()["products"]
for event in products_blob:
# Filter out hoodies and what not, only care about track days that list run-groups as the options
if any("Intermediate" in s for s in event["options"][0]["values"]):
# pp.pprint(event)
event_object = {
"event_name": event["title"],
"event_url": base_url + "/products/" + event["handle"],
"event_date": event["title"].split()[-1],
}
track = " ".join(event["title"].split()[0:-1])
try:
if track not in events:
events[track] = []
events[track].append(event_object)
except TypeError:
pass
return events
# if __name__ == '__main__':
# get_corsa_club()