From 1837bd95f56b41a22e1dbaa8c6d50d0e27778a41 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 15 Mar 2020 18:43:50 +0100 Subject: Detecting table numbers and towel support --- scrape-scores.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/scrape-scores.py b/scrape-scores.py index 05517e6..a2dfccd 100644 --- a/scrape-scores.py +++ b/scrape-scores.py @@ -12,10 +12,17 @@ board = int(sys.argv[4]) content = bs(file(input_file), 'lxml') rows = content.select('tr') -scores = [] -points = [] +scores = {} +current_table_no = None +current_table = [] for row in rows: + table_link = row.select('a[target="polew"]') + if table_link: + if current_table_no: + scores[current_table_no] = current_table + current_table_no = int(table_link[0].text) + current_table = [] cells = row.select('td.bdc') if len(cells) > 0: score = '' @@ -26,20 +33,19 @@ for row in rows: score += element['alt'] else: score += element.replace('×'.decode('utf8'), 'x') - scores.append(score) point_cells = row.select('td.zno') + row.select('td.zeo') - points.append((point_cells)[0].text if len(point_cells) > 0 else '0') - - -sorted_scores = scores[0::2] + scores[1::2] -sorted_points = points[0::2] + points[1::2] + current_table.append({ + 'score': score, + 'points': (point_cells)[0].text if len(point_cells) > 0 else '0' + }) +scores[current_table_no] = current_table score_regex = re.compile(r'^([1-7])([cdhns])(x?)([ENSW])([cdhs]([AKQJ2-9]|10))(=|(-|\+)[1-7])') for room in [1, 2]: - for tabl in range(1, 6): - score = sorted_scores[(room - 1) * 5 + tabl - 1] - point_result = sorted_points[(room - 1) * 5 + tabl - 1] + for tabl in scores.keys(): + score = scores[tabl][room - 1]['score'] + point_result = scores[tabl][room - 1]['points'] parsed_score = re.match(score_regex, score) if parsed_score: contract = ('%s %s %s' % ( -- cgit v1.2.3