summaryrefslogtreecommitdiff
path: root/rozklady
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2021-10-22 03:04:30 +0200
committeremkael <emkael@tlen.pl>2021-10-22 03:04:30 +0200
commitb0cd66f6c50e954b497cda752dc46ae509081223 (patch)
treed33cc10005d630e74ad3b5a7eede507ffd5a5509 /rozklady
parent91269d4a8da9ec25ac1c5a344cf34464d18e6861 (diff)
Autocommit
Diffstat (limited to 'rozklady')
-rw-r--r--rozklady/get-tc-boards.py15
-rwxr-xr-xrozklady/scrape-boards.py54
2 files changed, 69 insertions, 0 deletions
diff --git a/rozklady/get-tc-boards.py b/rozklady/get-tc-boards.py
new file mode 100644
index 0000000..637a95c
--- /dev/null
+++ b/rozklady/get-tc-boards.py
@@ -0,0 +1,15 @@
+import json, sys
+
+for fpath in sys.argv[1:]:
+ jsfile = json.load(open(fpath))
+ print('[Board "%d"]' % (jsfile['ScoringGroups'][0]['Distribution']['_numberAsPlayed']))
+ board = []
+ for hand in ['N', 'E', 'S', 'W']:
+ board.append('%s.%s.%s.%s' % (
+ jsfile['ScoringGroups'][0]['Distribution']['_handRecord']['Hand'+hand]['Spades'],
+ jsfile['ScoringGroups'][0]['Distribution']['_handRecord']['Hand'+hand]['Hearts'],
+ jsfile['ScoringGroups'][0]['Distribution']['_handRecord']['Hand'+hand]['Diamonds'],
+ jsfile['ScoringGroups'][0]['Distribution']['_handRecord']['Hand'+hand]['Clubs']
+ ))
+ print('[Deal "N:%s"]' % (' '.join(board).replace('10', 'T')))
+ print('')
diff --git a/rozklady/scrape-boards.py b/rozklady/scrape-boards.py
new file mode 100755
index 0000000..5f7ea7f
--- /dev/null
+++ b/rozklady/scrape-boards.py
@@ -0,0 +1,54 @@
+from bs4 import BeautifulSoup as bs
+import bs4
+import os
+import sys
+
+traveller_file = file(sys.argv[1])
+traveller = bs(traveller_file, 'lxml')
+
+print '% PBN 1.0'
+print '[Generator "JFRTeamy-restorerer"]'
+print '[Event "%s"]' % (traveller_file.name)
+
+board_links = traveller.select('td.bdcc a.zb')
+for board_link in board_links:
+ if board_link.has_attr('href'):
+ sys.stderr.write(board_link['href'] + "\n")
+ board_number = board_link.text.strip()
+ board_file = open(
+ os.path.join(
+ os.path.dirname(traveller_file.name),
+ board_link['href']
+ )
+ )
+ board = bs(board_file, 'lxml')
+ conditions = [
+ c for c in
+ board.select('td[valign="top"] h4')[0].contents
+ if type(c) == bs4.element.NavigableString
+ ]
+ dealer = conditions[0].strip()
+ vulnerability = conditions[1].title()
+ if len(vulnerability) < 3:
+ vulnerability = vulnerability.upper()
+ card_cells = board.select('td.w')
+ sys.stderr.write(str(card_cells))
+ sys.stderr.write("\n")
+ if len(card_cells) == 4:
+ cards = [
+ [
+ line.replace('10', 'T').replace(' ', '').strip()
+ for line in c
+ if type(line) == bs4.element.NavigableString and line != "\n"
+ ] for c in card_cells
+ ]
+ print '[Board "%s"]' % board_number
+ #print '[Dealer "%s"]' % dealer
+ #print '[Vulnerable "%s"]' % vulnerability
+ print '[Deal "N:%s %s %s %s"]' % (
+ '.'.join(cards[0]),
+ '.'.join(cards[2]),
+ '.'.join(cards[3]),
+ '.'.join(cards[1])
+ )
+ print