summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2018-09-28 01:10:35 +0200
committeremkael <emkael@tlen.pl>2018-09-28 01:10:35 +0200
commitdd15c7119f5085e03c438ea7ee5bf70695de1af5 (patch)
tree155770848cb68d1c71ae51b9e27db9cdabbf78b7
parentafd01cbc03e1af7433eb959781b84f10e7051aa9 (diff)
parent2b906f5038565f718e589cd70c24f4614fd0f4cf (diff)
Merge branch 'devel' into position-boxes
-rw-r--r--jfr_playoff/generator.py4
-rw-r--r--jfr_playoff/matchinfo.py52
2 files changed, 41 insertions, 15 deletions
diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py
index c8cceab..1daae1c 100644
--- a/jfr_playoff/generator.py
+++ b/jfr_playoff/generator.py
@@ -57,6 +57,7 @@ class PlayoffGenerator(object):
team_label = ' / '.join([
self.data.get_shortname(name) for name in
team.name.split('<br />')])
+ team_label = team_label[:30] + (team_label[30:] and '(...)')
team_html = self.p_temp.get(
'MATCH_TEAM_LINK',
match.link, team.name, team_label) \
@@ -284,7 +285,8 @@ class PlayoffGenerator(object):
event_label = self.p_temp.get('SWISS_DEFAULT_LABEL', event['position'])
if 'label' in event and event['label'] is not None:
event_label = event['label']
- info.append((self.p_temp.get('SWISS_LINK') \
+ info.append((self.p_temp.get('SWISS_LINK',
+ event['link'], event_label) \
if event['finished'] \
else self.p_temp.get(
'SWISS_RUNNING_LINK',
diff --git a/jfr_playoff/matchinfo.py b/jfr_playoff/matchinfo.py
index a7c4064..4de2044 100644
--- a/jfr_playoff/matchinfo.py
+++ b/jfr_playoff/matchinfo.py
@@ -112,11 +112,31 @@ class MatchInfo:
row = self.__find_table_row(self.info.link)
if row is None:
raise ValueError('table row not found')
- score_cell = row.select('td.bdc')[-1]
- scores = [
- float(text) for text
- in score_cell.contents
- if isinstance(text, unicode)]
+ try:
+ scores = [
+ float(text) for text
+ in row.select('td.bdc')[-1].contents
+ if isinstance(text, unicode)]
+ except ValueError:
+ try:
+ # running single-segment
+ scores = [
+ float(text.strip()) for text
+ in row.select('td.bdcg a')[-1].contents
+ if isinstance(text, unicode)]
+ except IndexError:
+ # static single-segment
+ scores = [
+ float(text.strip()) for text
+ in row.select('td.bdc a')[-1].contents
+ if isinstance(text, unicode)]
+ # carry-over
+ carry_over = [
+ float(text.strip()) if len(text.strip()) > 0 else 0.0 for text
+ in row.select('td.bdc')[0].contents
+ if isinstance(text, unicode)]
+ for i in range(0, 2):
+ scores[i] += carry_over[i]
team_names = [[text for text in link.contents
if isinstance(text, unicode)][0].strip(u'\xa0')
for link in row.select('a[onmouseover]')]
@@ -253,17 +273,21 @@ class MatchInfo:
row = self.__find_table_row(self.info.link)
if row is None:
raise ValueError('table row not found')
- cells = row.select('td.bdc')
- segments = [cell for cell in cells if self.__has_segment_link(cell)]
- towels = [cell for cell in cells if self.__has_towel_image(cell)]
- if len(segments) == 0:
- if len(towels) > 0:
- PlayoffLogger.get('matchinfo').info(
- 'HTML board count for match #%d: all towels', self.info.id)
- return 1, 1 # entire match is toweled, so mark as finished
+ for selector in ['td.bdc', 'td.bdcg']:
+ cells = row.select(selector)
+ segments = [cell for cell in cells if self.__has_segment_link(cell)]
+ towels = [cell for cell in cells if self.__has_towel_image(cell)]
+ if len(segments) == 0:
+ if len(towels) > 0:
+ PlayoffLogger.get('matchinfo').info(
+ 'HTML board count for match #%d: all towels', self.info.id)
+ return 1, 1 # entire match is toweled, so mark as finished
else:
- raise ValueError('segments not found')
+ break
+ if len(segments) == 0:
+ raise ValueError('segments not found')
running_segments = row.select('td.bdca')
+ # FIXME: running single-segment match board count
running_boards = sum([self.__get_html_running_boards(segment) for segment in running_segments])
finished_segments = []
boards_in_segment = None