# -*- encoding: utf-8 -*- clr.AddReference("System.Windows.Forms") from System.Windows.Forms import * # clr.AddReference("System.Drawing") from System.Drawing import * # clr.AddReference("System.Net") from System.Net import WebRequest, ServicePointManager, SecurityProtocolType # clr.AddReference("System.IO") from System.IO import StreamReader # import base64, json, codecs # from System.Threading import * from datetime import datetime, timedelta from collections import OrderedDict class API: def __init__(self): self.data = {} self.advantageGame = None self.previousAdvantageTeam = None self.scorebugPoints = ("0", "0", None) self.matchId = None self.events = [] self.draw = None self.gameId = None self.gameIndex = None self.selectedIndex = None self.matchesFilteredByDraw = None self.lastScore = None self.lastStats = None self.statusConn = None self.roundName = "" self.points = { "HomeTeam" : "", "AwayTeam" : "" } self.sets = { "HomeTeam" : [0,0,0,0,0], "AwayTeam" : [0,0,0,0,0] } self.ad = { "HomeTeam" : False, "AwayTeam" : False } self.matchFinished = None self.oldSet = 0 self.test = CheckTesting.Checked Globals["Rewind"] = False self.status = False self.manualHomeService = False self.manualAwayService = False Globals["SponsorOnAnimantion"] = False #self.set_all_controls_visible(self) def Init(self): Globals["frmApiCrionet"] = Script.Form.Form self.GetDefault() self.matchId = None self.draw = None self.gameId = None self.gameIndex = None self.selectedIndex = None self.matchesFilteredByDraw = None self.statusConn = None self.roundName = "" self.points = { "HomeTeam" : "", "AwayTeam" : "" } self.sets = { "HomeTeam" : [0,0,0,0,0], "AwayTeam" : [0,0,0,0,0] } self.ad = { "HomeTeam" : False, "AwayTeam" : False } self.matchFinished = None self.oldSet = 0 status = self.__Login() if status: return self.__GetScheduledMatches() else: return None self.manualHomeService = False self.manualAwayService = False def set_all_controls_visible(self, parent): for control in Script.Form.Form.Controls: control.Visible = True #if control.Controls.Count > 0: #self.set_all_controls_visible(control) def GetDefault(self): self.advantageGame = None self.previousAdvantageTeam = None Globals["OnlineAPIAdvantageCount"] = 0 Globals["OnlineAPIAdvantageUpdate"] = True self.scorebugPoints = ("0", "0", None) self.data = {"Sets": 3, "Match Finished": False, "Resolution Match": "NORMAL", "Resolution Match Points": 11, "Golden Point": "STAR POINT", "TieBreak": False, "Tie Break Service": 1, "Results": {"CurrentSet": 1, "TieBreak": False, "Times": [0, 0, 0, 0, 0], "Sets Finished": [False, False, False, False, False], "Deuces": 0, "HomeTeam": {"Guid": ActiveObjects.HomeTeam.Id.ToString(), "Name": ActiveObjects.HomeTeam.ShortName.ToUpper(), "Players": [], "CurrentGame": "0", "Service": 1, "LastService": 1, "Sets": [0, 0, 0, 0, 0], "TieBreaks": [0, 0, 0, 0, 0], "Golden Points Total By Set": [0, 0, 0, 0, 0], "Golden Points Converted By Set": [0, 0, 0, 0, 0], "Golden Points Total": 0, "Golden Points Converted": 0, "Break Points Total By Set": [0, 0, 0, 0, 0], "Break Points Converted By Set": [0, 0, 0, 0, 0], "Break Points Total": 0, "Break Points Converted": 0, "Winners By Set": [0, 0, 0, 0, 0], "Winners Total": 0, "Unforced Errors By Set": [0, 0, 0, 0, 0], "Unforced Errors Total": 0, "Smashes Total By Set": [0, 0, 0, 0, 0], "Smashes Winners By Set": [0, 0, 0, 0, 0], "Smashes Total": 0, "Smashes Winners Converted": 0}, "AwayTeam": {"Guid": ActiveObjects.AwayTeam.Id.ToString(), "Name": ActiveObjects.AwayTeam.ShortName.ToUpper(), "Players": [], "CurrentGame": "0", "Service": 0, "LastService": 2, "Sets": [0, 0, 0, 0, 0], "TieBreaks": [0, 0, 0, 0, 0], "Golden Points Total By Set": [0, 0, 0, 0, 0], "Golden Points Converted By Set": [0, 0, 0, 0, 0], "Golden Points Total": 0, "Golden Points Converted": 0, "Golden Points By Set": [0, 0, 0, 0, 0], "Golden Points Total": 0, "Break Points Total By Set": [0, 0, 0, 0, 0], "Break Points Converted By Set": [0, 0, 0, 0, 0], "Break Points Total": 0, "Break Points Converted": 0, "Winners By Set": [0, 0, 0, 0, 0], "Winners Total": 0, "Unforced Errors By Set": [0, 0, 0, 0, 0], "Unforced Errors Total": 0, "Smashes Total By Set": [0, 0, 0, 0, 0], "Smashes Winners By Set": [0, 0, 0, 0, 0], "Smashes Total": 0, "Smashes Winners Converted": 0}, } } def __Login(self): #print "Login" if not Globals.Contains("API_Token"): url = ProjectSettings["API Crionet URL"] #+ "/login" user = ProjectSettings["API Crionet User"] password = ProjectSettings["API Crionet Password"] ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 request = WebRequest.Create(url) request.Timeout = 5000 #request.Headers.Add(credentials) request.Headers.Add("falstaff-key", password) request.ContentType = "application/json" request.ContentLength = 0 request.Method = "POST" try: response = request.GetResponse() if response.StatusCode.ToString() == "OK": Globals["API_Token"] = response.GetResponseHeader("Token") response.Close() print "Login success!!!" self.statusConn = "Connected" return True except: response.Close() print "Login Failed!!!" self.statusConn = "Error" return False else: print "Login success!!!" self.statusConn = "Connected" return True def __GetScheduledMatches(self): #print "__GetScheduledMatches" if Globals.Contains("API_Token"): TID = ProjectSettings["API Crionet TID"] VID = ProjectSettings["API Crionet VID"] password = ProjectSettings["API Crionet Password"] year = ProjectSettings["Year"] organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"] url = ProjectSettings["API Crionet URL"] + "/api/tournaments/%s/%s/" % (organization,year) ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 request = WebRequest.Create(url) request.Timeout = 5000 request.Headers.Add("falstaff-key", password) request.ContentType = "application/json" request.Method = "GET" try: response = request.GetResponse() sr = StreamReader(response.GetResponseStream()) json_string = sr.ReadToEnd() items = json.loads(json_string) response.Close() cboMatches.Items.Clear() cboMatches.Text = "" cboMatches.Tag = [] self.events = items for i, item in enumerate(items): nameCompetition = item['fullName'] cboMatches.Items.Add(nameCompetition) (cboMatches.Tag).append(item["eventCode"]) except: print "Error ocurred" def GetInProgressMatches(self): if Globals.Contains("API_Token"): try: self.GetMatchInfo() items = self.matchesFilteredByDraw self.__RefreshScore(items) self.lastScore = datetime.today().strftime('%H:%M:%S') self.UpdateInfo() return True except Exception as e: print "Error getting In Progress Matches: %s" %e return False def GetDraws(self): #print "GetDraws" #print "Self.Events: %s" %self.events #print "Event Code: %s" % self.matchId event = list(filter(lambda x: x["eventCode"] == self.matchId, self.events))[0] #print event indexDate = {} startDate = event["startDate"] endDate = event["endDate"] newDate = "" startDate = datetime.strptime(startDate, "%m/%d/%Y %I:%M:%S %p") endDate = datetime.strptime(endDate, "%m/%d/%Y %I:%M:%S %p") diferenca = endDate - startDate for i in range(int(diferenca.days)+1): if newDate == "": indexDate[i] = startDate newDate = startDate else: indexDate[i] = newDate + timedelta(days=1) newDate = newDate + timedelta(days=1) self.gameIndex = indexDate draws = event["draws"] cboDraws.Text = "" cboDraws.Items.Clear() cboDraws.Tag = [] for draw in draws: cboDraws.Items.Add(draw["name"]) (cboDraws.Tag).append(draw["type"]) def GetDaysIndex(self): cboGameDate.Items.Clear() cboGameDate.Tag = [] for idx,i in enumerate(self.gameIndex,1): cboGameDate.Items.Add(self.gameIndex[i].strftime("%m/%d/%Y")) (cboGameDate.Tag).append(idx) def GetDrawsMatchs(self,clear=True,insert=True): password = ProjectSettings["API Crionet Password"] year = ProjectSettings["Year"] organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"] if self.test: url = "http://localhost:3000/courtSchedules" else: url = ProjectSettings["API Crionet URL"] + "/api/oop/%s/%s/%s/%s" % (organization,year,self.matchId,self.selectedIndex) # LOG - o que vamos pedir print "[GetDrawsMatchs] URL: %s" % url print "[GetDrawsMatchs] matchId=%s | selectedIndex=%s | draw=%s | test=%s" % (self.matchId, self.selectedIndex, self.draw, self.test) ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 request = WebRequest.Create(url) request.Timeout = 5000 request.Headers.Add("falstaff-key", password) request.ContentType = "application/json" request.Method = "GET" if clear != False: cboDrawsMatchs.Text = "" cboDrawsMatchs.Items.Clear() try: response = request.GetResponse() print "[GetDrawsMatchs] HTTP status: %s" % response.StatusCode.ToString() sr = StreamReader(response.GetResponseStream()) json_string = sr.ReadToEnd() items = json.loads(json_string) response.Close() # LOG - guardar a resposta crua (só com o debug ativo) if chkDebug.Checked: self.__SaveJSON(items, "DrawsMatchs_day%s" % self.selectedIndex) courtSchedules = items["courtSchedules"] allItems = [item for schedule in courtSchedules for item in schedule.get("items", [])] print "[GetDrawsMatchs] courts=%s | total jogos na resposta=%s" % (len(courtSchedules), len(allItems)) print "[GetDrawsMatchs] matchIds recebidos: %s" % [i["match"]["matchId"] for i in allItems] prefixes = {"LD": ("LD", "WD"), "WD": ("LD", "WD"), "MD": ("MD",)}.get(self.draw, (self.draw,)) drawsMatchesFiltered = list(filter(lambda item: item["match"]["matchId"].startswith(prefixes), allItems)) print "[GetDrawsMatchs] depois do filtro '%s': %s jogos" % (self.draw, len(drawsMatchesFiltered)) drawsMatchesFiltered = sorted(drawsMatchesFiltered,key=lambda x: x['match']['matchId']) self.matchesFilteredByDraw = drawsMatchesFiltered cboDrawsMatchs.Tag = [] for drawMatch in drawsMatchesFiltered: drawMatchId = drawMatch['match']["matchId"] homeCountry = "" awayCountry = "" try: homePlayer = drawMatch['match']['team1']["player"]["lastName"].split() homePlayer = homePlayer[-1].upper() if len(homePlayer) > 1 else homePlayer[0].upper() except: homePlayer = "" try: homeCountry = drawMatch['match']['team1']["player"]['countryCode'] awayCountry = drawMatch['match']['team2']["player"]['countryCode'] except: pass try: homePartner = drawMatch['match']['team1']["partner"]["lastName"].split() homePartner = homePartner[-1].upper() if len(homePartner) > 1 else homePartner[0].upper() except: homePartner = "" try: awayPlayer = drawMatch['match']['team2']["player"]["lastName"].split() awayPlayer = awayPlayer[-1].upper() if len(awayPlayer) > 1 else awayPlayer[0].upper() except: awayPlayer = "" try: awayPartner = drawMatch['match']['team2']["partner"]["lastName"].split() awayPartner = awayPartner[-1].upper() if len(awayPartner) > 1 else awayPartner[0].upper() except: awayPartner = "" if insert == True: cboDrawsMatchs.Items.Add("%s - (%s) %s - %s | %s - %s (%s)" % (drawMatchId,homeCountry,homePlayer,homePartner,awayPlayer,awayPartner,awayCountry)) (cboDrawsMatchs.Tag).append(drawMatchId) return drawsMatchesFiltered except Exception as e: print "Error ocurred %s" %e def GetMatchInfo(self): #print "GetMatchInfo" password = ProjectSettings["API Crionet Password"] year = ProjectSettings["Year"] organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"] if self.test: url = "http://localhost:3000/matchinfo" else: url = ProjectSettings["API Crionet URL"] + "/api/matchinfo/%s/%s/%s/%s" % (organization,year,self.matchId,self.gameId) #for Testing: #url = "http://localhost:3000/matchinfo" ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 request = WebRequest.Create(url) request.Timeout = 5000 request.Headers.Add("falstaff-key", password) request.ContentType = "application/json" request.Method = "GET" try: response = request.GetResponse() sr = StreamReader(response.GetResponseStream()) json_string = sr.ReadToEnd() items = json.loads(json_string) response.Close() if chkDebug.Checked: self.__SaveJSON(items, "Matchdata") self.matchesFilteredByDraw = items if items['status'] == "F": self.matchFinished = True self.data["Match Finished"] = True else: self.matchFinished = False self.data["Match Finished"] = False if lblStatus.Text == "API ERROR": lblStatus.Text = "RUNNING..." lblStatus.ForeColor = Color.SpringGreen except Exception as e: print "Error ocurred %s" %e lblStatus.Text = "API ERROR" lblStatus.ForeColor = Color.Salmon return return items def __GetStats(self): #print "__GetStats" if Globals.Contains("API_Token") and self.matchId: try: items = self.GetDrawsMatchs(False,False) if chkDebug.Checked: self.__SaveJSON(items, "Stats") self.lastStats = datetime.today().strftime('%H:%M:%S') self.UpdateInfo() return True except: response.Close() print "Error getting In Progress Matches" return False def __RefreshScore(self, item): #print "__RefreshScore" try: status = item['status'] self.roundName = item['roundName'] if status == "F": self.matchFinished = True else: self.matchFinished = False sets = {"Team1": [],"Team2": []} ties = {"Team1": [],"Team2": []} for i in range(1,6): sets['Team1'].append(item["score"]["team1"]["set%s"%i]) sets['Team2'].append(item["score"]["team2"]["set%s"%i]) ties['Team1'].append(item["score"]["team1"]["tie%s"%i]) ties['Team2'].append(item["score"]["team2"]["tie%s"%i]) Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Sets"][i-1] = int(item["score"]["team1"]["set%s"%i]) if item["score"]["team1"]["set%s"%i] else 0 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Sets"][i-1] = int(item["score"]["team2"]["set%s"%i]) if item["score"]["team2"]["set%s"%i] else 0 Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["CurrentGame"] = str(item["score"]["team1"]["points"]) Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["CurrentGame"] = str(item["score"]["team2"]["points"]) last_valid_index = [idx for idx, x in enumerate(sets['Team1']) if x is not None] last_valid_index = last_valid_index[-1:][0] if last_valid_index[-1:] else None if last_valid_index == None: # Ajust for service before score self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 else 2 if item["score"]["server"] == 3 else 0 self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 else 2 if item["score"]["server"] == 4 else 0 return self.data["Results"]["CurrentSet"] = str(int(last_valid_index) + 1 ) Globals["PadelScoreboard"].data["Results"]["CurrentSet"] = int(last_valid_index) + 1 for i in range(0,int(self.data["Results"]["CurrentSet"])-1): self.data["Results"]["Sets Finished"][i] = True del self.data["Results"]["HomeTeam"]["Players"][:] del self.data["Results"]["AwayTeam"]["Players"][:] (self.data["Results"]["HomeTeam"]["Players"]).append(item["team1"]["player"]) (self.data["Results"]["HomeTeam"]["Players"]).append(item["team1"]["partner"]) (self.data["Results"]["AwayTeam"]["Players"]).append(item["team2"]["player"]) (self.data["Results"]["AwayTeam"]["Players"]).append(item["team2"]["partner"]) #Points self.data["Results"]["HomeTeam"]["CurrentGame"] = str(item["score"]["team1"]["points"]) if not item["score"]["team1"]["points"] == None else "0" self.data["Results"]["AwayTeam"]["CurrentGame"] = str(item["score"]["team2"]["points"]) if not item["score"]["team2"]["points"] == None else "0" if self.data["Results"]["HomeTeam"]["CurrentGame"] != "" and self.data["Results"]["HomeTeam"]["CurrentGame"] != self.points["HomeTeam"] and status == "P": if self.data["Results"]["HomeTeam"]["CurrentGame"].lower() == "ad" and not self.ad["HomeTeam"]: self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"] if self.data["Results"]["HomeTeam"]["CurrentGame"]!= "0": #Colocar ponto no form sem usar o click #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None) self.ad["HomeTeam"] = True self.ad["AwayTeam"] = False if not self.ad["HomeTeam"]: #print "Create point for HomeTeam" if self.data["Results"]["HomeTeam"]["CurrentGame"]!= "0": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None) self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"] if self.ad["HomeTeam"]: if int(sets['Team1'][last_valid_index]) > int(self.sets["HomeTeam"][last_valid_index]): #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None) self.sets["HomeTeam"][last_valid_index] = sets['Team1'][last_valid_index] self.points["AwayTeam"] = "0" self.points["HomeTeam"] = "0" self.data["Results"]["HomeTeam"]["CurrentGame"]= "0" self.data["Results"]["AwayTeam"]["CurrentGame"]= "0" self.ad["HomeTeam"] = False self.ad["AwayTeam"] = False if self.data["Results"]["HomeTeam"]["CurrentGame"] == "40": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None) self.ad["HomeTeam"] = False self.ad["AwayTeam"] = False self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"] if int(sets['Team1'][last_valid_index]) > int(self.sets["HomeTeam"][last_valid_index]) and status == "P": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None) self.sets["HomeTeam"][last_valid_index] = sets['Team1'][last_valid_index] self.points["AwayTeam"] = "0" self.points["HomeTeam"] = "0" self.data["Results"]["HomeTeam"]["CurrentGame"]= "0" self.data["Results"]["AwayTeam"]["CurrentGame"]= "0" if self.data["Results"]["AwayTeam"]["CurrentGame"] != "" and self.data["Results"]["AwayTeam"]["CurrentGame"] != self.points["AwayTeam"] and status == "P": if self.data["Results"]["AwayTeam"]["CurrentGame"].lower() == "ad" and not self.ad["AwayTeam"]: self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"] if self.data["Results"]["AwayTeam"]["CurrentGame"]!= "0": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None) self.ad["HomeTeam"] = False self.ad["AwayTeam"] = True if not self.ad["AwayTeam"]: #print "Create point for AwayTeam" if self.data["Results"]["AwayTeam"]["CurrentGame"]!= "0": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None) self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"] if self.ad["AwayTeam"]: if int(sets['Team2'][last_valid_index]) > int(self.sets["AwayTeam"][last_valid_index]): #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None) self.sets["AwayTeam"][last_valid_index] = sets['Team2'][last_valid_index] self.points["AwayTeam"] = "0" self.points["HomeTeam"] = "0" self.data["Results"]["HomeTeam"]["CurrentGame"]= "0" self.data["Results"]["AwayTeam"]["CurrentGame"]= "0" self.ad["HomeTeam"] = False self.ad["AwayTeam"] = False if self.data["Results"]["AwayTeam"]["CurrentGame"] == "40": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None) self.ad["HomeTeam"] = False self.ad["AwayTeam"] = False self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"] if int(sets['Team2'][last_valid_index]) > int(self.sets["AwayTeam"][last_valid_index]) and status == "P": #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None) self.sets["AwayTeam"][last_valid_index] = sets['Team2'][last_valid_index] self.points["AwayTeam"] = "0" self.points["HomeTeam"] = "0" self.data["Results"]["HomeTeam"]["CurrentGame"]= "0" self.data["Results"]["AwayTeam"]["CurrentGame"]= "0" # Sets, Tie Breaks, Times scoreHome = 0 scoreAway = 0 for i in range(0,5): self.data["Results"]["HomeTeam"]["Sets"][i] = item["score"]["team1"]["set%s"%(i+1)] if not item["score"]["team1"]["set%s"%(i+1)] == None else 0 self.data["Results"]["AwayTeam"]["Sets"][i] = item["score"]["team2"]["set%s"%(i+1)] if not item["score"]["team2"]["set%s"%(i+1)] == None else 0 self.data["Results"]["HomeTeam"]["TieBreaks"][i] = item["score"]["team1"]["tie%s"%(i+1)] self.data["Results"]["AwayTeam"]["TieBreaks"][i] = item["score"]["team2"]["tie%s"%(i+1)] curSet = int(self.data["Results"]["CurrentSet"])-1 # Verify if is TieBreak # If set is 2 or more. In this case index 0 set 1 index 1 set 2 #print "CurSet %s type: %s" % (curSet, type(curSet)) if curSet >= 1: #print "Home CurSet: %s type: %s" % (self.data["Results"]["HomeTeam"]["Sets"][curSet], type(self.data["Results"]["HomeTeam"]["Sets"][curSet])) #print "Away CurSet: %s type: %s" % (self.data["Results"]["AwayTeam"]["Sets"][curSet], type(self.data["Results"]["AwayTeam"]["Sets"][curSet])) if self.data["Results"]["HomeTeam"]["Sets"][curSet] >= 6 and self.data["Results"]["AwayTeam"]["Sets"][curSet] >= 6: #print "Setei TieBreak true " self.data["TieBreak"] = True else: self.data["TieBreak"] = False # Service if self.manualHomeService == False and self.manualAwayService == False: #self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 or item["score"]["server"] == 3 else 0 #self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 or item["score"]["server"] == 4 else 0 self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 else 2 if item["score"]["server"] == 3 else 0 self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 else 2 if item["score"]["server"] == 4 else 0 if self.data["Results"]["HomeTeam"]["Service"] == 1: Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 1 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 0 Globals["PadelScoreboard"].UpdateInterface() elif self.data["Results"]["AwayTeam"]["Service"] == 1: Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 0 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 1 Globals["PadelScoreboard"].UpdateInterface() #SET FINISHED #if self.data["Resolution Match"] == "NO LAST TIE BREAK": #if self.data["Results"]["CurrentSet"] == int(cboNumSets.Text): #if self.data["Results"][actionTeam]["Sets"][currentSet-1] > 5: #if (self.data["Results"][otherTeam]["Sets"][currentSet-1] + 1) < self.data["Results"][actionTeam]["Sets"][currentSet-1]: ##self.SetFinished() #setFinished = True #else: ########################################################################################## #print "TieBreak: %s" % self.data["TieBreak"] #print "Home: %s Type: %s" % (self.data["Results"]["HomeTeam"]["Sets"][curSet], type(self.data["Results"]["HomeTeam"]["Sets"][curSet])) #print "Away: %s Type: %s " %(self.data["Results"]["AwayTeam"]["Sets"][curSet], type(self.data["Results"]["AwayTeam"]["Sets"][curSet])) if self.data["Results"]["HomeTeam"]["Sets"][curSet] == 6: if self.data["Results"]["AwayTeam"]["Sets"][curSet] < 5: # SET WON Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True elif self.data["Results"]["HomeTeam"]["Sets"][curSet] == 7: if not self.data["TieBreak"]: if self.data["Results"]["AwayTeam"]["Sets"][curSet] in [5,6]: #--> SET WON Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True else: Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True elif self.data["Results"]["AwayTeam"]["Sets"][curSet] == 6: if self.data["Results"]["HomeTeam"]["Sets"][curSet] < 5: # SET WON Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True elif self.data["Results"]["AwayTeam"]["Sets"][curSet] == 7: if not self.data["TieBreak"]: if self.data["Results"]["HomeTeam"]["Sets"][curSet] in [5,6]: #--> SET WON Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True else: Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True self.data["Results"]["Sets Finished"][curSet] = True else: #print "Cai no else" Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = False self.data["Results"]["Sets Finished"][curSet] = False self.CheckStatusOnline() if int(self.data["Results"]["CurrentSet"]) > int(self.oldSet): Project.ExecuteScript("Online_API", "SetFinished") self.oldSet = self.data["Results"]["CurrentSet"] return Globals["PadelScoreboard"].UpdateInterface() self.__UpdateData() except Exception as e: import os import sys e_type, e_object, e_traceback = sys.exc_info() e_filename = os.path.split( e_traceback.tb_frame.f_code.co_filename )[1] e_message = str(e) e_line_number = e_traceback.tb_lineno print('exception line number: %s'%e_line_number) print('exception message: %s' %e_message) def __UpdateData(self): #print "Update data" try: frm = Script.Form.Form teams = ["Home", "Away"] for i in range(2): if len(self.data["Results"][teams[i] + "Team"]["Players"]) > 0: frm.Controls["lbl" + teams[i] + "Team"].Text = self.data["Results"][teams[i] + "Team"]["Players"][0]["lastName"][:3].upper() + "/" + self.data["Results"][teams[i] + "Team"]["Players"][1]["lastName"][:3].upper() else: frm.Controls["lbl" + teams[i] + "Team"].Text = "-" frm.Controls["lbl" + teams[i] + "Point"].Text = self.data["Results"][teams[i] + "Team"]["CurrentGame"] for x in range(5): frm.Controls["lbl" + teams[i] + "Set" + str(x+1).zfill(2)].Text = str(self.data["Results"][teams[i] + "Team"]["Sets"][x]) frm.Controls["lbl" + teams[i] + "Tie" + str(x+1).zfill(2)].Text = str(self.data["Results"][teams[i] + "Team"]["TieBreaks"][x]) if self.data["Results"][teams[i] + "Team"]["TieBreaks"][x] and self.data["Results"][teams[i] + "Team"]["TieBreaks"][x] != -1 else "-" #frm.Controls["lbl" + teams[i] + "GoldPoint"].Text = str(self.data["Results"][teams[i] + "Team"]["Golden Points Converted"]) + "/" + str(self.data["Results"][teams[i] + "Team"]["Golden Points Total"]) #frm.Controls["lbl" + teams[i] + "BreakPoint"].Text = str(self.data["Results"][teams[i] + "Team"]["Break Points Converted"]) + "/" + str(self.data["Results"][teams[i] + "Team"]["Break Points Total"]) #frm.Controls["lbl" + teams[i] + "UnforcedError"].Text = "0" #frm.Controls["lbl" + teams[i] + "Winner"].Text = "0" #frm.Controls["lbl" + teams[i] + "Smash"].Text = "0" #if self.manualHomeService: #frm.Controls["HomeService"].Checked = True #if self.manualAwayService: #frm.Controls["AwayService"].Checked = True if self.manualHomeService == False and self.manualAwayService == False: pass if self.data["Results"][teams[i] + "Team"]["Service"] == 0: frm.Controls["lbl" + teams[i] + "Team"].ForeColor = Color.WhiteSmoke #frm.Controls[teams[i] + "Service"].Checked = False else: frm.Controls["lbl" + teams[i] + "Team"].ForeColor = Color.SpringGreen #frm.Controls[teams[i] + "Service"].Checked = True self.fillColorSetWinner() except Exception as e: print "Error on __UpdateData: %s" % e def fillColorSetWinner(self): frm = Script.Form.Form for i in range(3): valueHome = int(frm.Controls["lblHomeSet%02d"%(i+1)].Text) valueAway = int(frm.Controls["lblAwaySet%02d"%(i+1)].Text) if valueHome > valueAway: #print "Home Maior" frm.Controls["lblHomeSet%02d"%(i+1)].ForeColor = Color.SpringGreen elif valueAway > valueHome: #print "Away Maior" frm.Controls["lblAwaySet%02d"%(i+1)].ForeColor = Color.SpringGreen else: #print "Os Dois Iguais" frm.Controls["lblHomeSet%02d"%(i+1)].ForeColor = Color.WhiteSmoke frm.Controls["lblAwaySet%02d"%(i+1)].ForeColor = Color.WhiteSmoke def UpdateInfo(self, error = ""): #print "UpdateInfo" if self.matchId and self.draw and self.selectedIndex: btnReload.Enabled = True else: btnReload.Enabled = False msg = "" if self.test: msg += ("TESTING.... " + "\n") msg += ("Status API: " + str(self.statusConn) + "\n") if self.matchId: msg += ("Competition ID: " + str(self.matchId) + "\n") if self.draw: msg += ("Draw: " + str(self.draw) + "\n") if self.gameId: msg += ("Game ID: " + str(self.gameId) + "\n") msg += ("Match Finished: " + str(self.matchFinished) + "\n") msg += ("Last Score Update: " + str(self.lastScore) + "\n") curSet = int(self.data["Results"]["CurrentSet"])-1 setIsFinish = self.data["Results"]["Sets Finished"][curSet] msg += ("Set(%s) Finish: %s " % (str(curSet + 1),setIsFinish )+ "\n") if not error == "": msg += ("Error: " + error + "\n\n") lblInfo.Text = msg def clearAll(self): #print "Limpando tudo!" cboDraws.Text = "" cboDraws.Items.Clear() cboGameDate.Text = "" cboGameDate.Items.Clear() cboDrawsMatchs.Text = "" cboDrawsMatchs.Items.Clear() self.matchId = None self.draw = None self.gameId = None self.gameIndex = None self.selectedIndex = None self.matchesFilteredByDraw = None self.manualHomeService = False self.manualAwayService = False HomeService.Checked = False AwayService.Checked = False Globals["API"].LastSum2Sets = 0 def clearRefresh(self): self.gameId = None self.matchesFilteredByDraw = None def __SaveJSON(self, data, name): time4json = datetime.today().strftime('%Y%m%d_%H%M%S%f') output_file = codecs.open(Project.AddonsDataPath + "\\API\\MATCHDATA\\" + "%s_%s.json" % (name,time4json), "w", encoding="utf-8") json.dump(data, output_file, sort_keys=False, indent=4, ensure_ascii=False) def createHomePoints(self): pointsIdx = {"0":"15","15":"30","30":"40","40":""} try: points = self.data["Results"]["HomeTeam"]["CurrentGame"] except: points = "0" newPoints = pointsIdx[points] self.data["Results"]["HomeTeam"]["CurrentGame"] = newPoints self.CheckStatusOnline() def createAwayPoints(self): pointsIdx = {"0":"15","15":"30","30":"40","40":""} try: points = self.data["Results"]["AwayTeam"]["CurrentGame"] except: points = "0" newPoints = pointsIdx[points] self.data["Results"]["AwayTeam"]["CurrentGame"] = newPoints self.CheckStatusOnline() def CheckStatusOnline(self): try: results = self.data["Results"] currentSet = int(results["CurrentSet"]) home = results["HomeTeam"] away = results["AwayTeam"] homePoints = home["CurrentGame"].upper() awayPoints = away["CurrentGame"].upper() homeGames = int(home["Sets"][currentSet - 1]) awayGames = int(away["Sets"][currentSet - 1]) game = (self.gameId, currentSet, homeGames, awayGames) finished = self.data["Match Finished"] or results["Sets Finished"][currentSet - 1] if game != self.advantageGame or finished or (homePoints, awayPoints) == ("0", "0"): self.advantageGame = game self.previousAdvantageTeam = None Globals["OnlineAPIAdvantageCount"] = 0 Globals["OnlineAPIAdvantageUpdate"] = True if finished: self.scorebugPoints = ("", "", None) return isTieBreak = self.data["TieBreak"] or (homeGames, awayGames) == (6, 6) isDeuce = not isTieBreak and (homePoints, awayPoints) == ("40", "40") advantageTeam = None if not isTieBreak: if homePoints == "AD": advantageTeam = "HomeTeam" elif awayPoints == "AD": advantageTeam = "AwayTeam" advantageCount = Globals["OnlineAPIAdvantageCount"] if isDeuce: Globals["OnlineAPIAdvantageUpdate"] = True elif advantageTeam: if Globals["OnlineAPIAdvantageUpdate"] or advantageTeam != self.previousAdvantageTeam: advantageCount = min(advantageCount + 1, 2) Globals["OnlineAPIAdvantageCount"] = advantageCount Globals["OnlineAPIAdvantageUpdate"] = False self.previousAdvantageTeam = advantageTeam isStarPoint = isDeuce and advantageCount == 2 if isTieBreak: homeTiePoints = int(homePoints or "0") awayTiePoints = int(awayPoints or "0") homeSetPoint = homeTiePoints >= 6 and homeTiePoints > awayTiePoints awaySetPoint = awayTiePoints >= 6 and awayTiePoints > homeTiePoints else: homeGamePoint = advantageTeam == "HomeTeam" or isStarPoint or ( homePoints == "40" and awayPoints not in ("40", "AD")) awayGamePoint = advantageTeam == "AwayTeam" or isStarPoint or ( awayPoints == "40" and homePoints not in ("40", "AD")) homeSetPoint = homeGames >= 5 and homeGames > awayGames and homeGamePoint awaySetPoint = awayGames >= 5 and awayGames > homeGames and awayGamePoint pointTitle = None if homeSetPoint or awaySetPoint: leadingTeam, otherTeam = (home, away) if homeSetPoint else (away, home) setsWon = sum(1 for i in range(self.data["Sets"]) if results["Sets Finished"][i] and leadingTeam["Sets"][i] > otherTeam["Sets"][i]) if setsWon == self.data["Sets"] // 2: pointTitle = "Tournament Point" if str(self.roundName) == "F" else "Match Point" else: pointTitle = "Set Point" title = pointTitle if isStarPoint: homePoints = awayPoints = "SP" title = pointTitle + " Star Point" if pointTitle else "Star Point" elif isDeuce and advantageCount == 1: homePoints = awayPoints = "D2" title = "Deuce 2" elif advantageTeam: label = "AD%d" % advantageCount homePoints, awayPoints = (label, "") if advantageTeam == "HomeTeam" else ("", label) if pointTitle is None: title = "Advantage %d" % advantageCount elif not title and not isTieBreak and not isDeuce: homeService = home["Service"] != 0 if (homePoints == "40" and not homeService) or (awayPoints == "40" and homeService): title = "Breakpoint" self.scorebugPoints = (homePoints, awayPoints, title) except Exception as e: print "Erro CheckStatusOnline: %s" % e def btnInit_Click(sender, e): try: numSeconds.Value = int(ProjectSettings["API Crionet Timer"]) Globals["API"] = API() Globals["API"].Init() Globals["API"].clearAll() Globals["API"].GetDefault() Globals["API"].UpdateInfo() Globals["API"]._API__UpdateData() Globals["PadelScoreboard"].LastSum2Sets = 0 Globals["SponsorOnAnimantion"] = False # cboMatches.Text = "WORLD PADEL CHAMPIONSHIPS" #2024 cboMatches.Text = "FIP WORLD CUP 2026" #2026 #print dir(Globals["API"]) except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnPlay_Click(sender, e): try: btnStop_Click(None, None) Update() lblStatus.Text = "RUNNING..." Globals["API"].status = True Globals["PadelScoreboard"].LastSum2Sets = 0 Globals["SponsorOnAnimantion"] = False lblStatus.ForeColor = Color.SpringGreen except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def Update(): try: #Core.ScriptRunner.Execute("Init","Sportstats_Timer_TimerChanged",Project.Name, "API_CRIONET", "") #status = Globals["API"].GetInProgressMatches() status = True Globals["API"].GetInProgressMatches() if status: delay = int(ProjectSettings["API Crionet Timer"]) if Globals["R3_Manager"].OnAirScorebug: Project.ExecuteScript(Globals["R3_Manager"].OnAirScorebug, "Update") Scheduler.Add(Script.RefName, "Update", Project.Name, None, delay*1000, "API") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnStop_Click(sender, e): try: Scheduler.ClearScheduler("API") lblStatus.Text = "STOPPED" lblStatus.ForeColor = Color.Salmon Globals["SponsorOnAnimantion"] = False Globals["API"].status = False except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def numSeconds_ValueChanged(sender, e): try: ProjectSettings["API Crionet Timer"] = str(int(sender.Value)) ProjectSettings.Save() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnOnlineIn_Click(sender, e): try: if Globals["R3_Manager"].OnAirScorebug: return try: Project.ExecuteScript("Online_API") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnOnlineOut_Click(sender, e): try: Project.ExecuteScript("Online_API", "Out") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnBigScore_Click(sender, e): try: Project.ExecuteScript("BigScore_API") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def cboMatches_SelectedIndexChanged(sender, e): try: Globals["API"].clearAll() Globals["API"].GetDefault() Globals["API"].matchId = sender.Tag[sender.SelectedIndex] Globals["API"].UpdateInfo() Globals["API"].GetDraws() Globals["API"]._API__UpdateData() # if sender.Text == "WORLD PADEL CHAMPIONSHIPS": #2024 if sender.Text == "FIP WORLD CUP 2026": #2026 #Globals["API"].UpdateInfo() #Globals["API"].GetDaysIndex() #Globals["API"].GetDefault() #Globals["API"]._API__UpdateData() #Men's Doubles - MD #Women's Doubles - LD cboDraws.Items.Add("Men's Doubles") (cboDraws.Tag).append("MD") cboDraws.Items.Add("Women's Doubles") (cboDraws.Tag).append("LD") except Exception as e: print "Form has some errors" print str(e) def cboDraws_SelectedIndexChanged(sender, e): try: Globals["API"].draw = sender.Tag[sender.SelectedIndex] #print "Draw: %s" % sender.Tag[sender.SelectedIndex] Globals["API"].UpdateInfo() Globals["API"].GetDaysIndex() Globals["API"].GetDefault() Globals["API"]._API__UpdateData() #Globals["API"].GetDrawsMatchs() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def cboGameDate_SelectedIndexChanged(sender, e): try: Globals["API"].selectedIndex = sender.Tag[sender.SelectedIndex] Globals["API"].UpdateInfo() Globals["API"].GetDrawsMatchs() Globals["API"].GetDefault() Globals["API"]._API__UpdateData() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def cboDrawsMatchs_SelectedIndexChanged(sender, e): try: Globals["API"].gameId = sender.Tag[sender.SelectedIndex] item = Globals["API"].GetMatchInfo() Globals["API"].GetDefault() Globals["API"]._API__UpdateData() Globals["API"].UpdateInfo() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def createH(): try: Globals["API"].createHomePoints() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def createA(): try: Globals["API"].createAwayPoints() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def teste(): try: Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 0 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 1 Globals["PadelScoreboard"].UpdateInterface() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnReload_Click(sender, e): try: btnStop_Click(None,None) Globals["API"].gameId = None Globals["API"].matchesFilteredByDraw = None Globals["API"].points = { "HomeTeam" : "", "AwayTeam" : "" } Globals["API"].sets = { "HomeTeam" : [0,0,0,0,0], "AwayTeam" : [0,0,0,0,0] } Globals["API"].ad = { "HomeTeam" : False, "AwayTeam" : False } Globals["API"].matchFinished = None Globals["API"].oldSet = 1 Globals["API"].GetDefault() Globals["API"]._API__UpdateData() Globals["API"].clearRefresh() Globals["API"].GetDrawsMatchs() Globals["API"].UpdateInfo() #Globals["API"]._API__UpdateData() except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnHomeApiRetired_Click(sender, e): try: if Globals["R3_Manager"].OnAirLowerthird != "BigScore" and Globals["R3_Manager"].OnAirLowerthird != "BigScore_API": return if Globals["AwayRetiredOnair"]: #print "Chama o out do away pelo home" btnAwayApiRetired.BackColor = Color.DarkGray Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGray Project.ExecuteScript("BigScore", "awayRetiredOut") Thread.Sleep(500) if Globals["HomeRetiredOnair"]: #print "Chama o out" btnHomeApiRetired.BackColor = Color.DarkGray Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGray Project.ExecuteScript("BigScore", "homeRetiredOut") else: #print "chama o in" btnHomeApiRetired.BackColor = Color.DarkGreen Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGreen Project.ExecuteScript("BigScore", "homeRetiredIn") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnAwayApiRetired_Click(sender, e): try: if Globals["R3_Manager"].OnAirLowerthird != "BigScore" and Globals["R3_Manager"].OnAirLowerthird != "BigScore_API": return if Globals["HomeRetiredOnair"]: #print "Chama o out do home pelo away" btnHomeApiRetired.BackColor = Color.DarkGray Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGray Project.ExecuteScript("BigScore", "homeRetiredOut") Thread.Sleep(500) if Globals["AwayRetiredOnair"]: #print "Chama o out" btnAwayApiRetired.BackColor = Color.DarkGray Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGray Project.ExecuteScript("BigScore", "awayRetiredOut") else: #print "chama o in" btnAwayApiRetired.BackColor = Color.DarkGreen Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGreen Project.ExecuteScript("BigScore", "awayRetiredIn") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def Run(): try: numSeconds.Value = int(ProjectSettings["API Crionet Timer"]) Globals["API"] = API() Globals["API"].Init() #Globals["API"].clearAll() #Globals["API"].GetDefault() #Globals["API"].UpdateInfo() #Globals["API"]._API__UpdateData() #print dir(Globals["API"]) except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def HomeService_Click(sender, e): try: if HomeService.Checked: Globals["API"].manualHomeService = True AwayService.Checked = False AwayService2.Checked = False HomeService2.Checked = False Globals["API"].data["Results"]["HomeTeam"]["Service"] = 1 Globals["API"].data["Results"]["AwayTeam"]["Service"] = 0 else: Globals["API"].manualHomeService = False except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def HomeService2_Click(sender, e): try: if HomeService2.Checked: Globals["API"].manualHomeService = True AwayService.Checked = False AwayService2.Checked = False HomeService.Checked = False Globals["API"].data["Results"]["HomeTeam"]["Service"] = 2 Globals["API"].data["Results"]["AwayTeam"]["Service"] = 0 else: Globals["API"].manualHomeService = False except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def AwayService_Click(sender, e): try: if AwayService.Checked: Globals["API"].manualHomeService = True HomeService.Checked = False HomeService2.Checked = False AwayService2.Checked = False Globals["API"].data["Results"]["AwayTeam"]["Service"] = 1 Globals["API"].data["Results"]["HomeTeam"]["Service"] = 0 else: Globals["API"].manualHomeService = False except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def AwayService2_Click(sender, e): try: if AwayService2.Checked: Globals["API"].manualHomeService = True HomeService.Checked = False HomeService2.Checked = False AwayService.Checked = False Globals["API"].data["Results"]["AwayTeam"]["Service"] = 2 Globals["API"].data["Results"]["HomeTeam"]["Service"] = 0 else: Globals["API"].manualHomeService = False except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnSponsorApiIn_MouseClick(sender, e): try: Project.ExecuteScript("Online_API","HashtagIn") HashtagAutoTimeOut = int(Globals["ConfigForm"].data["HashtagTimeOut"]) if HashtagAutoTimeOut != 0: Scheduler.Add("Online_API", "HashtagOut", Project.Name, None, HashtagAutoTimeOut * 1000, "API") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnSponsorApiOut_MouseClick(sender, e): try: Project.ExecuteScript("Online_API","HashtagOut") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnBigScoreOut_Click(sender, e): try: Project.ExecuteScript("BigScore_API","Out") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnSponsor1In_Click(sender, e): try: #Protecão para não lançar o sponsor antes do Hashtag se tiver automático if not Globals["R3_Manager"].OnAirScorebugHashtag and Globals["ConfigForm"].data["HashtagTimeIn"] > 0: return try: Project.ExecuteScript("Online_API","SponsorOnlineIn", "1") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') def btnSponsor2In_Click(sender, e): try: #Protecão para não lançar o sponsor antes do Hashtag se tiver automático if not Globals["R3_Manager"].OnAirScorebugHashtag and Globals["ConfigForm"].data["HashtagTimeIn"] > 0: return try: Project.ExecuteScript("Online_API","SponsorOnlineIn", "2") except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error') except Exception as e: print "Form has some errors" print str(e) Core.StatusManager.Add(str(e), 'error')