Untitled

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

Replies to Untitled rss

Title Name Language When
Re: Untitled Lousy Curlew text 4 Days ago.

Reply to "Untitled"

Here you can reply to the paste above