41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
# coding=utf-8
|
|
import csv
|
|
import sys
|
|
import json
|
|
import chardet
|
|
|
|
converted = []
|
|
|
|
typemap = {'Aktion': 'Action',
|
|
'Geld': 'Treasure',
|
|
'Fluch': 'Curse',
|
|
'Punkte': 'Victory',
|
|
'Reaktion': 'Reaction',
|
|
'Angriff': 'Attack',
|
|
'Dauer': 'Duration',
|
|
'Plündern': 'Looter',
|
|
'Ritter': 'Knight',
|
|
'Ruine': 'Ruins',
|
|
'Unterschlupf': 'Shelter',
|
|
'Reisender': 'Traveller',
|
|
'Reserve': 'Reserve'}
|
|
|
|
with open(sys.argv[1], 'U') as csvfile:
|
|
reader = csv.DictReader(csvfile)
|
|
for row in reader:
|
|
if not row['Typ']:
|
|
continue
|
|
# row = {k: v.decode('ISO-8859-2').encode('utf-8') if type(v) == str else v for k, v in row.iteritems()}
|
|
#print chardet.detect(row['Kartentext'])
|
|
if 'Ritter' in row['Typ'] and row['Kartenname'] != 'Ritter':
|
|
continue
|
|
converted_row = {'name': row['Kartenname'],
|
|
'cost': row['Kosten'],
|
|
'cardset': row['Edition'],
|
|
'description': row['Kartentext'],
|
|
'extra': row['Lange Erklärung'],
|
|
'types': [typemap[t.strip()] for t in row['Typ'].split('/') if not t.strip() == 'Ritter'],
|
|
'potcost': row.get('potcost', 0)}
|
|
converted.append(converted_row)
|
|
json.dump(converted, open(sys.argv[2], 'wb'), indent=True)
|