71 lines
2.4 KiB
Python
Executable File
71 lines
2.4 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=95035&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()
|