eliot/extras/reports/sigles.py

37 lines
1.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python
import os
import sys
import argparse
# Eliot modules
import eliot
# Command-line parsing
parser = argparse.ArgumentParser(description="""Generate a game summary suitable for the SIGLES program
(used by the French Scrabble Federation for official tournaments)""")
parser.add_argument("-s", "--savegame", help="game saved with Eliot", type=file, required=True)
parser.add_argument("-o", "--output", help="output file in latin1 encoding (stdout by default)",
type=eliot.FileType(mode='w', encoding="latin1"), default=sys.stdout)
parser.add_argument("-n", "--no-empty", help="do not output lines for empty tables", action="store_true")
args = parser.parse_args()
# Do most of the work: open the save game file, parse it,
# and build easy to use data structures
gameData = eliot.readSaveGame(args.savegame)
# Output file
out = args.output
# Index the players by their table number
playerByTable = dict([(p.tableNb, p) for p in gameData.players])
# Generate the report
for num in range(1, 1 + max(playerByTable.keys())):
if num in playerByTable:
p = playerByTable[num]
out.write('"%s","%s","%s"\n' % (num, p.name, p.totalScore))
elif not args.no_empty:
out.write('"%s","%s","%s"\n' % (num, "--table vide--", -1))