Last active
May 8, 2019 13:58
-
-
Save rasmusab/07f1823cb4bd0bc7352d to your computer and use it in GitHub Desktop.
Converts the millionbase chess PGN database (http://www.top-5000.nl/pgn.htm) to json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Converts the millionbase chess PGN database (http://www.top-5000.nl/pgn.htm) to json | |
# with one json dictionary per row. (That is, the resulting file is contain multiple json objects, | |
# not just one large). | |
import json | |
import chess.pgn # From python-chess https://github.com/niklasf/python-chess | |
pgn = open("millionbase-2.22.pgn") # Or where you have put it | |
fout = open('milionbase-2.22.json', 'w') # Or where you want it | |
count = 0 | |
node = chess.pgn.read_game(pgn) | |
while node != None: | |
info = node.headers | |
info["fen"] = [] | |
while node.variations: | |
next_node = node.variation(0) | |
info["fen"].append(node.board().fen()) | |
node = next_node | |
info["fen"].append(node.board().fen()) | |
node = chess.pgn.read_game(pgn) | |
json.dump(info, fout, encoding='latin1') | |
fout.write('\n') | |
count += 1 | |
if(count % 10000 == 0): | |
print(count) | |
fout.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment