summaryrefslogtreecommitdiff
path: root/jfr_playoff/tournamentinfo/jfrhtml.py
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2019-12-30 12:49:54 +0100
committeremkael <emkael@tlen.pl>2019-12-30 12:49:54 +0100
commit7a598f65372b1b694d222946fd6269033bde0e54 (patch)
treee33fb74aad63756f0b3c94f12e29aff6c97064ed /jfr_playoff/tournamentinfo/jfrhtml.py
parentf77bac9b5406c6bf6b1c819f155164568ef4af36 (diff)
New package structure for result info classes
Diffstat (limited to 'jfr_playoff/tournamentinfo/jfrhtml.py')
-rw-r--r--jfr_playoff/tournamentinfo/jfrhtml.py92
1 files changed, 0 insertions, 92 deletions
diff --git a/jfr_playoff/tournamentinfo/jfrhtml.py b/jfr_playoff/tournamentinfo/jfrhtml.py
deleted file mode 100644
index 8f40c55..0000000
--- a/jfr_playoff/tournamentinfo/jfrhtml.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from math import ceil
-import re
-
-from jfr_playoff.logger import PlayoffLogger
-from jfr_playoff.remote import RemoteUrl as p_remote
-from jfr_playoff.tournamentinfo import TournamentInfoClient
-
-
-class JFRHtmlTournamentInfo(TournamentInfoClient):
- def get_exceptions(self, method):
- if method == 'get_results_link':
- return (KeyError, ValueError)
- return (TypeError, IndexError, KeyError, IOError, ValueError)
-
- def get_results_link(self, suffix='leaderb.html'):
- link = re.sub(r'leaderb.html$', suffix, self.settings['link'])
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'generating tournament-specific link from leaderboard link %s: %s -> %s',
- self.settings['link'], suffix, link)
- return link
-
- def is_finished(self):
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'fetching tournament finished status from HTML: %s',
- self.settings['link'])
- leaderboard = p_remote.fetch(self.settings['link'])
- leaderb_heading = leaderboard.select('td.bdnl12')[0].text
- contains_digits = any(char.isdigit() for char in leaderb_heading)
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'tournament header from HTML: %s, %s',
- leaderb_heading,
- 'contains digits' if contains_digits else "doesn't contain digits")
- non_zero_scores = [
- imps.text
- for imps
- in leaderboard.select('td.bdc small')
- if imps.text != '0-0']
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'tournament leaderboard from HTML: has %d non-zero scores',
- len(non_zero_scores))
- finished = (not contains_digits) and (len(non_zero_scores) > 0)
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'tournament leaderboard from HTML indicates finished: %s',
- finished)
- return finished
-
- def get_tournament_results(self):
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'fetching tournament results from leaderboard URL: %s',
- self.settings['link'])
- leaderboard = p_remote.fetch(self.settings['link'])
- result_links = [
- row.select('a[onmouseover]')
- for row
- in leaderboard.find_all('tr')
- if len(row.select('a[onmouseover]')) > 0]
- results = [None] * (len(result_links) * max([
- len(links) for links in result_links]))
- for i in range(0, len(result_links)):
- for j in range(0, len(result_links[i])):
- results[len(result_links) * j + i] = result_links[i][j]
- teams = []
- team_links = {}
- for team in results:
- if team is not None:
- team_info = []
- fullname = team.text.strip(u'\xa0')
- team_links[team['href']] = fullname
- team_info.append(fullname)
- team_info.append('')
- team_image = team.find('img')
- if team_image is not None:
- team_info.append(team_image['src'].replace('images/', ''))
- teams.append(team_info)
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'read tournament results from leaderboard: %s', teams)
- for table in range(1, int(ceil(len(teams)/2.0))+1):
- table_url = self.get_results_link('1t%d-1.html' % (table))
- table_content = p_remote.fetch(table_url)
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'reading team shortnames from traveller: %s', table_url)
- for link in table_content.select('a.br'):
- if link['href'] in team_links:
- for team in teams:
- if team[0] == team_links[link['href']]:
- team[1] = link.text.strip(u'\xa0')
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'shortname for %s: %s', team[0], team[1])
- break
- PlayoffLogger.get('tournament.jfrhtml').info(
- 'tournament results from HTML: %s', teams)
- return teams