Exemplo n.º 1
0
 def start_crawler(self):
     """Starts the crawler after checking input values and inserting default values."""
     if self.select_league.current() == -1:
         return_invalid(self.status_crawled)
         return
     league = self.list_leagues.get(self.select_league.get())
     this_season = get_current_season(league)
     self.crd_from_season = self.select_crawl_from_season.get()
     self.crd_from_md = self.select_crawl_from_md.get()
     self.crd_to_season = self.select_crawl_to_season.get()
     self.crd_to_md = self.select_crawl_to_md.get()
     current_crawl = crawler_class.Crawler(league)
     # if no selection made default to current season
     if self.crd_to_season == '':
         self.crd_to_season = this_season
     elif self.select_crawl_to_season.current() == -1:
         return_invalid(self.status_crawled)
         return
     else:
         self.crd_to_season = int(self.crd_to_season)
     # if no selection made default to selected crd_to_season
     if self.crd_from_season == '':
         self.crd_from_season = self.crd_to_season
     elif self.select_crawl_from_season.current() == -1:
         return_invalid(self.status_crawled)
         return
     else:
         self.crd_from_season = int(self.crd_from_season)
     # if no selection made default to first matchday
     if self.crd_from_md == '':
         self.crd_from_md = 1
     elif self.select_crawl_from_md.current() == -1:
         return_invalid(self.status_crawled)
         return
     else:
         self.crd_from_md = int(self.crd_from_md)
     # if no selection made default to last matchday
     if self.crd_to_md == '':
         self.crd_to_md = current_crawl.get_group_size(2018)
     elif self.select_crawl_to_md.current() == -1:
         return_invalid(self.status_crawled)
         return
     else:
         self.crd_to_md = int(self.crd_to_md)
     if (self.crd_from_season > self.crd_to_season
             or (self.crd_from_season == self.crd_to_season
                 and self.crd_from_md > self.crd_to_md)):
         return_invalid(self.status_crawled)
         return
     current_crawl.get_match_data_interval(self.crd_from_season,
                                           self.crd_from_md,
                                           self.crd_to_season,
                                           self.crd_to_md)
     current_crawl.get_teams(self.crd_from_season, self.crd_to_season)
     self.status_crawled['text'] = 'Done'
     self.label_current_dataset[
         'text'] = "Current data: {}.{}.{}-{}.{}".format(
             league, self.crd_from_season, self.crd_from_md,
             self.crd_to_season, self.crd_to_md)
     self.button_training['state'] = 'normal'
Exemplo n.º 2
0
 def update_smd(self, s):
     """Updates matchday selection according to selected league."""
     league = self.list_leagues.get(self.select_league.get())
     crawler = crawler_class.Crawler(league)
     seasons = get_seasons(league)
     md = [x for x in range(1, crawler.get_group_size(2018) + 1)]
     self.select_crawl_from_season.config(values=seasons,
                                          width=cbb_width(seasons))
     self.select_crawl_from_season.set(seasons[-2])
     self.select_crawl_to_season.config(values=seasons,
                                        width=cbb_width(seasons))
     self.select_crawl_to_season.set(seasons[-2])
     self.select_crawl_from_md.config(values=md, width=cbb_width(md))
     self.select_crawl_from_md.current(0)
     self.select_crawl_to_md.config(values=md, width=cbb_width(md))
     self.select_crawl_to_md.set(md[-1])
Exemplo n.º 3
0
def is_season_finished(league, year):
    """Checks if all matches in a season have finished"""
    data = {
        'date': [],
        'team1': [],
        'team2': [],
        'is_finished': [],
        'play_day': [],
        'goal1': [],
        'goal2': []
    }
    crawler = crawler_class.Crawler(league)
    max_md = crawler.get_group_size(year)
    last_match = crawler.get_data(year, data, 1, max_md)
    if last_match['is_finished'] and all(last_match['is_finished']):
        return True
    else:
        return False
Exemplo n.º 4
0
 def get_current_season(self):
     new = crawler_class.Crawler("bl1")
     return new.get_match_data_interval(self.year, 1, self.year, 34)
Exemplo n.º 5
0
def test_group_size(crw, year, res):
    c = crawler_class.Crawler(crw)
    assert c.get_group_size(year) == res
Exemplo n.º 6
0
def crawler():
    c = crawler_class.Crawler("bl1")
    return c
Exemplo n.º 7
0
 def init_nmd_table(self):
     """Builds table displaying next matchday."""
     year = get_current_season("bl1")
     nmd_data = CurrentGames(year)
     nmd_table = nmd_data.get_display[0]
     list_length = len(nmd_table)
     # get training data
     crawler_class.Crawler("bl1").get_match_data_interval(
         year - 9, 1, year - 1, 34)
     self.dict_algorithm.get('PoissonAlgorithm').train('matches.csv')
     crawler_class.Crawler("bl1").get_teams(year - 9, year - 1)
     valid_teams = []
     with open('teams.csv', encoding='utf-8') as csvfile:
         reader = csv.DictReader(csvfile)
         for team in reader:
             valid_teams.append(team['name'])
     for a in range(list_length + 2):
         if list_length == 1 and isinstance(nmd_table[0], str):
             Label(self.frame_NMD, text=nmd_table[0])
         else:
             if a == 0:
                 Label(self.frame_NMD,
                       text='Next Matches will be:').grid(row=a,
                                                          columnspan=7)
                 continue
             if a == 1:
                 host = 'Host'
                 guest = 'Guest'
                 date = 'Date'
                 time = 'Time'
                 prediction_win = 'Win %'
                 prediction_lose = 'Lose %'
                 prediction_draw = 'Draw %'
             else:
                 host = nmd_table[a - 2]['host']
                 guest = nmd_table[a - 2]['guest']
                 date = nmd_table[a - 2]['date']
                 time = nmd_table[a - 2]['time']
                 if (host in valid_teams) and (guest in valid_teams):
                     match_request = dict(host=host, guest=guest)
                     result = self.dict_algorithm[
                         'PoissonAlgorithm'].request(match_request)
                     prediction_win = "{:.2%}".format(result.get('win'))
                     prediction_lose = "{:.2%}".format(result.get('lose'))
                     prediction_draw = "{:.2%}".format(result.get('draw'))
                 else:
                     prediction_win = 'n/a'
                     prediction_lose = 'n/a'
                     prediction_draw = 'n/a'
             Label(self.frame_NMD, relief=GROOVE,
                   text=date).grid(row=a, column=0, sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=time).grid(row=a, column=1, sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=host).grid(row=a, column=2, sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=guest).grid(row=a, column=3, sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=prediction_win).grid(row=a,
                                             column=4,
                                             sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=prediction_lose).grid(row=a,
                                              column=5,
                                              sticky=N + S + E + W)
             Label(self.frame_NMD, relief=GROOVE,
                   text=prediction_draw).grid(row=a,
                                              column=6,
                                              sticky=N + S + E + W)
             self.frame_NMD.grid_columnconfigure(0, minsize=70)
             self.frame_NMD.grid_columnconfigure(1, minsize=50)
             self.frame_NMD.grid_columnconfigure(4, minsize=70)
             self.frame_NMD.grid_columnconfigure(5, minsize=70)
             self.frame_NMD.grid_columnconfigure(6, minsize=70)