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", "lightspeed": "BC6417B8-0ED9-DD48-28BA1463C2C14322", "socaldriversclub": "B4FC0113-C903-E9D3-68562D6765806945", } 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"]) ) try: for event in json_blob["event"]: tracks_we_care_about = ["buttonwillow", "thunderhill"] 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()