Untitled

From Dinis, 4 Days ago, written in Plain Text, viewed 3 times. This paste will self destruct in 3 Weeks.
URL https://paste.afonso.co/view/2ff7ed8e Embed
Download Paste or View Raw
  1. # -*- encoding: utf-8 -*-
  2. clr.AddReference("System.Windows.Forms")
  3. from System.Windows.Forms import *
  4. #
  5. clr.AddReference("System.Drawing")
  6. from System.Drawing import *
  7. #
  8. clr.AddReference("System.Net")
  9. from System.Net import WebRequest, ServicePointManager, SecurityProtocolType
  10. #
  11. clr.AddReference("System.IO")
  12. from System.IO import StreamReader
  13. #
  14. import base64, json, codecs
  15. #
  16. from System.Threading import *
  17. from datetime import datetime, timedelta
  18. from collections import OrderedDict
  19. class API:
  20.         def __init__(self):
  21.                 self.data = {}
  22.                 self.advantageGame = None
  23.                 self.advantageCount = 0
  24.                 self.previousAdvantageTeam = None
  25.                 self.scorebugPoints = ("0", "0", None)
  26.                 self.matchId = None
  27.                 self.events = []
  28.                 self.draw = None
  29.                 self.gameId = None
  30.                 self.gameIndex = None
  31.                 self.selectedIndex = None
  32.                 self.matchesFilteredByDraw = None
  33.                 self.lastScore = None
  34.                 self.lastStats = None
  35.                 self.statusConn = None
  36.                 self.roundName = ""
  37.                 self.points = {
  38.                         "HomeTeam" : "",
  39.                         "AwayTeam" : ""        
  40.                 }
  41.                 self.sets = {
  42.                         "HomeTeam" : [0,0,0,0,0],
  43.                         "AwayTeam" : [0,0,0,0,0]       
  44.                 }
  45.                 self.ad = {
  46.                         "HomeTeam" : False,
  47.                         "AwayTeam" : False     
  48.                 }
  49.                 self.matchFinished = None
  50.                 self.oldSet = 0
  51.                 self.test = CheckTesting.Checked
  52.                 Globals["Rewind"] = False
  53.                 self.status = False
  54.                 self.manualHomeService = False
  55.                 self.manualAwayService = False
  56.                 Globals["SponsorOnAnimantion"] = False
  57.                 #self.set_all_controls_visible(self)
  58.                
  59.         def Init(self):
  60.                 Globals["frmApiCrionet"] = Script.Form.Form
  61.                 self.GetDefault()
  62.                 self.matchId = None
  63.                 self.draw = None
  64.                 self.gameId = None
  65.                 self.gameIndex = None
  66.                 self.selectedIndex = None
  67.                 self.matchesFilteredByDraw = None
  68.                 self.statusConn = None
  69.                 self.roundName = ""
  70.                 self.points = {
  71.                         "HomeTeam" : "",
  72.                         "AwayTeam" : ""        
  73.                 }
  74.                 self.sets = {
  75.                         "HomeTeam" : [0,0,0,0,0],
  76.                         "AwayTeam" : [0,0,0,0,0]
  77.                 }
  78.                 self.ad = {
  79.                         "HomeTeam" : False,
  80.                         "AwayTeam" : False     
  81.                 }
  82.                 self.matchFinished = None
  83.                 self.oldSet = 0
  84.                 status = self.__Login()
  85.                
  86.                 if status:
  87.                         return self.__GetScheduledMatches()
  88.                 else:
  89.                         return None
  90.                        
  91.                 self.manualHomeService = False
  92.                 self.manualAwayService = False
  93.                
  94.         def set_all_controls_visible(self, parent):
  95.                 for control in Script.Form.Form.Controls:
  96.                         control.Visible = True
  97.                         #if control.Controls.Count > 0:
  98.                                 #self.set_all_controls_visible(control)
  99.                
  100.         def GetDefault(self):
  101.                 self.advantageGame = None
  102.                 self.advantageCount = 0
  103.                 self.previousAdvantageTeam = None
  104.                 self.scorebugPoints = ("0", "0", None)
  105.                 self.data = {"Sets": 3,
  106.                                         "Match Finished": False,
  107.                                         "Resolution Match": "NORMAL",
  108.                                         "Resolution Match Points": 11,
  109.                                         "Golden Point": "STAR POINT",
  110.                                         "TieBreak": False,
  111.                                         "Tie Break Service": 1,
  112.                                         "Results": {"CurrentSet": 1,
  113.                                                                 "TieBreak": False,
  114.                                                                 "Times": [0, 0, 0, 0, 0],
  115.                                                                 "Sets Finished": [False, False, False, False, False],
  116.                                                                 "Deuces": 0,
  117.                                                                 "HomeTeam": {"Guid": ActiveObjects.HomeTeam.Id.ToString(), "Name": ActiveObjects.HomeTeam.ShortName.ToUpper(),
  118.                                                                                 "Players": [],
  119.                                                                                 "CurrentGame": "0",
  120.                                                                                 "Service": 1,
  121.                                                                                 "LastService": 1,
  122.                                                                                 "Sets": [0, 0, 0, 0, 0],
  123.                                                                                 "TieBreaks": [0, 0, 0, 0, 0],
  124.                                                                                 "Golden Points Total By Set": [0, 0, 0, 0, 0],
  125.                                                                                 "Golden Points Converted By Set": [0, 0, 0, 0, 0],
  126.                                                                                 "Golden Points Total": 0,
  127.                                                                                 "Golden Points Converted": 0,
  128.                                                                                 "Break Points Total By Set": [0, 0, 0, 0, 0],
  129.                                                                                 "Break Points Converted By Set": [0, 0, 0, 0, 0],
  130.                                                                                 "Break Points Total": 0,
  131.                                                                                 "Break Points Converted": 0,
  132.                                                                                 "Winners By Set": [0, 0, 0, 0, 0],
  133.                                                                                 "Winners Total": 0,
  134.                                                                                 "Unforced Errors By Set": [0, 0, 0, 0, 0],
  135.                                                                                 "Unforced Errors Total": 0,
  136.                                                                                 "Smashes Total By Set": [0, 0, 0, 0, 0],
  137.                                                                                 "Smashes Winners By Set": [0, 0, 0, 0, 0],
  138.                                                                                 "Smashes Total": 0,
  139.                                                                                 "Smashes Winners Converted": 0},
  140.                                                                 "AwayTeam": {"Guid": ActiveObjects.AwayTeam.Id.ToString(), "Name": ActiveObjects.AwayTeam.ShortName.ToUpper(),
  141.                                                                                 "Players": [],
  142.                                                                                 "CurrentGame": "0",
  143.                                                                                 "Service": 0,
  144.                                                                                 "LastService": 2,
  145.                                                                                 "Sets": [0, 0, 0, 0, 0],
  146.                                                                                 "TieBreaks": [0, 0, 0, 0, 0],
  147.                                                                                 "Golden Points Total By Set": [0, 0, 0, 0, 0],
  148.                                                                                 "Golden Points Converted By Set": [0, 0, 0, 0, 0],
  149.                                                                                 "Golden Points Total": 0,
  150.                                                                                 "Golden Points Converted": 0,
  151.                                                                                 "Golden Points By Set": [0, 0, 0, 0, 0],
  152.                                                                                 "Golden Points Total": 0,
  153.                                                                                 "Break Points Total By Set": [0, 0, 0, 0, 0],
  154.                                                                                 "Break Points Converted By Set": [0, 0, 0, 0, 0],
  155.                                                                                 "Break Points Total": 0,
  156.                                                                                 "Break Points Converted": 0,
  157.                                                                                 "Winners By Set": [0, 0, 0, 0, 0],
  158.                                                                                 "Winners Total": 0,
  159.                                                                                 "Unforced Errors By Set": [0, 0, 0, 0, 0],
  160.                                                                                 "Unforced Errors Total": 0,
  161.                                                                                 "Smashes Total By Set": [0, 0, 0, 0, 0],
  162.                                                                                 "Smashes Winners By Set": [0, 0, 0, 0, 0],
  163.                                                                                 "Smashes Total": 0,
  164.                                                                                 "Smashes Winners Converted": 0},
  165.                                                         }
  166.                                         }
  167.                
  168.         def __Login(self):
  169.                 #print "Login"
  170.                 if not Globals.Contains("API_Token"):
  171.                         url = ProjectSettings["API Crionet URL"] #+ "/login"
  172.                         user = ProjectSettings["API Crionet User"]
  173.                         password = ProjectSettings["API Crionet Password"]
  174.                         ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
  175.                         request = WebRequest.Create(url)
  176.                         request.Timeout = 5000
  177.                         #request.Headers.Add(credentials)
  178.                         request.Headers.Add("falstaff-key", password)
  179.                         request.ContentType = "application/json"
  180.                         request.ContentLength = 0
  181.                         request.Method = "POST"
  182.                         try:
  183.                                 response = request.GetResponse()
  184.                                 if response.StatusCode.ToString() == "OK":
  185.                                         Globals["API_Token"] = response.GetResponseHeader("Token")
  186.                                         response.Close()
  187.                                         print "Login success!!!"
  188.                                         self.statusConn = "Connected"
  189.                                         return True
  190.                         except:
  191.                                 response.Close()
  192.                                 print "Login Failed!!!"
  193.                                 self.statusConn = "Error"
  194.                                 return False
  195.                 else:
  196.                         print "Login success!!!"
  197.                         self.statusConn = "Connected"
  198.                         return True
  199.                        
  200.         def __GetScheduledMatches(self):
  201.                 #print "__GetScheduledMatches"
  202.                 if Globals.Contains("API_Token"):                              
  203.                         TID = ProjectSettings["API Crionet TID"]
  204.                         VID = ProjectSettings["API Crionet VID"]
  205.                         password = ProjectSettings["API Crionet Password"]
  206.                         year = ProjectSettings["Year"]
  207.                         organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"]
  208.                         url = ProjectSettings["API Crionet URL"] + "/api/tournaments/%s/%s/" % (organization,year)
  209.                         ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
  210.                         request = WebRequest.Create(url)
  211.                         request.Timeout = 5000
  212.                         request.Headers.Add("falstaff-key", password)
  213.                         request.ContentType = "application/json"
  214.                         request.Method = "GET"
  215.                         try:
  216.                                 response = request.GetResponse()
  217.                                 sr = StreamReader(response.GetResponseStream())                
  218.                                 json_string = sr.ReadToEnd()                           
  219.                                 items = json.loads(json_string)
  220.                                 response.Close()
  221.                                 cboMatches.Items.Clear()
  222.                                 cboMatches.Text = ""
  223.                                 cboMatches.Tag = []
  224.                                 self.events = items
  225.                                
  226.                                 for i, item in enumerate(items):
  227.                                         nameCompetition = item['fullName']
  228.                                         cboMatches.Items.Add(nameCompetition)
  229.                                         (cboMatches.Tag).append(item["eventCode"])
  230.                                        
  231.                         except:
  232.                                 print "Error ocurred"
  233.                                
  234.         def GetInProgressMatches(self):
  235.                 if Globals.Contains("API_Token"):
  236.                         try:
  237.                                 self.GetMatchInfo()
  238.                                 items = self.matchesFilteredByDraw
  239.                                 self.__RefreshScore(items)
  240.                                 self.lastScore = datetime.today().strftime('%H:%M:%S')
  241.                                 self.UpdateInfo()
  242.                                 return True
  243.                         except Exception as e:
  244.                                 print "Error getting In Progress Matches: %s" %e
  245.                                 return False
  246.        
  247.         def GetDraws(self):
  248.                 #print "GetDraws"
  249.                 #print "Self.Events: %s" %self.events
  250.                 #print "Event Code: %s" % self.matchId
  251.                 event = list(filter(lambda x: x["eventCode"] == self.matchId, self.events))[0]
  252.                 #print event
  253.                 indexDate = {}
  254.                 startDate = event["startDate"]
  255.                 endDate = event["endDate"]
  256.                 newDate = ""
  257.                 startDate = datetime.strptime(startDate, "%m/%d/%Y %I:%M:%S %p")
  258.                 endDate = datetime.strptime(endDate, "%m/%d/%Y %I:%M:%S %p")
  259.                 diferenca = endDate - startDate
  260.                
  261.                 for i in range(int(diferenca.days)+1):
  262.                         if newDate == "":
  263.                                 indexDate[i] = startDate
  264.                                 newDate = startDate
  265.                         else:
  266.                                 indexDate[i] = newDate + timedelta(days=1)
  267.                                 newDate = newDate + timedelta(days=1)
  268.                
  269.                 self.gameIndex = indexDate
  270.                 draws = event["draws"]
  271.                 cboDraws.Text = ""
  272.                 cboDraws.Items.Clear()
  273.                 cboDraws.Tag = []
  274.                
  275.                 for draw in draws:
  276.                         cboDraws.Items.Add(draw["name"])
  277.                         (cboDraws.Tag).append(draw["type"])
  278.                
  279.         def GetDaysIndex(self):
  280.                 cboGameDate.Items.Clear()
  281.                 cboGameDate.Tag = []
  282.                 for idx,i in enumerate(self.gameIndex,1):
  283.                         cboGameDate.Items.Add(self.gameIndex[i].strftime("%m/%d/%Y"))
  284.                         (cboGameDate.Tag).append(idx)
  285.                
  286.         def GetDrawsMatchs(self,clear=True,insert=True):
  287.                 password = ProjectSettings["API Crionet Password"]
  288.                 year = ProjectSettings["Year"]
  289.                 organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"]
  290.                
  291.                 if self.test:
  292.                         url = "http://localhost:3000/courtSchedules"
  293.                 else:
  294.                         url = ProjectSettings["API Crionet URL"] + "/api/oop/%s/%s/%s/%s" % (organization,year,self.matchId,self.selectedIndex)
  295.                
  296.                 # LOG - o que vamos pedir
  297.                 print "[GetDrawsMatchs] URL: %s" % url
  298.                 print "[GetDrawsMatchs] matchId=%s | selectedIndex=%s | draw=%s | test=%s" % (self.matchId, self.selectedIndex, self.draw, self.test)
  299.                
  300.                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
  301.                 request = WebRequest.Create(url)
  302.                 request.Timeout = 5000
  303.                 request.Headers.Add("falstaff-key", password)
  304.                 request.ContentType = "application/json"
  305.                 request.Method = "GET"
  306.                 if clear != False:
  307.                         cboDrawsMatchs.Text = ""
  308.                         cboDrawsMatchs.Items.Clear()
  309.                 try:
  310.                         response = request.GetResponse()
  311.                         print "[GetDrawsMatchs] HTTP status: %s" % response.StatusCode.ToString()
  312.                         sr = StreamReader(response.GetResponseStream())
  313.                         json_string = sr.ReadToEnd()
  314.                         items = json.loads(json_string)
  315.                         response.Close()
  316.                        
  317.                         # LOG - guardar a resposta crua (só com o debug ativo)
  318.                         if chkDebug.Checked:
  319.                                 self.__SaveJSON(items, "DrawsMatchs_day%s" % self.selectedIndex)
  320.                        
  321.                         courtSchedules = items["courtSchedules"]
  322.                         allItems = [item for schedule in courtSchedules for item in schedule.get("items", [])]
  323.                         print "[GetDrawsMatchs] courts=%s | total jogos na resposta=%s" % (len(courtSchedules), len(allItems))
  324.                         print "[GetDrawsMatchs] matchIds recebidos: %s" % [i["match"]["matchId"] for i in allItems]
  325.                        
  326.                         prefixes = {"LD": ("LD", "WD"), "WD": ("LD", "WD"), "MD": ("MD",)}.get(self.draw, (self.draw,))
  327.                         drawsMatchesFiltered = list(filter(lambda item: item["match"]["matchId"].startswith(prefixes), allItems))
  328.                         print "[GetDrawsMatchs] depois do filtro '%s': %s jogos" % (self.draw, len(drawsMatchesFiltered))
  329.                        
  330.                         drawsMatchesFiltered = sorted(drawsMatchesFiltered,key=lambda x: x['match']['matchId'])
  331.                         self.matchesFilteredByDraw = drawsMatchesFiltered
  332.                         cboDrawsMatchs.Tag = []
  333.                        
  334.                         for drawMatch in drawsMatchesFiltered:
  335.                                 drawMatchId = drawMatch['match']["matchId"]
  336.                                 homeCountry = ""
  337.                                 awayCountry = ""
  338.                                 try:
  339.                                         homePlayer = drawMatch['match']['team1']["player"]["lastName"].split()
  340.                                         homePlayer = homePlayer[-1].upper() if len(homePlayer) > 1 else homePlayer[0].upper()
  341.                                 except:
  342.                                         homePlayer = ""
  343.                                 try:
  344.                                         homeCountry = drawMatch['match']['team1']["player"]['countryCode']
  345.                                         awayCountry = drawMatch['match']['team2']["player"]['countryCode']
  346.                                 except:
  347.                                         pass
  348.                                 try:   
  349.                                         homePartner = drawMatch['match']['team1']["partner"]["lastName"].split()
  350.                                         homePartner = homePartner[-1].upper() if len(homePartner) > 1 else homePartner[0].upper()
  351.                                 except:
  352.                                         homePartner = ""
  353.                                 try:
  354.                                         awayPlayer = drawMatch['match']['team2']["player"]["lastName"].split()
  355.                                         awayPlayer = awayPlayer[-1].upper() if len(awayPlayer) > 1 else awayPlayer[0].upper()
  356.                                 except:
  357.                                         awayPlayer = ""
  358.                                 try:
  359.                                         awayPartner = drawMatch['match']['team2']["partner"]["lastName"].split()
  360.                                         awayPartner = awayPartner[-1].upper() if len(awayPartner) > 1 else awayPartner[0].upper()
  361.                                 except:
  362.                                         awayPartner = ""
  363.                                        
  364.                                 if insert == True:
  365.                                         cboDrawsMatchs.Items.Add("%s - (%s) %s - %s | %s - %s (%s)" % (drawMatchId,homeCountry,homePlayer,homePartner,awayPlayer,awayPartner,awayCountry))
  366.                                         (cboDrawsMatchs.Tag).append(drawMatchId)
  367.                                
  368.                         return drawsMatchesFiltered
  369.                 except Exception as e:
  370.                         print "Error ocurred %s" %e
  371.                        
  372.         def GetMatchInfo(self):
  373.                 #print "GetMatchInfo"
  374.                 password = ProjectSettings["API Crionet Password"]
  375.                 year = ProjectSettings["Year"]
  376.                 organization = ProjectSettings["Organization (ie, FIP, PPT, etc.)"]
  377.                 if self.test:
  378.                         url = "http://localhost:3000/matchinfo"
  379.                 else:
  380.                         url = ProjectSettings["API Crionet URL"] + "/api/matchinfo/%s/%s/%s/%s" % (organization,year,self.matchId,self.gameId)
  381.                 #for Testing:
  382.                 #url = "http://localhost:3000/matchinfo"
  383.                
  384.                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
  385.                 request = WebRequest.Create(url)
  386.                 request.Timeout = 5000
  387.                 request.Headers.Add("falstaff-key", password)
  388.                 request.ContentType = "application/json"
  389.                 request.Method = "GET"
  390.                 try:
  391.                         response = request.GetResponse()
  392.                         sr = StreamReader(response.GetResponseStream())                
  393.                         json_string = sr.ReadToEnd()                           
  394.                         items = json.loads(json_string)
  395.                         response.Close()
  396.                        
  397.                         if chkDebug.Checked:
  398.                                 self.__SaveJSON(items, "Matchdata")
  399.                                
  400.                         self.matchesFilteredByDraw = items
  401.                        
  402.                         if items['status'] == "F":
  403.                                 self.matchFinished = True
  404.                                 self.data["Match Finished"] = True
  405.                         else:
  406.                                 self.matchFinished = False
  407.                                 self.data["Match Finished"] = False
  408.                                
  409.                         if lblStatus.Text == "API ERROR":
  410.                                 lblStatus.Text = "RUNNING..."
  411.                                 lblStatus.ForeColor = Color.SpringGreen
  412.                
  413.                 except Exception as e:
  414.                         print "Error ocurred %s" %e
  415.                         lblStatus.Text = "API ERROR"
  416.                         lblStatus.ForeColor = Color.Salmon
  417.                         return
  418.                        
  419.                 return items
  420.                        
  421.         def __GetStats(self):
  422.                 #print "__GetStats"
  423.                 if Globals.Contains("API_Token") and self.matchId:
  424.                         try:
  425.                                 items = self.GetDrawsMatchs(False,False)
  426.                                 if chkDebug.Checked:
  427.                                         self.__SaveJSON(items, "Stats")
  428.                                 self.lastStats = datetime.today().strftime('%H:%M:%S')
  429.                                 self.UpdateInfo()
  430.                                 return True
  431.                         except:
  432.                                 response.Close()
  433.                                 print "Error getting In Progress Matches"
  434.                                 return False
  435.                                
  436.         def __RefreshScore(self, item):
  437.                 #print "__RefreshScore"
  438.                 try:
  439.                         status = item['status']
  440.                         self.roundName = item['roundName']
  441.                         if status == "F":
  442.                                 self.matchFinished = True
  443.                         else:
  444.                                 self.matchFinished = False
  445.                         sets = {"Team1": [],"Team2": []}
  446.                         ties = {"Team1": [],"Team2": []}
  447.                         for i in range(1,6):
  448.                                 sets['Team1'].append(item["score"]["team1"]["set%s"%i])
  449.                                 sets['Team2'].append(item["score"]["team2"]["set%s"%i])
  450.                                 ties['Team1'].append(item["score"]["team1"]["tie%s"%i])
  451.                                 ties['Team2'].append(item["score"]["team2"]["tie%s"%i])
  452.                                
  453.                                 Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Sets"][i-1] = int(item["score"]["team1"]["set%s"%i]) if item["score"]["team1"]["set%s"%i] else 0
  454.                                 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Sets"][i-1] = int(item["score"]["team2"]["set%s"%i]) if item["score"]["team2"]["set%s"%i] else 0
  455.                         Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["CurrentGame"] = str(item["score"]["team1"]["points"])
  456.                         Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["CurrentGame"] = str(item["score"]["team2"]["points"])
  457.                         last_valid_index = [idx for idx, x in enumerate(sets['Team1']) if x is not None]
  458.                         last_valid_index = last_valid_index[-1:][0] if last_valid_index[-1:] else None
  459.                        
  460.                         if last_valid_index == None:
  461.                                 # Ajust for service before score
  462.                                 self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 else 2 if item["score"]["server"] == 3  else 0
  463.                                 self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 else 2 if item["score"]["server"] == 4 else 0
  464.                                 return
  465.                                
  466.                         self.data["Results"]["CurrentSet"] = str(int(last_valid_index) + 1 )
  467.                         Globals["PadelScoreboard"].data["Results"]["CurrentSet"] = int(last_valid_index) + 1
  468.                        
  469.                         for i in range(0,int(self.data["Results"]["CurrentSet"])-1):
  470.                                 self.data["Results"]["Sets Finished"][i] = True
  471.                        
  472.                         del self.data["Results"]["HomeTeam"]["Players"][:]
  473.                         del self.data["Results"]["AwayTeam"]["Players"][:]
  474.                        
  475.                         (self.data["Results"]["HomeTeam"]["Players"]).append(item["team1"]["player"])
  476.                         (self.data["Results"]["HomeTeam"]["Players"]).append(item["team1"]["partner"])
  477.                         (self.data["Results"]["AwayTeam"]["Players"]).append(item["team2"]["player"])
  478.                         (self.data["Results"]["AwayTeam"]["Players"]).append(item["team2"]["partner"])
  479.                                
  480.                         #Points
  481.                         self.data["Results"]["HomeTeam"]["CurrentGame"] = str(item["score"]["team1"]["points"]) if not item["score"]["team1"]["points"] == None else "0"
  482.                         self.data["Results"]["AwayTeam"]["CurrentGame"] = str(item["score"]["team2"]["points"]) if not item["score"]["team2"]["points"] == None else "0"
  483.                        
  484.                         if self.data["Results"]["HomeTeam"]["CurrentGame"] != "" and self.data["Results"]["HomeTeam"]["CurrentGame"] != self.points["HomeTeam"]  and status == "P":
  485.                                 if self.data["Results"]["HomeTeam"]["CurrentGame"].lower() == "ad" and not self.ad["HomeTeam"]:
  486.                                         self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"]
  487.                                         if self.data["Results"]["HomeTeam"]["CurrentGame"]!= "0":
  488.                                                 #Colocar ponto no form sem usar o click
  489.                                                 #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None)
  490.                                                 self.ad["HomeTeam"] = True
  491.                                                 self.ad["AwayTeam"] = False
  492.                                                
  493.                                 if not self.ad["HomeTeam"]:
  494.                                         #print "Create point for HomeTeam"
  495.                                         if self.data["Results"]["HomeTeam"]["CurrentGame"]!= "0":
  496.                                                 #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None)
  497.                                                 self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"]
  498.                                
  499.                         if self.ad["HomeTeam"]:
  500.                                 if int(sets['Team1'][last_valid_index]) > int(self.sets["HomeTeam"][last_valid_index]):
  501.                                         #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None)
  502.                                         self.sets["HomeTeam"][last_valid_index] = sets['Team1'][last_valid_index]
  503.                                         self.points["AwayTeam"] = "0"
  504.                                         self.points["HomeTeam"] = "0"
  505.                                         self.data["Results"]["HomeTeam"]["CurrentGame"]= "0"
  506.                                         self.data["Results"]["AwayTeam"]["CurrentGame"]= "0"
  507.                                         self.ad["HomeTeam"] = False
  508.                                         self.ad["AwayTeam"] = False
  509.                                        
  510.                                 if self.data["Results"]["HomeTeam"]["CurrentGame"] == "40":
  511.                                         #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None)
  512.                                         self.ad["HomeTeam"] = False
  513.                                         self.ad["AwayTeam"] = False
  514.                                         self.points["HomeTeam"] = self.data["Results"]["HomeTeam"]["CurrentGame"]
  515.                                        
  516.                                        
  517.                         if int(sets['Team1'][last_valid_index]) > int(self.sets["HomeTeam"][last_valid_index]) and status == "P":
  518.                                 #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None)
  519.                                 self.sets["HomeTeam"][last_valid_index] = sets['Team1'][last_valid_index]
  520.                                 self.points["AwayTeam"] = "0"
  521.                                 self.points["HomeTeam"] = "0"
  522.                                 self.data["Results"]["HomeTeam"]["CurrentGame"]= "0"
  523.                                 self.data["Results"]["AwayTeam"]["CurrentGame"]= "0"
  524.                         if self.data["Results"]["AwayTeam"]["CurrentGame"] != "" and self.data["Results"]["AwayTeam"]["CurrentGame"] != self.points["AwayTeam"]  and status == "P":
  525.                                 if self.data["Results"]["AwayTeam"]["CurrentGame"].lower() == "ad" and not self.ad["AwayTeam"]:
  526.                                         self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"]
  527.                                         if self.data["Results"]["AwayTeam"]["CurrentGame"]!= "0":
  528.                                                 #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None)
  529.                                                 self.ad["HomeTeam"] = False
  530.                                                 self.ad["AwayTeam"] = True
  531.                                
  532.                                 if not self.ad["AwayTeam"]:
  533.                                         #print "Create point for AwayTeam"
  534.                                         if self.data["Results"]["AwayTeam"]["CurrentGame"]!= "0":
  535.                                                 #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None)
  536.                                                 self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"]              
  537.                                        
  538.                         if self.ad["AwayTeam"]:
  539.                                 if int(sets['Team2'][last_valid_index]) > int(self.sets["AwayTeam"][last_valid_index]):
  540.                                         #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None)
  541.                                         self.sets["AwayTeam"][last_valid_index] = sets['Team2'][last_valid_index]
  542.                                         self.points["AwayTeam"] = "0"
  543.                                         self.points["HomeTeam"] = "0"
  544.                                         self.data["Results"]["HomeTeam"]["CurrentGame"]= "0"
  545.                                         self.data["Results"]["AwayTeam"]["CurrentGame"]= "0"
  546.                                         self.ad["HomeTeam"] = False
  547.                                         self.ad["AwayTeam"] = False
  548.                                        
  549.                                 if self.data["Results"]["AwayTeam"]["CurrentGame"] == "40":
  550.                                         #Globals["PadelScoreboard"].SetPoint(ActiveObjects.HomeTeam, None)
  551.                                         self.ad["HomeTeam"] = False
  552.                                         self.ad["AwayTeam"] = False
  553.                                         self.points["AwayTeam"] = self.data["Results"]["AwayTeam"]["CurrentGame"]
  554.                                        
  555.                         if int(sets['Team2'][last_valid_index]) > int(self.sets["AwayTeam"][last_valid_index]) and status == "P":
  556.                                         #Globals["PadelScoreboard"].SetPoint(ActiveObjects.AwayTeam, None)
  557.                                         self.sets["AwayTeam"][last_valid_index] = sets['Team2'][last_valid_index]
  558.                                         self.points["AwayTeam"] = "0"
  559.                                         self.points["HomeTeam"] = "0"
  560.                                         self.data["Results"]["HomeTeam"]["CurrentGame"]= "0"
  561.                                         self.data["Results"]["AwayTeam"]["CurrentGame"]= "0"
  562.                        
  563.                         # Sets, Tie Breaks, Times
  564.                         scoreHome = 0
  565.                         scoreAway = 0
  566.                         for i in range(0,5):
  567.                                 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
  568.                                 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
  569.                                
  570.                                 self.data["Results"]["HomeTeam"]["TieBreaks"][i] = item["score"]["team1"]["tie%s"%(i+1)]
  571.                                 self.data["Results"]["AwayTeam"]["TieBreaks"][i] = item["score"]["team2"]["tie%s"%(i+1)]
  572.                                
  573.                         curSet = int(self.data["Results"]["CurrentSet"])-1
  574.                        
  575.                         # Verify if is TieBreak
  576.                         # If set is 2 or more. In this case index 0 set 1 index 1 set 2
  577.                         #print "CurSet %s type: %s"  % (curSet, type(curSet))
  578.                         if curSet >= 1:
  579.                                 #print "Home CurSet: %s type: %s" % (self.data["Results"]["HomeTeam"]["Sets"][curSet], type(self.data["Results"]["HomeTeam"]["Sets"][curSet]))
  580.                                 #print "Away CurSet: %s type: %s" % (self.data["Results"]["AwayTeam"]["Sets"][curSet], type(self.data["Results"]["AwayTeam"]["Sets"][curSet]))
  581.                                 if self.data["Results"]["HomeTeam"]["Sets"][curSet] >= 6 and self.data["Results"]["AwayTeam"]["Sets"][curSet] >= 6:
  582.                                         #print "Setei TieBreak true "
  583.                                         self.data["TieBreak"] = True
  584.                                 else:
  585.                                         self.data["TieBreak"] = False
  586.                                        
  587.                         # Service
  588.                        
  589.                         if self.manualHomeService == False and self.manualAwayService == False:
  590.                                 #self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 or item["score"]["server"] == 3 else 0
  591.                                 #self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 or item["score"]["server"] == 4 else 0
  592.                                 self.data["Results"]["HomeTeam"]["Service"] = 1 if item["score"]["server"] == 1 else 2 if item["score"]["server"] == 3  else 0
  593.                                 self.data["Results"]["AwayTeam"]["Service"] = 1 if item["score"]["server"] == 2 else 2 if item["score"]["server"] == 4 else 0
  594.                        
  595.                         if self.data["Results"]["HomeTeam"]["Service"] == 1:
  596.                                 Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 1  
  597.                                 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 0
  598.                                 Globals["PadelScoreboard"].UpdateInterface()
  599.                         elif self.data["Results"]["AwayTeam"]["Service"] == 1:
  600.                                 Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 0  
  601.                                 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 1
  602.                                 Globals["PadelScoreboard"].UpdateInterface()
  603.                                
  604.                         #SET FINISHED
  605.                        
  606.                         #if self.data["Resolution Match"] == "NO LAST TIE BREAK":
  607.                                 #if self.data["Results"]["CurrentSet"] == int(cboNumSets.Text):
  608.                                         #if self.data["Results"][actionTeam]["Sets"][currentSet-1] > 5:
  609.                                                 #if (self.data["Results"][otherTeam]["Sets"][currentSet-1] + 1) < self.data["Results"][actionTeam]["Sets"][currentSet-1]:
  610.                                                         ##self.SetFinished()
  611.                                                         #setFinished = True
  612.                                                        
  613.                         #else:
  614.                         ##########################################################################################
  615.                        
  616.                         #print "TieBreak: %s" % self.data["TieBreak"]
  617.                         #print "Home: %s Type: %s" % (self.data["Results"]["HomeTeam"]["Sets"][curSet], type(self.data["Results"]["HomeTeam"]["Sets"][curSet]))
  618.                         #print "Away: %s Type: %s "  %(self.data["Results"]["AwayTeam"]["Sets"][curSet], type(self.data["Results"]["AwayTeam"]["Sets"][curSet]))
  619.                        
  620.                         if self.data["Results"]["HomeTeam"]["Sets"][curSet] == 6:
  621.                                 if self.data["Results"]["AwayTeam"]["Sets"][curSet] < 5: # SET WON
  622.                                         Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  623.                                         self.data["Results"]["Sets Finished"][curSet] = True
  624.                                
  625.                         elif self.data["Results"]["HomeTeam"]["Sets"][curSet] == 7:
  626.                                 if not self.data["TieBreak"]:
  627.                                         if self.data["Results"]["AwayTeam"]["Sets"][curSet] in [5,6]: #--> SET WON
  628.                                                 Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  629.                                                 self.data["Results"]["Sets Finished"][curSet] = True
  630.                                 else:
  631.                                         Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  632.                                         self.data["Results"]["Sets Finished"][curSet] = True
  633.                        
  634.                         elif self.data["Results"]["AwayTeam"]["Sets"][curSet] == 6:
  635.                                 if self.data["Results"]["HomeTeam"]["Sets"][curSet] < 5: # SET WON
  636.                                         Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  637.                                         self.data["Results"]["Sets Finished"][curSet] = True
  638.                                
  639.                         elif self.data["Results"]["AwayTeam"]["Sets"][curSet] == 7:
  640.                                 if not self.data["TieBreak"]:
  641.                                         if self.data["Results"]["HomeTeam"]["Sets"][curSet] in [5,6]: #--> SET WON
  642.                                                 Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  643.                                                 self.data["Results"]["Sets Finished"][curSet] = True
  644.                                 else:
  645.                                         Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = True
  646.                                         self.data["Results"]["Sets Finished"][curSet] = True           
  647.                        
  648.                         else:
  649.                                 #print "Cai no else"
  650.                                 Globals["PadelScoreboard"].data["Results"]["Sets Finished"][curSet] = False
  651.                                 self.data["Results"]["Sets Finished"][curSet] = False
  652.                                
  653.                        
  654.                         self.CheckStatusOnline()
  655.                         if int(self.data["Results"]["CurrentSet"]) > int(self.oldSet):
  656.                                 Project.ExecuteScript("Online_API", "SetFinished")
  657.                                 self.oldSet = self.data["Results"]["CurrentSet"]
  658.                                 return
  659.                                
  660.                        
  661.                        
  662.                         Globals["PadelScoreboard"].UpdateInterface()
  663.                         self.__UpdateData()
  664.                        
  665.                        
  666.                        
  667.                 except Exception as e:
  668.                         import os
  669.                         import sys
  670.                         e_type, e_object, e_traceback = sys.exc_info()
  671.                         e_filename = os.path.split(
  672.                                 e_traceback.tb_frame.f_code.co_filename
  673.                         )[1]
  674.                         e_message = str(e)
  675.                         e_line_number = e_traceback.tb_lineno
  676.                         print('exception line number: %s'%e_line_number)
  677.                         print('exception message: %s' %e_message)
  678.                        
  679.         def __UpdateData(self):
  680.                 #print "Update data"
  681.                 try:
  682.                         frm = Script.Form.Form
  683.                         teams = ["Home", "Away"]
  684.                        
  685.                         for i in range(2):
  686.                                 if len(self.data["Results"][teams[i] + "Team"]["Players"]) > 0:
  687.                                         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()
  688.                                 else:
  689.                                         frm.Controls["lbl" + teams[i] + "Team"].Text = "-"                     
  690.                                        
  691.                                 frm.Controls["lbl" + teams[i] + "Point"].Text = self.data["Results"][teams[i] + "Team"]["CurrentGame"]
  692.                                 for x in range(5):
  693.                                         frm.Controls["lbl" + teams[i] + "Set" + str(x+1).zfill(2)].Text = str(self.data["Results"][teams[i] + "Team"]["Sets"][x])
  694.                                         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 "-"
  695.                                                
  696.                                         #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"])
  697.                                         #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"])
  698.                                         #frm.Controls["lbl" + teams[i] + "UnforcedError"].Text = "0"
  699.                                         #frm.Controls["lbl" + teams[i] + "Winner"].Text = "0"
  700.                                         #frm.Controls["lbl" + teams[i] + "Smash"].Text = "0"
  701.                                        
  702.                                         #if self.manualHomeService:
  703.                                                 #frm.Controls["HomeService"].Checked = True
  704.                                        
  705.                                         #if self.manualAwayService:
  706.                                                 #frm.Controls["AwayService"].Checked = True
  707.                                        
  708.                                         if self.manualHomeService == False and self.manualAwayService == False:
  709.                                                         pass
  710.                                         if self.data["Results"][teams[i] + "Team"]["Service"] == 0:
  711.                                                 frm.Controls["lbl" + teams[i] + "Team"].ForeColor = Color.WhiteSmoke
  712.                                                 #frm.Controls[teams[i] + "Service"].Checked = False
  713.                                         else:
  714.                                                 frm.Controls["lbl" + teams[i] + "Team"].ForeColor = Color.SpringGreen
  715.                                                 #frm.Controls[teams[i] + "Service"].Checked = True
  716.                         self.fillColorSetWinner()
  717.                 except Exception as e:
  718.                         print "Error on __UpdateData: %s" % e
  719.                        
  720.         def fillColorSetWinner(self):
  721.                 frm = Script.Form.Form
  722.                 for i in range(3):
  723.                         valueHome = int(frm.Controls["lblHomeSet%02d"%(i+1)].Text)
  724.                         valueAway = int(frm.Controls["lblAwaySet%02d"%(i+1)].Text)
  725.                         if valueHome > valueAway:
  726.                                 #print "Home Maior"
  727.                                 frm.Controls["lblHomeSet%02d"%(i+1)].ForeColor = Color.SpringGreen
  728.                         elif valueAway > valueHome:
  729.                                 #print "Away Maior"
  730.                                 frm.Controls["lblAwaySet%02d"%(i+1)].ForeColor = Color.SpringGreen
  731.                         else:
  732.                                 #print "Os Dois Iguais"
  733.                                 frm.Controls["lblHomeSet%02d"%(i+1)].ForeColor = Color.WhiteSmoke
  734.                                 frm.Controls["lblAwaySet%02d"%(i+1)].ForeColor = Color.WhiteSmoke
  735.                                        
  736.         def UpdateInfo(self, error = ""):
  737.                 #print "UpdateInfo"
  738.                 if self.matchId and self.draw and self.selectedIndex:
  739.                         btnReload.Enabled = True
  740.                 else:
  741.                         btnReload.Enabled = False
  742.                        
  743.                 msg = ""
  744.                 if self.test:
  745.                         msg += ("TESTING.... " + "\n")
  746.                 msg += ("Status API: " + str(self.statusConn) + "\n")
  747.                 if self.matchId:       
  748.                         msg += ("Competition ID: " + str(self.matchId) + "\n")
  749.                
  750.                 if self.draw:
  751.                         msg += ("Draw: " + str(self.draw) + "\n")
  752.                
  753.                 if self.gameId:
  754.                         msg += ("Game ID: " + str(self.gameId) + "\n")
  755.                         msg += ("Match Finished: " + str(self.matchFinished) + "\n")
  756.                        
  757.                 msg += ("Last Score Update: " + str(self.lastScore) + "\n")
  758.                
  759.                 curSet = int(self.data["Results"]["CurrentSet"])-1
  760.                 setIsFinish = self.data["Results"]["Sets Finished"][curSet]
  761.                 msg += ("Set(%s) Finish: %s " % (str(curSet + 1),setIsFinish )+ "\n")
  762.                
  763.                 if not error == "":
  764.                         msg += ("Error: " + error + "\n\n")
  765.                        
  766.                 lblInfo.Text = msg
  767.                
  768.         def clearAll(self):
  769.                 #print "Limpando tudo!"
  770.                 cboDraws.Text = ""
  771.                 cboDraws.Items.Clear()
  772.                 cboGameDate.Text = ""
  773.                 cboGameDate.Items.Clear()
  774.                 cboDrawsMatchs.Text = ""
  775.                 cboDrawsMatchs.Items.Clear()
  776.                 self.matchId = None
  777.                 self.draw = None
  778.                 self.gameId = None
  779.                 self.gameIndex = None
  780.                 self.selectedIndex = None
  781.                 self.matchesFilteredByDraw = None
  782.                 self.manualHomeService = False
  783.                 self.manualAwayService = False
  784.                 HomeService.Checked = False
  785.                 AwayService.Checked = False
  786.                 Globals["API"].LastSum2Sets = 0
  787.                
  788.         def clearRefresh(self):
  789.                 self.gameId = None
  790.                 self.matchesFilteredByDraw = None
  791.                
  792.         def __SaveJSON(self, data, name):
  793.                 time4json = datetime.today().strftime('%Y%m%d_%H%M%S%f')
  794.                 output_file = codecs.open(Project.AddonsDataPath + "\\API\\MATCHDATA\\" + "%s_%s.json" % (name,time4json), "w", encoding="utf-8")
  795.                 json.dump(data, output_file, sort_keys=False, indent=4, ensure_ascii=False)
  796.                
  797.         def createHomePoints(self):
  798.                 pointsIdx = {"0":"15","15":"30","30":"40","40":""}
  799.                 try:
  800.                         points = self.data["Results"]["HomeTeam"]["CurrentGame"]
  801.                 except:
  802.                         points = "0"
  803.                
  804.                 newPoints = pointsIdx[points]
  805.                 self.data["Results"]["HomeTeam"]["CurrentGame"] = newPoints
  806.                 self.CheckStatusOnline()
  807.                
  808.         def createAwayPoints(self):
  809.                 pointsIdx = {"0":"15","15":"30","30":"40","40":""}
  810.                 try:
  811.                         points = self.data["Results"]["AwayTeam"]["CurrentGame"]
  812.                 except:
  813.                         points = "0"
  814.                 newPoints = pointsIdx[points]
  815.                 self.data["Results"]["AwayTeam"]["CurrentGame"] = newPoints
  816.                 self.CheckStatusOnline()
  817.                
  818.         def CheckStatusOnline(self):
  819.                 try:
  820.                         results = self.data["Results"]
  821.                         currentSet = int(results["CurrentSet"])
  822.                         home = results["HomeTeam"]
  823.                         away = results["AwayTeam"]
  824.                         homePoints = home["CurrentGame"].upper()
  825.                         awayPoints = away["CurrentGame"].upper()
  826.                         homeGames = int(home["Sets"][currentSet - 1])
  827.                         awayGames = int(away["Sets"][currentSet - 1])
  828.  
  829.                         game = (self.gameId, currentSet, homeGames, awayGames)
  830.                         if game != self.advantageGame or (homePoints, awayPoints) == ("0", "0"):
  831.                                 self.advantageGame = game
  832.                                 self.advantageCount = 0
  833.                                 self.previousAdvantageTeam = None
  834.  
  835.                         if self.data["Match Finished"] or results["Sets Finished"][currentSet - 1]:
  836.                                 self.scorebugPoints = ("", "", None)
  837.                                 return
  838.  
  839.                         isTieBreak = self.data["TieBreak"] or (homeGames, awayGames) == (6, 6)
  840.                         isDeuce = not isTieBreak and (homePoints, awayPoints) == ("40", "40")
  841.                         advantageTeam = None
  842.                         if not isTieBreak:
  843.                                 if homePoints == "AD":
  844.                                         advantageTeam = "HomeTeam"
  845.                                 elif awayPoints == "AD":
  846.                                         advantageTeam = "AwayTeam"
  847.  
  848.                         if advantageTeam and advantageTeam != self.previousAdvantageTeam:
  849.                                 self.advantageCount = min(self.advantageCount + 1, 2)
  850.                         if advantageTeam or isDeuce:
  851.                                 self.previousAdvantageTeam = advantageTeam
  852.                         isStarPoint = isDeuce and self.advantageCount == 2
  853.  
  854.                         if isTieBreak:
  855.                                 homeTiePoints = int(homePoints or "0")
  856.                                 awayTiePoints = int(awayPoints or "0")
  857.                                 homeSetPoint = homeTiePoints >= 6 and homeTiePoints > awayTiePoints
  858.                                 awaySetPoint = awayTiePoints >= 6 and awayTiePoints > homeTiePoints
  859.                         else:
  860.                                 homeGamePoint = advantageTeam == "HomeTeam" or isStarPoint or (
  861.                                         homePoints == "40" and awayPoints not in ("40", "AD"))
  862.                                 awayGamePoint = advantageTeam == "AwayTeam" or isStarPoint or (
  863.                                         awayPoints == "40" and homePoints not in ("40", "AD"))
  864.                                 homeSetPoint = homeGames >= 5 and homeGames > awayGames and homeGamePoint
  865.                                 awaySetPoint = awayGames >= 5 and awayGames > homeGames and awayGamePoint
  866.  
  867.                         pointTitle = None
  868.                         if homeSetPoint or awaySetPoint:
  869.                                 leadingTeam, otherTeam = (home, away) if homeSetPoint else (away, home)
  870.                                 setsWon = sum(1 for i in range(self.data["Sets"])
  871.                                         if results["Sets Finished"][i] and leadingTeam["Sets"][i] > otherTeam["Sets"][i])
  872.                                 if setsWon == self.data["Sets"] // 2:
  873.                                         pointTitle = "Tournament Point" if str(self.roundName) == "F" else "Match Point"
  874.                                 else:
  875.                                         pointTitle = "Set Point"
  876.  
  877.                         title = pointTitle
  878.                         if isStarPoint:
  879.                                 homePoints = awayPoints = "SP"
  880.                                 title = pointTitle + " Star Point" if pointTitle else "Star Point"
  881.                         elif isDeuce and self.advantageCount == 1:
  882.                                 homePoints = awayPoints = "D2"
  883.                                 title = "Deuce 2"
  884.                         elif advantageTeam:
  885.                                 label = "AD%d" % self.advantageCount
  886.                                 homePoints, awayPoints = (label, "") if advantageTeam == "HomeTeam" else ("", label)
  887.                                 if pointTitle in (None, "Set Point"):
  888.                                         title = "Advantage %d" % self.advantageCount
  889.                         elif not title and not isTieBreak and not isDeuce:
  890.                                 homeService = home["Service"] != 0
  891.                                 if (homePoints == "40" and not homeService) or (awayPoints == "40" and homeService):
  892.                                         title = "Breakpoint"
  893.  
  894.                         self.scorebugPoints = (homePoints, awayPoints, title)
  895.                 except Exception as e:
  896.                         print "Erro CheckStatusOnline: %s" % e
  897.  
  898.  
  899. def btnInit_Click(sender, e):
  900.         try:
  901.                 numSeconds.Value = int(ProjectSettings["API Crionet Timer"])
  902.                 Globals["API"] = API()
  903.                 Globals["API"].Init()
  904.                 Globals["API"].clearAll()
  905.                 Globals["API"].GetDefault()
  906.                 Globals["API"].UpdateInfo()
  907.                 Globals["API"]._API__UpdateData()
  908.                 Globals["PadelScoreboard"].LastSum2Sets = 0
  909.                 Globals["SponsorOnAnimantion"] = False
  910. #               cboMatches.Text = "WORLD PADEL CHAMPIONSHIPS" #2024
  911.                 cboMatches.Text = "FIP WORLD CUP 2026" #2026
  912.                 #print dir(Globals["API"])
  913.         except Exception as e:
  914.                 print "Form has some errors"
  915.                 print str(e)
  916.                 Core.StatusManager.Add(str(e), 'error')
  917. def btnPlay_Click(sender, e):
  918.         try:
  919.                 btnStop_Click(None, None)
  920.                                
  921.                 Update()       
  922.                                
  923.                 lblStatus.Text = "RUNNING..."
  924.                 Globals["API"].status = True
  925.                 Globals["PadelScoreboard"].LastSum2Sets = 0
  926.                 Globals["SponsorOnAnimantion"] = False
  927.                 lblStatus.ForeColor = Color.SpringGreen
  928.         except Exception as e:
  929.                 print "Form has some errors"
  930.                 print str(e)
  931.                 Core.StatusManager.Add(str(e), 'error')
  932. def Update():
  933.         try:
  934.                 #Core.ScriptRunner.Execute("Init","Sportstats_Timer_TimerChanged",Project.Name, "API_CRIONET", "")
  935.                 #status = Globals["API"].GetInProgressMatches()
  936.                 status = True
  937.                 Globals["API"].GetInProgressMatches()
  938.                 if status:
  939.                         delay = int(ProjectSettings["API Crionet Timer"])
  940.                         if Globals["R3_Manager"].OnAirScorebug:
  941.                                 Project.ExecuteScript(Globals["R3_Manager"].OnAirScorebug, "Update")
  942.                         Scheduler.Add(Script.RefName, "Update", Project.Name, None, delay*1000, "API")
  943.         except Exception as e:
  944.                 print "Form has some errors"
  945.                 print str(e)
  946.                 Core.StatusManager.Add(str(e), 'error')
  947. def btnStop_Click(sender, e):
  948.         try:
  949.                 Scheduler.ClearScheduler("API")
  950.                 lblStatus.Text = "STOPPED"
  951.                 lblStatus.ForeColor = Color.Salmon
  952.                 Globals["SponsorOnAnimantion"] = False
  953.                 Globals["API"].status = False
  954.         except Exception as e:
  955.                 print "Form has some errors"
  956.                 print str(e)
  957.                 Core.StatusManager.Add(str(e), 'error')
  958. def numSeconds_ValueChanged(sender, e):
  959.         try:
  960.                 ProjectSettings["API Crionet Timer"] = str(int(sender.Value))
  961.                 ProjectSettings.Save()
  962.         except Exception as e:
  963.                 print "Form has some errors"
  964.                 print str(e)
  965.                 Core.StatusManager.Add(str(e), 'error')
  966. def btnOnlineIn_Click(sender, e):
  967.         try:
  968.                
  969.                 if Globals["R3_Manager"].OnAirScorebug:
  970.                         return
  971.                 try:
  972.                         Project.ExecuteScript("Online_API")
  973.                 except Exception as e:
  974.                         print "Form has some errors"
  975.                         print str(e)
  976.                         Core.StatusManager.Add(str(e), 'error')
  977.                        
  978.         except Exception as e:
  979.                 print "Form has some errors"
  980.                 print str(e)
  981.                 Core.StatusManager.Add(str(e), 'error')
  982. def btnOnlineOut_Click(sender, e):
  983.         try:
  984.                 Project.ExecuteScript("Online_API", "Out")
  985.         except Exception as e:
  986.                 print "Form has some errors"
  987.                 print str(e)
  988.                 Core.StatusManager.Add(str(e), 'error')
  989.                
  990. def btnBigScore_Click(sender, e):
  991.         try:
  992.                 Project.ExecuteScript("BigScore_API")
  993.         except Exception as e:
  994.                 print "Form has some errors"
  995.                 print str(e)
  996.                 Core.StatusManager.Add(str(e), 'error')
  997.                                
  998. def cboMatches_SelectedIndexChanged(sender, e):
  999.         try:
  1000.                 Globals["API"].clearAll()
  1001.                 Globals["API"].GetDefault()
  1002.                 Globals["API"].matchId = sender.Tag[sender.SelectedIndex]
  1003.                 Globals["API"].UpdateInfo()
  1004.                 Globals["API"].GetDraws()
  1005.                 Globals["API"]._API__UpdateData()
  1006.                
  1007. #               if sender.Text == "WORLD PADEL CHAMPIONSHIPS": #2024
  1008.                 if sender.Text == "FIP WORLD CUP 2026": #2026
  1009.                         #Globals["API"].UpdateInfo()
  1010.                         #Globals["API"].GetDaysIndex()
  1011.                         #Globals["API"].GetDefault()
  1012.                         #Globals["API"]._API__UpdateData()
  1013.                         #Men's Doubles - MD
  1014.                         #Women's Doubles - LD
  1015.                        
  1016.                         cboDraws.Items.Add("Men's Doubles")
  1017.                         (cboDraws.Tag).append("MD")
  1018.                         cboDraws.Items.Add("Women's Doubles")
  1019.                         (cboDraws.Tag).append("LD")
  1020.                
  1021.         except Exception as e:
  1022.                 print "Form has some errors"
  1023.                 print str(e)
  1024.                
  1025. def cboDraws_SelectedIndexChanged(sender, e):
  1026.         try:
  1027.                 Globals["API"].draw = sender.Tag[sender.SelectedIndex]
  1028.                 #print "Draw: %s" % sender.Tag[sender.SelectedIndex]
  1029.                 Globals["API"].UpdateInfo()
  1030.                 Globals["API"].GetDaysIndex()
  1031.                 Globals["API"].GetDefault()
  1032.                 Globals["API"]._API__UpdateData()
  1033.                 #Globals["API"].GetDrawsMatchs()
  1034.         except Exception as e:
  1035.                 print "Form has some errors"
  1036.                 print str(e)
  1037.                 Core.StatusManager.Add(str(e), 'error')
  1038.                        
  1039. def cboGameDate_SelectedIndexChanged(sender, e):
  1040.         try:
  1041.                 Globals["API"].selectedIndex = sender.Tag[sender.SelectedIndex]
  1042.                 Globals["API"].UpdateInfo()
  1043.                 Globals["API"].GetDrawsMatchs()
  1044.                 Globals["API"].GetDefault()
  1045.                 Globals["API"]._API__UpdateData()
  1046.                
  1047.         except Exception as e:
  1048.                 print "Form has some errors"
  1049.                 print str(e)
  1050.                 Core.StatusManager.Add(str(e), 'error')
  1051.                                
  1052. def cboDrawsMatchs_SelectedIndexChanged(sender, e):
  1053.         try:
  1054.                 Globals["API"].gameId = sender.Tag[sender.SelectedIndex]
  1055.                 item = Globals["API"].GetMatchInfo()
  1056.                 Globals["API"].GetDefault()
  1057.                 Globals["API"]._API__UpdateData()
  1058.                 Globals["API"].UpdateInfo()
  1059.         except Exception as e:
  1060.                 print "Form has some errors"
  1061.                 print str(e)
  1062.                 Core.StatusManager.Add(str(e), 'error')
  1063.                
  1064. def createH():
  1065.         try:
  1066.                 Globals["API"].createHomePoints()
  1067.         except Exception as e:
  1068.                 print "Form has some errors"
  1069.                 print str(e)
  1070.                 Core.StatusManager.Add(str(e), 'error')
  1071.                
  1072. def createA():
  1073.         try:
  1074.                 Globals["API"].createAwayPoints()
  1075.         except Exception as e:
  1076.                 print "Form has some errors"
  1077.                 print str(e)
  1078.                 Core.StatusManager.Add(str(e), 'error')
  1079.                
  1080. def teste():
  1081.         try:
  1082.                 Globals["PadelScoreboard"].data["Results"]["HomeTeam"]["Service"] = 0  
  1083.                 Globals["PadelScoreboard"].data["Results"]["AwayTeam"]["Service"] = 1
  1084.                 Globals["PadelScoreboard"].UpdateInterface()
  1085.         except Exception as e:
  1086.                 print "Form has some errors"
  1087.                 print str(e)
  1088.                 Core.StatusManager.Add(str(e), 'error')
  1089.                
  1090. def btnReload_Click(sender, e):
  1091.         try:
  1092.                 btnStop_Click(None,None)
  1093.                 Globals["API"].gameId = None
  1094.                 Globals["API"].matchesFilteredByDraw = None
  1095.                 Globals["API"].points = {
  1096.                         "HomeTeam" : "",
  1097.                         "AwayTeam" : ""        
  1098.                 }
  1099.                 Globals["API"].sets = {
  1100.                         "HomeTeam" : [0,0,0,0,0],
  1101.                         "AwayTeam" : [0,0,0,0,0]
  1102.                 }
  1103.                 Globals["API"].ad = {
  1104.                         "HomeTeam" : False,
  1105.                         "AwayTeam" : False     
  1106.                 }
  1107.                 Globals["API"].matchFinished = None
  1108.                 Globals["API"].oldSet = 1
  1109.                 Globals["API"].GetDefault()
  1110.                 Globals["API"]._API__UpdateData()
  1111.                 Globals["API"].clearRefresh()
  1112.                 Globals["API"].GetDrawsMatchs()
  1113.                 Globals["API"].UpdateInfo()
  1114.                 #Globals["API"]._API__UpdateData()
  1115.         except Exception as e:
  1116.                 print "Form has some errors"
  1117.                 print str(e)
  1118.                 Core.StatusManager.Add(str(e), 'error')
  1119. def btnHomeApiRetired_Click(sender, e):
  1120.         try:
  1121.                
  1122.                 if Globals["R3_Manager"].OnAirLowerthird != "BigScore" and Globals["R3_Manager"].OnAirLowerthird != "BigScore_API": return
  1123.                
  1124.                 if Globals["AwayRetiredOnair"]:
  1125.                         #print "Chama o out do away pelo home"
  1126.                         btnAwayApiRetired.BackColor = Color.DarkGray
  1127.                         Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGray
  1128.                         Project.ExecuteScript("BigScore", "awayRetiredOut")
  1129.                         Thread.Sleep(500)
  1130.                        
  1131.                 if Globals["HomeRetiredOnair"]:
  1132.                         #print "Chama o out"
  1133.                         btnHomeApiRetired.BackColor = Color.DarkGray
  1134.                         Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGray
  1135.                         Project.ExecuteScript("BigScore", "homeRetiredOut")
  1136.                 else:
  1137.                         #print "chama o in"
  1138.                         btnHomeApiRetired.BackColor = Color.DarkGreen
  1139.                         Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGreen
  1140.                         Project.ExecuteScript("BigScore", "homeRetiredIn")
  1141.                        
  1142.         except Exception as e:
  1143.                 print "Form has some errors"
  1144.                 print str(e)
  1145.                 Core.StatusManager.Add(str(e), 'error')
  1146.                
  1147. def btnAwayApiRetired_Click(sender, e):
  1148.         try:
  1149.                 if Globals["R3_Manager"].OnAirLowerthird != "BigScore" and Globals["R3_Manager"].OnAirLowerthird != "BigScore_API": return
  1150.                
  1151.                 if Globals["HomeRetiredOnair"]:
  1152.                         #print "Chama o out do home pelo away"
  1153.                         btnHomeApiRetired.BackColor = Color.DarkGray
  1154.                         Globals["frmPadelScoreboard"].Controls["btnHomeRetired"].BackColor = Color.DarkGray
  1155.                         Project.ExecuteScript("BigScore", "homeRetiredOut")
  1156.                         Thread.Sleep(500)
  1157.                        
  1158.                 if Globals["AwayRetiredOnair"]:
  1159.                         #print "Chama o out"
  1160.                         btnAwayApiRetired.BackColor = Color.DarkGray
  1161.                         Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGray
  1162.                         Project.ExecuteScript("BigScore", "awayRetiredOut")
  1163.                 else:
  1164.                         #print "chama o in"
  1165.                         btnAwayApiRetired.BackColor = Color.DarkGreen
  1166.                         Globals["frmPadelScoreboard"].Controls["btnAwayRetired"].BackColor = Color.DarkGreen
  1167.                         Project.ExecuteScript("BigScore", "awayRetiredIn")
  1168.         except Exception as e:
  1169.                 print "Form has some errors"
  1170.                 print str(e)
  1171.                 Core.StatusManager.Add(str(e), 'error')
  1172.        
  1173.                
  1174. def Run():
  1175.         try:
  1176.                 numSeconds.Value = int(ProjectSettings["API Crionet Timer"])
  1177.                 Globals["API"] = API()
  1178.                 Globals["API"].Init()
  1179.                 #Globals["API"].clearAll()
  1180.                 #Globals["API"].GetDefault()
  1181.                 #Globals["API"].UpdateInfo()
  1182.                 #Globals["API"]._API__UpdateData()
  1183.                 #print dir(Globals["API"])
  1184.         except Exception as e:
  1185.                 print "Form has some errors"
  1186.                 print str(e)
  1187.                 Core.StatusManager.Add(str(e), 'error')
  1188. def HomeService_Click(sender, e):
  1189.         try:
  1190.                 if HomeService.Checked:
  1191.                         Globals["API"].manualHomeService = True
  1192.                         AwayService.Checked = False
  1193.                         AwayService2.Checked = False
  1194.                         HomeService2.Checked = False
  1195.                         Globals["API"].data["Results"]["HomeTeam"]["Service"] = 1
  1196.                         Globals["API"].data["Results"]["AwayTeam"]["Service"] = 0
  1197.                 else:
  1198.                         Globals["API"].manualHomeService = False
  1199.        
  1200.                
  1201.         except Exception as e:
  1202.                 print "Form has some errors"
  1203.                 print str(e)
  1204.                 Core.StatusManager.Add(str(e), 'error')
  1205.                
  1206. def HomeService2_Click(sender, e):
  1207.         try:
  1208.                 if HomeService2.Checked:
  1209.                         Globals["API"].manualHomeService = True
  1210.                         AwayService.Checked = False
  1211.                         AwayService2.Checked = False
  1212.                         HomeService.Checked = False
  1213.                         Globals["API"].data["Results"]["HomeTeam"]["Service"] = 2
  1214.                         Globals["API"].data["Results"]["AwayTeam"]["Service"] = 0
  1215.                 else:
  1216.                         Globals["API"].manualHomeService = False
  1217.                        
  1218.                
  1219.         except Exception as e:
  1220.                 print "Form has some errors"
  1221.                 print str(e)
  1222.                 Core.StatusManager.Add(str(e), 'error')        
  1223. def AwayService_Click(sender, e):
  1224.         try:
  1225.                
  1226.                 if AwayService.Checked:
  1227.                         Globals["API"].manualHomeService = True
  1228.                         HomeService.Checked = False
  1229.                         HomeService2.Checked = False
  1230.                         AwayService2.Checked = False
  1231.                         Globals["API"].data["Results"]["AwayTeam"]["Service"] = 1
  1232.                         Globals["API"].data["Results"]["HomeTeam"]["Service"] = 0
  1233.                 else:
  1234.                         Globals["API"].manualHomeService = False       
  1235.                        
  1236.         except Exception as e:
  1237.                 print "Form has some errors"
  1238.                 print str(e)
  1239.                 Core.StatusManager.Add(str(e), 'error')
  1240.                
  1241. def AwayService2_Click(sender, e):
  1242.         try:
  1243.                
  1244.                 if AwayService2.Checked:
  1245.                         Globals["API"].manualHomeService = True
  1246.                         HomeService.Checked = False
  1247.                         HomeService2.Checked = False
  1248.                         AwayService.Checked = False
  1249.                         Globals["API"].data["Results"]["AwayTeam"]["Service"] = 2
  1250.                         Globals["API"].data["Results"]["HomeTeam"]["Service"] = 0
  1251.                 else:
  1252.                         Globals["API"].manualHomeService = False       
  1253.         except Exception as e:
  1254.                 print "Form has some errors"
  1255.                 print str(e)
  1256.                 Core.StatusManager.Add(str(e), 'error')
  1257. def btnSponsorApiIn_MouseClick(sender, e):
  1258.         try:
  1259.                 Project.ExecuteScript("Online_API","HashtagIn")
  1260.                 HashtagAutoTimeOut = int(Globals["ConfigForm"].data["HashtagTimeOut"])
  1261.                 if HashtagAutoTimeOut != 0:
  1262.                         Scheduler.Add("Online_API", "HashtagOut", Project.Name, None, HashtagAutoTimeOut * 1000, "API")
  1263.         except Exception as e:
  1264.                 print "Form has some errors"
  1265.                 print str(e)
  1266.                 Core.StatusManager.Add(str(e), 'error')
  1267. def btnSponsorApiOut_MouseClick(sender, e):
  1268.         try:
  1269.                 Project.ExecuteScript("Online_API","HashtagOut")
  1270.         except Exception as e:
  1271.                 print "Form has some errors"
  1272.                 print str(e)
  1273.                 Core.StatusManager.Add(str(e), 'error')
  1274. def btnBigScoreOut_Click(sender, e):
  1275.         try:
  1276.                 Project.ExecuteScript("BigScore_API","Out")
  1277.         except Exception as e:
  1278.                 print "Form has some errors"
  1279.                 print str(e)
  1280.                 Core.StatusManager.Add(str(e), 'error')
  1281.        
  1282. def btnSponsor1In_Click(sender, e):
  1283.         try:
  1284.                 #Protecão para não lançar o sponsor antes do Hashtag se tiver automático
  1285.                 if not Globals["R3_Manager"].OnAirScorebugHashtag and Globals["ConfigForm"].data["HashtagTimeIn"] > 0:
  1286.                         return
  1287.                 try:
  1288.                         Project.ExecuteScript("Online_API","SponsorOnlineIn", "1")
  1289.                 except Exception as e:
  1290.                         print "Form has some errors"
  1291.                         print str(e)
  1292.                         Core.StatusManager.Add(str(e), 'error')
  1293.                
  1294.         except Exception as e:
  1295.                 print "Form has some errors"
  1296.                 print str(e)
  1297.                 Core.StatusManager.Add(str(e), 'error')
  1298.        
  1299. def btnSponsor2In_Click(sender, e):
  1300.         try:
  1301.                 #Protecão para não lançar o sponsor antes do Hashtag se tiver automático
  1302.                 if not Globals["R3_Manager"].OnAirScorebugHashtag and Globals["ConfigForm"].data["HashtagTimeIn"] > 0:
  1303.                         return
  1304.                 try:
  1305.                         Project.ExecuteScript("Online_API","SponsorOnlineIn", "2")
  1306.                 except Exception as e:
  1307.                         print "Form has some errors"
  1308.                         print str(e)
  1309.                         Core.StatusManager.Add(str(e), 'error')
  1310.                
  1311.         except Exception as e:
  1312.                 print "Form has some errors"
  1313.                 print str(e)
  1314.                 Core.StatusManager.Add(str(e), 'error')
  1315.                
  1316.  

Reply to "Untitled"

Here you can reply to the paste above