from datetime import datetime import json import pprint 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', #'corsaclub' : 'CE6E69CF-BAEC-DBB6-303EE7D3EC69B8A3', } events = {} for org_name, org_id in orgs.items(): xml_blob = requests.get("%s/%s?exclude_cancelled=true&postalcode=95035&radius=500" % (base_url, org_id)).text json_blob = json.loads(json.dumps(xmltodict.parse(xml_blob)['response']['events'])) pp = pprint.PrettyPrinter(indent=4) 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_datettime(input): return datetime.strptime(input['event_date'], '%Y-%m-%d') for races in events.values(): sorted(races, key=date_to_datettime) return events # if __name__ == '__main__': # get_msreg()