class myScreen(PiInfoScreen): refreshtime = 60 displaytime = 5 pluginname = "FootballScores" plugininfo = "Displays live football scores for a chosen team" def setPluginVariables(self): self.myTeam = self.pluginConfig["Config"]["myteam"] self.myMatch = Match(self.myTeam,detailed=True) def showScreen(self): self.surface.fill([0,0,0]) scorefont = pygame.font.SysFont("freesans", 80) teamfont = pygame.font.SysFont("freesans", 50) self.myMatch.Update() if self.myMatch.JSONError: # Error parsing data errortext = pygame.font.SysFont("freesans",30).render("Error loading data.",1,(255,255,255)) errorrect = errortext.get_rect() errorrect.centerx = self.surface.get_rect().centerx errorrect.centery = self.surface.get_rect().centery self.surface.blit(errortext,errorrect) elif self.myMatch.MatchFound: # Draw competition name comptext = pygame.font.SysFont("freesans",30).render(self.myMatch.Competition,1,(255,255,255)) comprect = comptext.get_rect() comprect.centerx = self.surface.get_rect().centerx self.surface.blit(comptext,(comprect[0],20)) # Add today's date datetext = pygame.font.SysFont("freesans",20).render(self.myMatch.MatchDate,1,(255,255,255)) daterect = datetext.get_rect() daterect.centerx = comprect.centerx self.surface.blit(datetext, (daterect[0],60)) # Draw team names teamrect = pygame.Rect(0,0,200,80) hometeam = self.render_textrect(self.myMatch.HomeTeam, teamfont, teamrect, (255,255,255), (0,0,0), 2, shrink=True, SysFont="freesans", MaxFont=50, MinFont=10, vjustification=1) awayteam = self.render_textrect(self.myMatch.AwayTeam, teamfont, teamrect, (255,255,255), (0,0,0), 0, shrink=True, SysFont="freesans", MaxFont=50, MinFont=10, vjustification=1) self.surface.blit(hometeam, (45, 200)) self.surface.blit(awayteam, (445, 200)) # Draw scores score = scorefont.render("%s-%s" % (self.myMatch.HomeScore, self.myMatch.AwayScore),1,(255,255,255)) scorerect = score.get_rect() scorerect.centerx = self.surface.get_rect().centerx scorerect.centery = self.surface.get_rect().centery self.surface.blit(score,scorerect) # Draw match status status = pygame.font.SysFont("freesans",20).render("(%s)" % (self.myMatch.MatchTime), 1, (255,255,255)) statusrect = status.get_rect() statusrect.centerx=scorerect.centerx self.surface.blit(status,(statusrect[0],275)) # Display team badges # Home... if self.myMatch.HomeBadge: homebadge = pygame.transform.scale(self.LoadImageFromUrl(self.myMatch.HomeBadge),(66,66)) self.surface.blit(homebadge, (112, 120)) # ...and Away if self.myMatch.AwayBadge: awaybadge = pygame.transform.scale(self.LoadImageFromUrl(self.myMatch.AwayBadge),(66,66)) self.surface.blit(awaybadge, (512, 120)) # Display scorers scorerrect = pygame.Rect(0,0,200,150) scorerfont = teamfont = pygame.font.SysFont("freesans", 25) # Home... if self.myMatch.HomeScorers: hscorers = "\n".join(self.myMatch.HomeScorers) hscorerstext = self.render_textrect(hscorers, scorerfont, scorerrect, (255,255,255), (0,0,0), 1) self.surface.blit(hscorerstext, (45,275)) # ...and Away if self.myMatch.AwayScorers: ascorers = "\n".join(self.myMatch.AwayScorers) ascorerstext = self.render_textrect(ascorers, scorerfont, scorerrect, (255,255,255), (0,0,0), 1) self.surface.blit(ascorerstext, (445,275)) else: # Match not found so team aren't playing today errortext = pygame.font.SysFont("freesans",30).render("%s are not playing today." % (self.myTeam),1,(255,255,255)) errorrect = errortext.get_rect() errorrect.centerx = self.surface.get_rect().centerx errorrect.centery = self.surface.get_rect().centery self.surface.blit(errortext,errorrect) # Scale our surface to the required screensize before sending back scaled = pygame.transform.scale(self.surface,self.screensize) self.screen.blit(scaled,(0,0)) return self.screen