30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
from island.match import Match
|
|
from island.matches import Matches
|
|
import json
|
|
|
|
matches = Matches('wos-data-2022-1')
|
|
crs = []
|
|
for m in matches.data:
|
|
game_end_at = int(m.query('game', 'created').first()['info']['game_end_at'])
|
|
games = [{} for _ in range(game_end_at)]
|
|
for round in range(1, game_end_at+1):
|
|
rows = m.query('action', 'done').where(lambda x: x['rno'] == round).raw_data
|
|
for row in rows:
|
|
players = [f"{row['a']}-{row['b']}", f"{row['b']}-{row['a']}"]
|
|
log_id = -1
|
|
for p in players:
|
|
if p in games[round-1]:
|
|
log_id = games[round-1][p]
|
|
if log_id != -1:
|
|
print("Collision detected: match=%s, row=%s, collision_log_id=%d" %(m.name, json.dumps(row), log_id))
|
|
print("History of this two players:")
|
|
logs = m.query('action', 'done').where(lambda x: f"{x['a']}-{x['b']}" in players).raw_data + \
|
|
m.query('action', 'request').where(lambda x: f"{x['from']}-{x['to']}" in players).raw_data + \
|
|
m.query('action', 'approve').where(lambda x: f"{x['from']}-{x['to']}" in players).raw_data
|
|
for log in sorted(logs, key=lambda a: a['log_id']):
|
|
print(json.dumps(log))
|
|
|
|
else:
|
|
for p in players:
|
|
games[round-1][p] = row['log_id']
|