beautified

This commit is contained in:
ltcptgeneral 2019-04-03 13:34:31 -05:00
parent 2802d8572c
commit 493b9b19b2
2 changed files with 234 additions and 203 deletions

View File

@ -1,7 +1,7 @@
#Titan Robotics Team 2022: Super Script # Titan Robotics Team 2022: Super Script
#Written by Arthur Lu & Jacob Levine # Written by Arthur Lu & Jacob Levine
#Notes: # Notes:
#setup: # setup:
__version__ = "1.0.6.001" __version__ = "1.0.6.001"
@ -43,7 +43,7 @@ __changelog__ = """changelog:
__author__ = ( __author__ = (
"Arthur Lu <arthurlu@ttic.edu>, " "Arthur Lu <arthurlu@ttic.edu>, "
"Jacob Levine <jlevine@ttic.edu>," "Jacob Levine <jlevine@ttic.edu>,"
) )
import firebase_admin import firebase_admin
from firebase_admin import credentials from firebase_admin import credentials
@ -60,6 +60,7 @@ import time
import tbarequest as tba import tbarequest as tba
import csv import csv
def titanservice(): def titanservice():
print("[OK] loading data") print("[OK] loading data")
@ -67,15 +68,16 @@ def titanservice():
start = time.time() start = time.time()
source_dir = 'data' source_dir = 'data'
file_list = glob.glob(source_dir + '/*.csv') #supposedly sorts by alphabetical order, skips reading teams.csv because of redundancy # supposedly sorts by alphabetical order, skips reading teams.csv because of redundancy
file_list = glob.glob(source_dir + '/*.csv')
data = [] data = []
files = [fn for fn in glob.glob('data/*.csv') files = [fn for fn in glob.glob('data/*.csv')
if not (os.path.basename(fn).startswith('scores') or os.path.basename(fn).startswith('teams') or os.path.basename(fn).startswith('match') or os.path.basename(fn).startswith('notes') or os.path.basename(fn).startswith('observationType') or os.path.basename(fn).startswith('teamDBRef'))] #scores will be handled sperately if not (os.path.basename(fn).startswith('scores') or os.path.basename(fn).startswith('teams') or os.path.basename(fn).startswith('match') or os.path.basename(fn).startswith('notes') or os.path.basename(fn).startswith('observationType') or os.path.basename(fn).startswith('teamDBRef'))] # scores will be handled sperately
for i in files: for i in files:
data.append(analysis.load_csv(i)) data.append(analysis.load_csv(i))
#print(files) # print(files)
stats = [] stats = []
measure_stats = [] measure_stats = []
@ -86,111 +88,113 @@ def titanservice():
print("[OK] loaded data in " + str(end - start) + " seconds") print("[OK] loaded data in " + str(end - start) + " seconds")
#assumes that team number is in the first column, and that the order of teams is the same across all files # assumes that team number is in the first column, and that the order of teams is the same across all files
#unhelpful comment # unhelpful comment
for measure in data: #unpacks 3d array into 2ds for measure in data: # unpacks 3d array into 2ds
measure_stats = [] measure_stats = []
for i in range(len(measure)): #unpacks into specific teams for i in range(len(measure)): # unpacks into specific teams
#ofbest_curve = [None] #ofbest_curve = [None]
#r2best_curve = [None] #r2best_curve = [None]
line = measure[i] line = measure[i]
#print(line) # print(line)
#x = list(range(len(line))) #x = list(range(len(line)))
#eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1) #eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1)
#beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit") #beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit")
#print(eqs, rmss, r2s, overfit) #print(eqs, rmss, r2s, overfit)
#ofbest_curve.append(beqs) # ofbest_curve.append(beqs)
#ofbest_curve.append(brmss) # ofbest_curve.append(brmss)
#ofbest_curve.append(br2s) # ofbest_curve.append(br2s)
#ofbest_curve.append(boverfit) # ofbest_curve.append(boverfit)
#ofbest_curve.pop(0) # ofbest_curve.pop(0)
#print(ofbest_curve) # print(ofbest_curve)
#beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s") #beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s")
#r2best_curve.append(beqs) # r2best_curve.append(beqs)
#r2best_curve.append(brmss) # r2best_curve.append(brmss)
#r2best_curve.append(br2s) # r2best_curve.append(br2s)
#r2best_curve.append(boverfit) # r2best_curve.append(boverfit)
#r2best_curve.pop(0) # r2best_curve.pop(0)
#print(r2best_curve) # print(r2best_curve)
measure_stats.append(teams[i] + list(analysis.basic_stats(
measure_stats.append(teams[i] + list(analysis.basic_stats(line, 0, 0)) + list(analysis.histo_analysis(line, 1, -3, 3))) line, 0, 0)) + list(analysis.histo_analysis(line, 1, -3, 3)))
stats.append(list(measure_stats)) stats.append(list(measure_stats))
nishant = [] nishant = []
for i in range(len(scores)): for i in range(len(scores)):
#print(scores) # print(scores)
ofbest_curve = [None] ofbest_curve = [None]
r2best_curve = [None] r2best_curve = [None]
line = scores[i] line = scores[i]
if len(line) < 4: if len(line) < 4:
nishant.append('no_data') nishant.append('no_data')
continue continue
#print(line) # print(line)
#print(line) # print(line)
x = list(range(len(line))) x = list(range(len(line)))
eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1) eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1)
beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit") beqs, brmss, br2s, boverfit = analysis.select_best_regression(
eqs, rmss, r2s, overfit, "min_overfit")
#print(eqs, rmss, r2s, overfit) #print(eqs, rmss, r2s, overfit)
ofbest_curve.append(beqs) ofbest_curve.append(beqs)
ofbest_curve.append(brmss) ofbest_curve.append(brmss)
ofbest_curve.append(br2s) ofbest_curve.append(br2s)
ofbest_curve.append(boverfit) ofbest_curve.append(boverfit)
ofbest_curve.pop(0) ofbest_curve.pop(0)
#print(ofbest_curve) # print(ofbest_curve)
beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s") beqs, brmss, br2s, boverfit = analysis.select_best_regression(
eqs, rmss, r2s, overfit, "max_r2s")
r2best_curve.append(beqs) r2best_curve.append(beqs)
r2best_curve.append(brmss) r2best_curve.append(brmss)
r2best_curve.append(br2s) r2best_curve.append(br2s)
r2best_curve.append(boverfit) r2best_curve.append(boverfit)
r2best_curve.pop(0) r2best_curve.pop(0)
#print(r2best_curve) # print(r2best_curve)
z = len(scores[0]) + 1 z = len(scores[0]) + 1
nis_num = [] nis_num = []
nis_num.append(eval(str(ofbest_curve[0]))) nis_num.append(eval(str(ofbest_curve[0])))
nis_num.append(eval(str(r2best_curve[0]))) nis_num.append(eval(str(r2best_curve[0])))
nis_num.append((eval(ofbest_curve[0]) + eval(r2best_curve[0])) / 2) nis_num.append((eval(ofbest_curve[0]) + eval(r2best_curve[0])) / 2)
nishant.append(teams[i] + nis_num) nishant.append(teams[i] + nis_num)
json_out = {} json_out = {}
score_out = {} score_out = {}
for i in range(len(teams)): for i in range(len(teams)):
score_out[str(teams[i][0])] = (nishant[i]) score_out[str(teams[i][0])] = (nishant[i])
location = db.collection(u'stats').document(u'stats-noNN') location = db.collection(u'stats').document(u'stats-noNN')
for i in range(len(teams)): for i in range(len(teams)):
@ -199,49 +203,59 @@ def titanservice():
for j in range(len(files)): for j in range(len(files)):
json_out[str(teams[i][0])] = (stats[j][i]) json_out[str(teams[i][0])] = (stats[j][i])
name = os.path.basename(files[j]) name = os.path.basename(files[j])
general_general_stats.document(name).set({'stats':json_out.get(teams[i][0])}) general_general_stats.document(name).set(
{'stats': json_out.get(teams[i][0])})
for i in range(len(teams)): for i in range(len(teams)):
nnum = location.collection(teams[i][0]).document(u'nishant_number').set({'nishant':score_out.get(teams[i][0])}) nnum = location.collection(teams[i][0]).document(
u'nishant_number').set({'nishant': score_out.get(teams[i][0])})
def pulldata(): def pulldata():
teams = analysis.load_csv('data/teams.csv') teams = analysis.load_csv('data/teams.csv')
scores = [] scores = []
for i in range(len(teams)): for i in range(len(teams)):
team_scores = [] team_scores = []
#print(teams[i][0]) # print(teams[i][0])
request_data_object = tba.req_team_matches(teams[i][0], 2019, "UDvKmPjPRfwwUdDX1JxbmkyecYBJhCtXeyVk9vmO2i7K0Zn4wqQPMfzuEINXJ7e5") request_data_object = tba.req_team_matches(
teams[i][0], 2019, "UDvKmPjPRfwwUdDX1JxbmkyecYBJhCtXeyVk9vmO2i7K0Zn4wqQPMfzuEINXJ7e5")
json_data = request_data_object.json() json_data = request_data_object.json()
for match in range(len(json_data) - 1, -1, -1): for match in range(len(json_data) - 1, -1, -1):
if json_data[match].get('winning_alliance') == "": if json_data[match].get('winning_alliance') == "":
#print(json_data[match]) # print(json_data[match])
json_data.remove(json_data[match]) json_data.remove(json_data[match])
json_data = sorted(json_data, key=lambda k: k.get('actual_time', 0), reverse=False) json_data = sorted(json_data, key=lambda k: k.get(
'actual_time', 0), reverse=False)
for j in range(len(json_data)): for j in range(len(json_data)):
if "frc" + teams[i][0] in json_data[j].get('alliances').get('blue').get('team_keys'): if "frc" + teams[i][0] in json_data[j].get('alliances').get('blue').get('team_keys'):
team_scores.append(json_data[j].get('alliances').get('blue').get('score')) team_scores.append(json_data[j].get(
'alliances').get('blue').get('score'))
elif "frc" + teams[i][0] in json_data[j].get('alliances').get('red').get('team_keys'): elif "frc" + teams[i][0] in json_data[j].get('alliances').get('red').get('team_keys'):
team_scores.append(json_data[j].get('alliances').get('red').get('score')) team_scores.append(json_data[j].get(
'alliances').get('red').get('score'))
scores.append(team_scores) scores.append(team_scores)
with open("data/scores.csv", "w+", newline = '') as file: with open("data/scores.csv", "w+", newline='') as file:
writer = csv.writer(file, delimiter = ',') writer = csv.writer(file, delimiter=',')
writer.writerows(scores) writer.writerows(scores)
list_teams = teams list_teams = teams
teams=db.collection('data').document('team-2022').collection("Central 2019").get() teams = db.collection('data').document(
full=[] 'team-2022').collection("Central 2019").get()
tms=[] full = []
tms = []
for team in teams: for team in teams:
tms.append(team.id) tms.append(team.id)
reports=db.collection('data').document('team-2022').collection("Central 2019").document(team.id).collection("matches").get() reports = db.collection('data').document(
'team-2022').collection("Central 2019").document(team.id).collection("matches").get()
for report in reports: for report in reports:
data=[] data = []
data.append(db.collection('data').document('team-2022').collection("Central 2019").document(team.id).collection("matches").document(report.id).get().to_dict()) data.append(db.collection('data').document('team-2022').collection("Central 2019").document(
team.id).collection("matches").document(report.id).get().to_dict())
full.append(data) full.append(data)
quant_keys = [] quant_keys = []
@ -267,11 +281,11 @@ def pulldata():
#print(full[i][j].get(key).get('teamDBRef')[5:] in list_teams) #print(full[i][j].get(key).get('teamDBRef')[5:] in list_teams)
#print(full[i][j].get(key).get('teamDBRef')) # print(full[i][j].get(key).get('teamDBRef'))
#print(list(full[i][j].keys())) # print(list(full[i][j].keys()))
#print(list_teams) # print(list_teams)
if full[i][j].get(key).get('teamDBRef')[5:] in list_teams: if full[i][j].get(key).get('teamDBRef')[5:] in list_teams:
@ -282,7 +296,8 @@ def pulldata():
individual_keys = list(full[i][j].get(key).keys()) individual_keys = list(full[i][j].get(key).keys())
var[individual_keys[k]] = full[i][j].get(key).get(individual_keys[k]) var[individual_keys[k]] = full[i][j].get(
key).get(individual_keys[k])
out.append(var) out.append(var)
@ -316,7 +331,8 @@ def pulldata():
for i in sorted_out: for i in sorted_out:
team_index = list_teams.index(sorted_out[sorted_out.index(i)][j_list.index('teamDBRef')][5:]) team_index = list_teams.index(
sorted_out[sorted_out.index(i)][j_list.index('teamDBRef')][5:])
for j in range(len(i)): for j in range(len(i)):
@ -324,11 +340,12 @@ def pulldata():
for i in range(len(big_out)): for i in range(len(big_out)):
with open('data/' + j_list[i] + '.csv', "w+", newline = '') as file: with open('data/' + j_list[i] + '.csv', "w+", newline='') as file:
writer = csv.writer(file, delimiter = ',') writer = csv.writer(file, delimiter=',')
writer.writerows(big_out[i]) writer.writerows(big_out[i])
def service(): def service():
while True: while True:
@ -347,7 +364,8 @@ def service():
break break
except: except:
if (i != 4): if (i != 4):
print("[WARNING] failed, trying " + str(5 - i - 1) + " more times") print("[WARNING] failed, trying " +
str(5 - i - 1) + " more times")
else: else:
print("[ERROR] failed to compute data, skipping") print("[ERROR] failed to compute data, skipping")
fucked = True fucked = True
@ -363,10 +381,11 @@ def service():
print("[OK] waiting: " + str(300 - (end - start)) + " seconds" + "\n") print("[OK] waiting: " + str(300 - (end - start)) + " seconds" + "\n")
time.sleep(300 - (end - start)) #executes once every 5 minutes time.sleep(300 - (end - start)) # executes once every 5 minutes
warnings.simplefilter("ignore") warnings.simplefilter("ignore")
#Use a service account # Use a service account
try: try:
cred = credentials.Certificate('keys/firebasekey.json') cred = credentials.Certificate('keys/firebasekey.json')
except: except:
@ -375,5 +394,5 @@ firebase_admin.initialize_app(cred)
db = firestore.client() db = firestore.client()
service() #finally we write something that isn't a function definition service() # finally we write something that isn't a function definition
#titanservice() # titanservice()

View File

@ -1,7 +1,7 @@
#Titan Robotics Team 2022: Super Script # Titan Robotics Team 2022: Super Script
#Written by Arthur Lu & Jacob Levine # Written by Arthur Lu & Jacob Levine
#Notes: # Notes:
#setup: # setup:
__version__ = "1.0.6.001" __version__ = "1.0.6.001"
@ -38,12 +38,12 @@ __changelog__ = """changelog:
- added superstructure to code - added superstructure to code
1.0.0.000: 1.0.0.000:
- added import statements (revolutionary) - added import statements (revolutionary)
""" """
__author__ = ( __author__ = (
"Arthur Lu <arthurlu@ttic.edu>, " "Arthur Lu <arthurlu@ttic.edu>, "
"Jacob Levine <jlevine@ttic.edu>," "Jacob Levine <jlevine@ttic.edu>,"
) )
import firebase_admin import firebase_admin
from firebase_admin import credentials from firebase_admin import credentials
@ -60,22 +60,24 @@ import time
import tbarequest as tba import tbarequest as tba
import csv import csv
def titanservice(): def titanservice():
print("[OK] loading data") print("[OK] loading data")
start = time.time() start = time.time()
source_dir = 'data' source_dir = 'data'
file_list = glob.glob(source_dir + '/*.csv') #supposedly sorts by alphabetical order, skips reading teams.csv because of redundancy # supposedly sorts by alphabetical order, skips reading teams.csv because of redundancy
file_list = glob.glob(source_dir + '/*.csv')
data = [] data = []
files = [fn for fn in glob.glob('data/*.csv') files = [fn for fn in glob.glob('data/*.csv')
if not (os.path.basename(fn).startswith('scores') or os.path.basename(fn).startswith('teams') or os.path.basename(fn).startswith('match') or os.path.basename(fn).startswith('notes') or os.path.basename(fn).startswith('observationType') or os.path.basename(fn).startswith('teamDBRef'))] #scores will be handled sperately if not (os.path.basename(fn).startswith('scores') or os.path.basename(fn).startswith('teams') or os.path.basename(fn).startswith('match') or os.path.basename(fn).startswith('notes') or os.path.basename(fn).startswith('observationType') or os.path.basename(fn).startswith('teamDBRef'))] # scores will be handled sperately
for i in files: for i in files:
data.append(analysis.load_csv(i)) data.append(analysis.load_csv(i))
#print(files) # print(files)
stats = [] stats = []
measure_stats = [] measure_stats = []
@ -86,150 +88,158 @@ def titanservice():
print("[OK] loaded data in " + str(end - start) + " seconds") print("[OK] loaded data in " + str(end - start) + " seconds")
#assumes that team number is in the first column, and that the order of teams is the same across all files # assumes that team number is in the first column, and that the order of teams is the same across all files
#unhelpful comment # unhelpful comment
#for measure in data: #unpacks 3d array into 2ds # for measure in data: #unpacks 3d array into 2ds
#measure_stats = [] #measure_stats = []
#for i in range(len(measure)): #unpacks into specific teams # for i in range(len(measure)): #unpacks into specific teams
#ofbest_curve = [None] #ofbest_curve = [None]
#r2best_curve = [None] #r2best_curve = [None]
#line = measure[i] #line = measure[i]
#print(line) # print(line)
#x = list(range(len(line))) #x = list(range(len(line)))
#eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1) #eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1)
#beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit") #beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit")
#print(eqs, rmss, r2s, overfit) #print(eqs, rmss, r2s, overfit)
#ofbest_curve.append(beqs)
#ofbest_curve.append(brmss)
#ofbest_curve.append(br2s)
#ofbest_curve.append(boverfit)
#ofbest_curve.pop(0)
#print(ofbest_curve) # ofbest_curve.append(beqs)
# ofbest_curve.append(brmss)
# ofbest_curve.append(br2s)
# ofbest_curve.append(boverfit)
# ofbest_curve.pop(0)
#beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s") # print(ofbest_curve)
#r2best_curve.append(beqs) #beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s")
#r2best_curve.append(brmss)
#r2best_curve.append(br2s)
#r2best_curve.append(boverfit)
#r2best_curve.pop(0)
#print(r2best_curve) # r2best_curve.append(beqs)
# r2best_curve.append(brmss)
# r2best_curve.append(br2s)
# r2best_curve.append(boverfit)
# r2best_curve.pop(0)
# print(r2best_curve)
#measure_stats.append(teams[i] + list(analysis.basic_stats(line, 0, 0)) + list(analysis.histo_analysis(line, 1, -3, 3)))
#stats.append(list(measure_stats)) #measure_stats.append(teams[i] + list(analysis.basic_stats(line, 0, 0)) + list(analysis.histo_analysis(line, 1, -3, 3)))
# stats.append(list(measure_stats))
nishant = [] nishant = []
for i in range(len(scores)): for i in range(len(scores)):
#print(scores) # print(scores)
ofbest_curve = [None] ofbest_curve = [None]
r2best_curve = [None] r2best_curve = [None]
line = scores[i] line = scores[i]
if len(line) < 4: if len(line) < 4:
nishant.append('no_data') nishant.append('no_data')
continue
#print(line) continue
#print(line) # print(line)
x = list(range(len(line))) # print(line)
eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1)
beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "min_overfit") x = list(range(len(line)))
eqs, rmss, r2s, overfit = analysis.optimize_regression(x, line, 10, 1)
#print(eqs, rmss, r2s, overfit) beqs, brmss, br2s, boverfit = analysis.select_best_regression(
eqs, rmss, r2s, overfit, "min_overfit")
ofbest_curve.append(beqs)
ofbest_curve.append(brmss)
ofbest_curve.append(br2s)
ofbest_curve.append(boverfit)
ofbest_curve.pop(0)
#print(ofbest_curve) #print(eqs, rmss, r2s, overfit)
beqs, brmss, br2s, boverfit = analysis.select_best_regression(eqs, rmss, r2s, overfit, "max_r2s") ofbest_curve.append(beqs)
ofbest_curve.append(brmss)
ofbest_curve.append(br2s)
ofbest_curve.append(boverfit)
ofbest_curve.pop(0)
r2best_curve.append(beqs) # print(ofbest_curve)
r2best_curve.append(brmss)
r2best_curve.append(br2s)
r2best_curve.append(boverfit)
r2best_curve.pop(0)
#print(r2best_curve) beqs, brmss, br2s, boverfit = analysis.select_best_regression(
eqs, rmss, r2s, overfit, "max_r2s")
z = len(scores[0]) + 1
nis_num = []
nis_num.append(eval(str(ofbest_curve[0]))) r2best_curve.append(beqs)
nis_num.append(eval(str(r2best_curve[0]))) r2best_curve.append(brmss)
r2best_curve.append(br2s)
r2best_curve.append(boverfit)
r2best_curve.pop(0)
nis_num.append((eval(ofbest_curve[0]) + eval(r2best_curve[0])) / 2) # print(r2best_curve)
z = len(scores[0]) + 1
nis_num = []
nis_num.append(eval(str(ofbest_curve[0])))
nis_num.append(eval(str(r2best_curve[0])))
nis_num.append((eval(ofbest_curve[0]) + eval(r2best_curve[0])) / 2)
nishant.append(teams[i] + nis_num)
nishant.append(teams[i] + nis_num)
json_out = {} json_out = {}
score_out = {} score_out = {}
for i in range(len(teams)): for i in range(len(teams)):
score_out[str(teams[i][0])] = (nishant[i]) score_out[str(teams[i][0])] = (nishant[i])
location = db.collection(u'stats').document(u'stats-noNN') location = db.collection(u'stats').document(u'stats-noNN')
#for i in range(len(teams)): # for i in range(len(teams)):
#general_general_stats = location.collection(teams[i][0]) #general_general_stats = location.collection(teams[i][0])
#for j in range(len(files)): # for j in range(len(files)):
# json_out[str(teams[i][0])] = (stats[j][i]) # json_out[str(teams[i][0])] = (stats[j][i])
# name = os.path.basename(files[j]) # name = os.path.basename(files[j])
# general_general_stats.document(name).set({'stats':json_out.get(teams[i][0])}) # general_general_stats.document(name).set({'stats':json_out.get(teams[i][0])})
for i in range(len(teams)): for i in range(len(teams)):
nnum = location.collection(teams[i][0]).document(u'nishant_number').set({'nishant':score_out.get(teams[i][0])}) nnum = location.collection(teams[i][0]).document(
u'nishant_number').set({'nishant': score_out.get(teams[i][0])})
def pulldata(): def pulldata():
teams = analysis.load_csv('data/teams.csv') teams = analysis.load_csv('data/teams.csv')
scores = [] scores = []
for i in range(len(teams)): for i in range(len(teams)):
team_scores = [] team_scores = []
#print(teams[i][0]) # print(teams[i][0])
request_data_object = tba.req_team_matches(teams[i][0], 2019, "UDvKmPjPRfwwUdDX1JxbmkyecYBJhCtXeyVk9vmO2i7K0Zn4wqQPMfzuEINXJ7e5") request_data_object = tba.req_team_matches(
teams[i][0], 2019, "UDvKmPjPRfwwUdDX1JxbmkyecYBJhCtXeyVk9vmO2i7K0Zn4wqQPMfzuEINXJ7e5")
json_data = request_data_object.json() json_data = request_data_object.json()
for match in range(len(json_data) - 1, -1, -1): for match in range(len(json_data) - 1, -1, -1):
if json_data[match].get('winning_alliance') == "": if json_data[match].get('winning_alliance') == "":
#print(json_data[match]) # print(json_data[match])
json_data.remove(json_data[match]) json_data.remove(json_data[match])
json_data = sorted(json_data, key=lambda k: k.get('actual_time', 0), reverse=False) json_data = sorted(json_data, key=lambda k: k.get(
'actual_time', 0), reverse=False)
for j in range(len(json_data)): for j in range(len(json_data)):
if "frc" + teams[i][0] in json_data[j].get('alliances').get('blue').get('team_keys'): if "frc" + teams[i][0] in json_data[j].get('alliances').get('blue').get('team_keys'):
team_scores.append(json_data[j].get('alliances').get('blue').get('score')) team_scores.append(json_data[j].get(
'alliances').get('blue').get('score'))
elif "frc" + teams[i][0] in json_data[j].get('alliances').get('red').get('team_keys'): elif "frc" + teams[i][0] in json_data[j].get('alliances').get('red').get('team_keys'):
team_scores.append(json_data[j].get('alliances').get('red').get('score')) team_scores.append(json_data[j].get(
'alliances').get('red').get('score'))
scores.append(team_scores) scores.append(team_scores)
with open("data/scores.csv", "w+", newline = '') as file: with open("data/scores.csv", "w+", newline='') as file:
writer = csv.writer(file, delimiter = ',') writer = csv.writer(file, delimiter=',')
writer.writerows(scores) writer.writerows(scores)
def service(): def service():
while True: while True:
@ -241,14 +251,15 @@ def service():
print("[OK] starting calculations") print("[OK] starting calculations")
fucked = False fucked = False
for i in range(0, 5): for i in range(0, 5):
try: try:
titanservice() titanservice()
break break
except: except:
if (i != 4): if (i != 4):
print("[WARNING] failed, trying " + str(5 - i - 1) + " more times") print("[WARNING] failed, trying " +
str(5 - i - 1) + " more times")
else: else:
print("[ERROR] failed to compute data, skipping") print("[ERROR] failed to compute data, skipping")
fucked = True fucked = True
@ -259,15 +270,16 @@ def service():
break break
else: else:
print("[OK] finished calculations") print("[OK] finished calculations")
print("[OK] waiting: " + str(300 - (end - start)) + " seconds" + "\n") print("[OK] waiting: " + str(300 - (end - start)) + " seconds" + "\n")
time.sleep(300 - (end - start)) #executes once every 5 minutes time.sleep(300 - (end - start)) # executes once every 5 minutes
warnings.simplefilter("ignore") warnings.simplefilter("ignore")
#Use a service account # Use a service account
try: try:
cred = credentials.Certificate('keys/firebasekey.json') cred = credentials.Certificate('keys/firebasekey.json')
except: except:
@ -276,5 +288,5 @@ firebase_admin.initialize_app(cred)
db = firestore.client() db = firestore.client()
service() #finally we write something that isn't a function definition service() # finally we write something that isn't a function definition
#titanservice() # titanservice()