51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
import json
|
|
import csv
|
|
from pathlib import Path
|
|
from island.match import Match
|
|
from island.matches import Matches
|
|
|
|
result = {}
|
|
userdata = {}
|
|
with open('user.data', 'r') as c:
|
|
for row in csv.reader(c):
|
|
userdata[int(row[0])] = {
|
|
'uid': row[0],
|
|
'name': row[1],
|
|
'email': row[2]
|
|
}
|
|
ms = Matches.from_profile_expr(lambda r: 'LAB' in r and 'CLASSIC' in r)
|
|
for m in ms.data:
|
|
for r in m.query('user', 'fitness').raw_data:
|
|
if r['user'] in result:
|
|
result[r['user']]['rewards'] += float(r['fitness']) - 0.0001
|
|
result[r['user']]['participate'] += 1
|
|
else:
|
|
result[r['user']] = {
|
|
'rewards': float(r['fitness']) - 0.0001,
|
|
'participate': 1
|
|
}
|
|
ms = Matches.from_profile_expr(lambda r: 'LAB' in r and 'SURVIVE' in r)
|
|
for m in ms.data:
|
|
for r in m.query('player', 'join').raw_data:
|
|
if r['uid'] in result:
|
|
result[r['uid']]['rewards'] += 5
|
|
result[r['uid']]['participate'] += 1
|
|
else:
|
|
result[r['uid']] = {
|
|
'rewards': 5.0,
|
|
'participate': 1
|
|
}
|
|
for r in m.query('user', 'fitness').raw_data:
|
|
result[r['user']]['rewards'] += float(r['fitness']) * 5
|
|
|
|
total = 0.0
|
|
with open('user.reward.csv', 'w') as out:
|
|
writer = csv.writer(out)
|
|
writer.writerow(['uid', 'name', 'email', 'reward', 'participates'])
|
|
for k,v in result.items():
|
|
writer.writerow([k, userdata[k]['name'], userdata[k]
|
|
['email'], round(v['rewards'], 2), v['participate']])
|
|
total += v['rewards']
|
|
|
|
print("total: %f" % (total))
|