40 lines
748 B
Python
40 lines
748 B
Python
# /usr/bin/env python
|
|
|
|
"""
|
|
Converts PGN files from fast-chess's `tl` time left notation to the standard `%clk` clock time notation.
|
|
|
|
May be buggy; other comments may break this script.
|
|
Takes stdin and converts to stdout.
|
|
"""
|
|
|
|
import sys
|
|
import re
|
|
|
|
pgn_value = sys.stdin.read()
|
|
|
|
|
|
def convert(m: re.Match[str]) -> str:
|
|
seconds_total = float(m.group(1))
|
|
mins, secs = divmod(seconds_total, 60)
|
|
hrs, mins = divmod(mins, 60)
|
|
|
|
secs = round(secs, 4)
|
|
mins = round(mins)
|
|
hrs = round(hrs)
|
|
|
|
return f"{{ [%clk {hrs}:{mins:02}:{secs}] }}"
|
|
|
|
pgn_value = re.sub(
|
|
pattern=r"{book}",
|
|
repl="",
|
|
string=pgn_value,
|
|
)
|
|
|
|
print(
|
|
re.sub(
|
|
pattern=r"{.*?tl=(.*?)s.*?}",
|
|
repl=convert,
|
|
string=pgn_value,
|
|
)
|
|
)
|