import clr clr.AddReference("Wtvision.Sports.Tools.UefaDigitalAPIImporter") from Wtvision.Sports import UefaDigitalApiProxy clr.AddReference("Wtvision.Sports.Models") from Wtvision.Sports.Models import ModelsTools from System.Threading.Tasks import Task from System import Array, DateTime from System.IO import Path, File import helper import smartpaging def __onStart(graphicOnAirItem, momentExecution, workFlowtype): extradata = graphicOnAirItem.ExtraData if not extradata.ContainsKey("ExternalTake"): helper.SetExtraData(extradata, "ExternalTake", "True") def __getData(graphicOnAirItem, viewBag, momentExecution): extradata = graphicOnAirItem.ExtraData competitionId = Game.Competition.IdCompetition logosPath = Path.Combine(graphicOnAirItem.GraphicsEngine.Options.RootPath, graphicOnAirItem.Scene.Path, "Images", "Badges") teamId = Game.AwayTeam.ExternalId seasonYear = Game.Competition.Season.ToString() stagesToShow = ["LEAGUE PHASE"] if extradata["ExternalTake"] == "True": matches = UefaDigitalApiProxy.GetMatches(offset= "0",limit = "500",competitionId = Array[str]([Game.Competition.IdCompetition]),teamId = teamId, seasonYear = seasonYear ) #Teams = UefaDigitalApiProxy.GetTeams(None, None, Game.Competition.IdCompetition, Game.Competition.Season, None, None, "0", "500") filtered_matches = filter(lambda match: match.Round.Translations.ShortName["EN"].ToString().upper() in stagesToShow, matches) sorted_matches = sorted(filtered_matches, key=lambda match: match.KickOffTime.Date) helper.SetExtraData(extradata, "total", len(sorted_matches)) helper.SetExtraData(extradata, "index", 0) helper.SetExtraData(extradata, "pageIndex", 0) helper.SetExtraData(extradata, "pages", (smartpaging.NonUniformPaging(len(sorted_matches), 4))) helper.SetExtraData(extradata, "summary", (sorted_matches)) index = extradata["index"] pageIndex = extradata["pageIndex"] pages = extradata["pages"] summary = extradata["summary"] pageEnd = pages[pageIndex] summary = summary[index:(index + int(pageEnd))] ## TITULO QUE TEM A POSSIÇÃO DA EQUIPA NO LEAGUE PHASE uefaGroups = UefaDigitalApiProxy.GetStandings(Game.Competition.IdCompetition, Game.Competition.Season) hometeamId = Game.HomeTeam.ExternalId awayteamId = Game.AwayTeam.ExternalId for uefaGroup in uefaGroups: awayTeam = filter(lambda x : x.Team.Id.ToString() == awayteamId.ToString(), uefaGroup.Items) homeTeam = filter(lambda x : x.Team.Id.ToString() == hometeamId.ToString(), uefaGroup.Items) if awayTeam and homeTeam: group = uefaGroup if not group: momentExecution.Message = "THERE IS NO GROUPS!!" momentExecution.Cancel = True return atLeastOneGame = False matchDay = Game.Attributes["MatchDayLongName"] matchDay = matchDay.split(" ") matchDayNumber = matchDay[1] leaguePhaseMaxGames = 8 for f in group.Items: if f.Team.InternationalName.upper() == Game.AwayTeam.ShortName.upper(): if int(matchDayNumber) > leaguePhaseMaxGames: positionStatus = "FINAL" else: positionStatus = "CURRENT" if f.Rank == 1 or f.Rank == 21 or f.Rank == 31: viewBag.SetTranslatedText("tTitle", "%s POSITION %sST" % (positionStatus, f.Rank)) elif f.Rank == 2 or f.Rank == 22 or f.Rank == 32: viewBag.SetTranslatedText("tTitle", "%s POSITION %sND" % (positionStatus, f.Rank)) elif f.Rank == 3 or f.Rank == 23 or f.Rank == 33: viewBag.SetTranslatedText("tTitle", "%s POSITION %sRD" % (positionStatus, f.Rank)) else: viewBag.SetTranslatedText("tTitle", "%s POSITION %sTH" % (positionStatus, f.Rank)) if f.Rank <= 8: viewBag.SetString("vTypeTitle", 1) elif f.Rank > 8 and f.Rank <= 24: viewBag.SetString("vTypeTitle", 2) else: viewBag.SetString("vTypeTitle", 3) ################################## viewBag.SetFloat("vLines",int(pageEnd)) viewBag.SetString("tTeamName", Game.AwayTeam.ShortName.upper()) team_path = Path.Combine(logosPath, "%s.png" % (Game.AwayTeam.RefName)) if File.Exists(team_path): viewBag.SetImage("lgBadge", team_path) else: viewBag.SetImage("lgBadge", "Images/vaz.png") for enum,match in enumerate(summary,1): home_full_name = next((name.Value for name in match.HomeTeam.Translations.DisplayOfficialName if name.Value != ""), None) home_display_name = next((name.Value for name in match.HomeTeam.Translations.DisplayName if name.Value != ""), None) home_ref_name = ModelsTools.GetRefName(home_full_name) home_team_path = Path.Combine(logosPath, "%s.png"%(home_ref_name)) away_full_name = next((name.Value for name in match.AwayTeam.Translations.DisplayOfficialName if name.Value != ""), None) away_display_name = next((name.Value for name in match.AwayTeam.Translations.DisplayName if name.Value != ""), None) away_ref_name = ModelsTools.GetRefName(away_full_name) away_team_path = Path.Combine(logosPath, "%s.png"%(away_ref_name)) if File.Exists(home_team_path): viewBag.SetImage("lgTeamHome%02d" % enum, home_team_path) else: viewBag.SetImage("lgTeamHome%02d" % enum, "Images/vaz.png") if File.Exists(away_team_path): viewBag.SetImage("lgTeamAway%02d" % enum, away_team_path) else: viewBag.SetImage("lgTeamAway%02d" % enum, "Images/vaz.png") viewBag.SetVisibility("vMatchdayVisibility%02d" % enum, True) viewBag.SetTranslatedText("tMatchday%02d" % enum, "{{%s}}.{{MATCHDAY}}|filter:ToUpper " % match.Matchday.LongName) viewBag.SetString("tHomeTeamName%02d" % enum, home_display_name.upper()) viewBag.SetString("tAwayTeamName%02d" % enum, away_display_name.upper()) if match.Status.ToString() == "FINISHED": atLeastOneGame = True viewBag.SetFloat("vTypeGameInfo%02d" % enum, 1) viewBag.SetString("tHomeScore%02d" % enum, match.Score.Regular.Home) viewBag.SetString("tAwayScore%02d" % enum, match.Score.Regular.Away) elif match.Status.ToString() == "UPCOMING": viewBag.SetFloat("vTypeGameInfo%02d" % enum, 2) time_diff = match.KickOffTime.DateTime - DateTime.Now if time_diff.Days < 1: viewBag.SetTranslatedText("tGameInfo%02d" % enum,"{{%s}}.{{Summary_Results}}|filter:ToUpper " % "TONIGHT") else: day = match.KickOffTime.DateTime.ToString("dd") month = match.KickOffTime.DateTime.ToString("MMM") viewBag.SetTranslatedText("tGameInfo%02d" % enum,"%s {{%s}}.{{Summary_Results}}|filter:ToUpper " % (day, month)) elif match.Status.ToString() == "LIVE": viewBag.SetFloat("vTypeGameInfo%02d" % enum, 1) viewBag.SetString("tHomeScore%02d" % enum, "(%s" % match.Score.Regular.Home) viewBag.SetString("tAwayScore%02d" % enum, "%s)" % match.Score.Regular.Away) if not atLeastOneGame: viewBag.SetString("vTypeTitle", 0) helper.SetExtraData(extradata, "ExternalTake", "True") helper.SetExtraData(extradata, "index", index + int(pageEnd)) helper.SetExtraData(extradata, "pageIndex", pageIndex+1) def __afterProgram(graphicOnAirItem, momentExecution): extradata = graphicOnAirItem.ExtraData pages = extradata["pages"] delay = int(Project.ProjectSettings["TeamProgressGS (ms)"]) / int(len(pages)) Task.Delay(int(delay)).ContinueWith(lambda x: __continueGraphic(graphicOnAirItem, momentExecution)) helper.SetExtraData(extradata, "ExternalTake", "False") def __continueGraphic(graphicOnAirItem, momentExecution): extradata = graphicOnAirItem.ExtraData index = extradata["index"] total = extradata["total"] if index < total: helper.SetExtraData(extradata, "NextPage", "True") IntelliflowController.TakeInNextPage(graphicOnAirItem.Graphic, OutputManager.ActiveChannelOutput, workflowType=IntelliflowController.EWorkflowType.Program, )