|
|
|
@@ -2,6 +2,7 @@ import argparse |
|
|
|
import os |
|
|
|
import sys |
|
|
|
from subprocess import check_call, DEVNULL, STDOUT, CalledProcessError |
|
|
|
from shutil import copyfile, rmtree |
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='Convert sgf go records into a kifu format.') |
|
|
|
|
|
|
|
@@ -104,7 +105,7 @@ def generate_moves(): |
|
|
|
parsedHeader = { |
|
|
|
"event" : get_tag_from_header("EV"), |
|
|
|
"gameName" : get_tag_from_header("GN"), |
|
|
|
"date" : get_tag_from_header("RD"), |
|
|
|
"date" : get_tag_from_header("DT"), |
|
|
|
"boardSize" : int(get_tag_from_header("SZ")), |
|
|
|
"playerBlack" : get_tag_from_header("PB"), |
|
|
|
"playerWhite" : get_tag_from_header("PW"), |
|
|
|
@@ -119,8 +120,13 @@ parsedHeader = { |
|
|
|
event = parsedHeader["event"] |
|
|
|
date = parsedHeader["date"] |
|
|
|
result = parsedHeader["result"] |
|
|
|
komi = parsedHeader["komi"] |
|
|
|
playerWhite = parsedHeader["playerWhite"] |
|
|
|
playerBlack = parsedHeader["playerBlack"] |
|
|
|
if parsedHeader["rankBlack"] != "": |
|
|
|
playerBlack += f" ({parsedHeader['rankBlack']})" |
|
|
|
if parsedHeader["rankWhite"] != "": |
|
|
|
playerWhite += f" ({parsedHeader['rankWhite']})" |
|
|
|
moves = generate_moves() |
|
|
|
|
|
|
|
outText = f""" |
|
|
|
@@ -147,7 +153,7 @@ outText = f""" |
|
|
|
\\begin{{tabularx}}{{\\textwidth}}{{ R | c | X }} |
|
|
|
\\hline |
|
|
|
\\stone{{black}} {playerBlack} & \\textbf{{{result}}} & {playerWhite} \\stone{{white}} \\\\\\hline |
|
|
|
& 7.5 komi & \\\\\\hline |
|
|
|
& {komi} Komi & \\\\\\hline |
|
|
|
\\end{{tabularx}} |
|
|
|
\\vspace{{3cm}} |
|
|
|
|
|
|
|
@@ -163,11 +169,19 @@ with open(f"{fileBase}.tex", 'w') as outFile: |
|
|
|
# should be compiled to pdf? |
|
|
|
if args.c: |
|
|
|
try: |
|
|
|
check_call(['latex', f"{fileBase}.tex"], stdout=DEVNULL, stderr=STDOUT) |
|
|
|
check_call(['dvips', f"{fileBase}.dvi", "-P", "pdf"], stdout=DEVNULL, stderr=STDOUT) |
|
|
|
check_call(['ps2pdf', f"{fileBase}.ps"], stdout=DEVNULL, stderr=STDOUT) |
|
|
|
os.makedirs(os.path.dirname(f"{fileBase}/"), exist_ok=True) |
|
|
|
copyfile(f"{fileBase}.tex", f"{fileBase}/temp.tex") |
|
|
|
os.remove(f"{fileBase}.tex") # poor mans `move` that works on win and linux |
|
|
|
check_call(['latex', f"temp.tex"], |
|
|
|
stdout=DEVNULL, stderr=STDOUT, cwd=f'{fileBase}') |
|
|
|
check_call(['dvips', f"temp.dvi", "-P", "pdf"], |
|
|
|
stdout=DEVNULL, stderr=STDOUT, cwd=f'{fileBase}') |
|
|
|
check_call(['ps2pdf', f"temp.ps"], |
|
|
|
stdout=DEVNULL, stderr=STDOUT, cwd=f'{fileBase}') |
|
|
|
except CalledProcessError: |
|
|
|
print("error") |
|
|
|
else: |
|
|
|
copyfile(f"{fileBase}/temp.pdf", f"{fileBase}.pdf") |
|
|
|
rmtree(f"{fileBase}/") |
|
|
|
if args.o: |
|
|
|
os.system(f'"{fileBase}.pdf"') |