150 lines
4.9 KiB
Python
150 lines
4.9 KiB
Python
import math
|
|
from scipy.special import erfinv
|
|
import tbaapiv3client
|
|
from pprint import pprint
|
|
from tbaapiv3client.rest import ApiException
|
|
import json
|
|
from operator import itemgetter
|
|
|
|
|
|
with open('creds', 'r') as file:
|
|
creds = file.read()
|
|
|
|
|
|
team_key = input("please enter the TBA team key")
|
|
|
|
configuration = tbaapiv3client.Configuration(
|
|
host = "https://www.thebluealliance.com/api/v3",
|
|
api_key = {
|
|
'X-TBA-Auth-Key': creds
|
|
}
|
|
)
|
|
|
|
|
|
|
|
with tbaapiv3client.ApiClient(configuration) as api_client:
|
|
# Create an instance of the API class
|
|
api_instance = tbaapiv3client.EventApi(api_client)
|
|
year = 2024 # int | Competition Year (or Season). Must be 4 digits.
|
|
try:
|
|
api_response = api_instance.get_team_events_by_year_simple(team_key, year)
|
|
#print(api_response)
|
|
except ApiException as e:
|
|
print("Exception when calling EventApi->get_team_events_by_year_simple: %s\n" % e)
|
|
|
|
|
|
relevant_events = [event for event in api_response if event.event_type == 0]
|
|
#pprint(relevant_events)
|
|
|
|
|
|
eventkey1 = ((relevant_events[0]).key)
|
|
eventkey2 = ((relevant_events[1]).key)
|
|
|
|
with tbaapiv3client.ApiClient(configuration) as api_client:
|
|
# Create an instance of the API class
|
|
api_instance = tbaapiv3client.EventApi(api_client)
|
|
try:
|
|
event_api_response1 = api_instance.get_team_event_status(team_key, eventkey1)
|
|
#pprint(event_api_response1)
|
|
except ApiException as e:
|
|
print("Exception when calling EventApi->get_event: %s\n" % e)
|
|
with tbaapiv3client.ApiClient(configuration) as api_client:
|
|
# Create an instance of the API class
|
|
api_instance = tbaapiv3client.EventApi(api_client)
|
|
try:
|
|
event_api_response2 = api_instance.get_team_event_status(team_key, eventkey2)
|
|
#pprint(event_api_response2)
|
|
except ApiException as e:
|
|
print("Exception when calling EventApi->get_event: %s\n" % e)
|
|
|
|
|
|
|
|
qualteams1=(event_api_response1.qual.num_teams)
|
|
qualteams2=(event_api_response2.qual.num_teams)
|
|
|
|
qualrank1=(event_api_response1.qual.ranking.rank)
|
|
qualrank2=(event_api_response2.qual.ranking.rank)
|
|
|
|
if event_api_response1.alliance_status_str != "--":
|
|
draft1=(event_api_response1.alliance.pick)
|
|
if event_api_response1.alliance.pick == 0:
|
|
draft1=(event_api_response1.alliance.number)
|
|
if event_api_response2.alliance_status_str != "--":
|
|
draft2=(event_api_response2.alliance.pick)
|
|
if event_api_response2.alliance.pick == 0:
|
|
draft2=(event_api_response2.alliance.number)
|
|
|
|
playwon=3
|
|
won=3
|
|
|
|
if event_api_response1.alliance_status_str != "--":
|
|
if event_api_response1.playoff.status == "won":
|
|
place1=1
|
|
if event_api_response1.playoff.status == "eliminated" and event_api_response1.playoff.level == "f":
|
|
place1=2
|
|
if event_api_response1.playoff.status == "eliminated" and event_api_response1.playoff_status_str == "<b>Eliminated in the Double Elimination Bracket (Round 5)</b> with a playoff record of <b>2-2-0</b>":
|
|
place1=3
|
|
if event_api_response1.playoff.status == "eliminated" and event_api_response1.playoff_status_str == "<b>Eliminated in the Double Elimination Bracket (Round 4)</b> with a playoff record of <b>2-2-0</b>":
|
|
place1=4
|
|
if event_api_response1.alliance_status_str == "--":
|
|
place1=0
|
|
draft1=17
|
|
fwins1=0
|
|
|
|
|
|
if event_api_response2.alliance_status_str != "--":
|
|
if event_api_response2.playoff.status == "won":
|
|
place2=1
|
|
if event_api_response2.playoff.status == "eliminated" and event_api_response2.playoff.level == "f":
|
|
place2=2
|
|
if event_api_response2.playoff.status == "eliminated" and event_api_response2.playoff_status_str == "<b>Eliminated in the Double Elimination Bracket (Round 5)</b> with a playoff record of <b>2-2-0</b>":
|
|
place2=3
|
|
if event_api_response2.playoff.status == "eliminated" and event_api_response2.playoff_status_str == "<b>Eliminated in the Double Elimination Bracket (Round 4)</b> with a playoff record of <b>2-2-0</b>":
|
|
place2=4
|
|
if event_api_response2.alliance_status_str == "--":
|
|
place2=0
|
|
draft2=17
|
|
fwins2=0
|
|
|
|
|
|
|
|
if place1==1 or place1==2:
|
|
placepts1=20
|
|
elif place1 == 3:
|
|
placepts1 = 13
|
|
elif place1 == 4:
|
|
placepts1 = 7
|
|
elif place1 == 0:
|
|
placepts1 = 0
|
|
|
|
if place2==1 or place2==2:
|
|
placepts2=20
|
|
elif place2 == 3:
|
|
placepts2 = 13
|
|
elif place2 == 4:
|
|
placepts2 = 7
|
|
elif place2 == 0:
|
|
placepts2 = 0
|
|
|
|
if event_api_response1.alliance_status_str != "--":
|
|
fwins1=(event_api_response1.playoff.current_level_record.wins)
|
|
if event_api_response2.alliance_status_str != "--":
|
|
fwins2=(event_api_response2.playoff.current_level_record.wins)
|
|
|
|
awardpts=10
|
|
|
|
agepts=0
|
|
|
|
qualpts1 = erfinv((qualteams1-2*qualrank1+2)/(1.07*qualteams1))*((10)/(erfinv(1/1.07)))+12
|
|
qualpts2 = erfinv((qualteams2-2*qualrank2+2)/(1.07*qualteams2))*((10)/(erfinv(1/1.07)))+12
|
|
|
|
DEpts = ((playwon/won)*placepts1+(fwins1*5))+((playwon/won)*placepts2+(fwins2*5))
|
|
|
|
qualpts = qualpts1+qualpts2
|
|
draft = (17-draft1) + (17-draft2)
|
|
|
|
|
|
regional_points = qualpts + (17-draft) + DEpts + awardpts + agepts
|
|
|
|
print(regional_points)
|