old state parser
This commit is contained in:
parent
436a00d8ce
commit
63f3c9d3ae
|
@ -0,0 +1,73 @@
|
|||
from json import loads, dumps
|
||||
|
||||
events = []
|
||||
|
||||
def doOffline(state, cur_t, cur_ps):
|
||||
(last_t, last_ev, last_evt, last_ps) = state
|
||||
working = (cur_t - last_t < 70)
|
||||
|
||||
if not working and last_ev == 'online':
|
||||
events.append({'period': [last_evt, last_t], 'type': 'players', 'players': last_ps})
|
||||
return (cur_t, 'error', last_t, cur_ps)
|
||||
else:
|
||||
return state
|
||||
|
||||
|
||||
def doBackOnline(state, cur_t, cur_ps):
|
||||
(last_t, last_ev, last_evt, last_ps) = state
|
||||
working = (cur_t - last_t < 70)
|
||||
|
||||
if working and last_ev != 'online':
|
||||
events.append({'period': [last_evt, cur_t], 'type': 'error'})
|
||||
return (cur_t, 'online', last_t, last_ps)
|
||||
else:
|
||||
return state
|
||||
|
||||
|
||||
def doPlayerChange(state, cur_t, cur_ps):
|
||||
(last_t, last_ev, last_evt, last_ps) = state
|
||||
working = (cur_t - last_t < 70)
|
||||
|
||||
if working and last_ps != cur_ps:
|
||||
events.append({'period': [last_evt, cur_t], 'type': 'players', 'players': last_ps})
|
||||
return (cur_t, 'online', cur_t, cur_ps)
|
||||
else:
|
||||
return state
|
||||
|
||||
|
||||
def doUpdateTime(state, cur_t, cur_ps):
|
||||
(last_t, last_ev, last_evt, last_ps) = state
|
||||
return (cur_t, last_ev, last_evt, last_ps)
|
||||
|
||||
|
||||
def doCurrent(state):
|
||||
(last_t, last_ev, last_evt, last_ps) = state
|
||||
events.append({'period': [last_evt, last_t], 'type': 'current', 'players': last_ps})
|
||||
|
||||
|
||||
with open('all-time.txt') as f:
|
||||
state = ()
|
||||
cur_t = 0
|
||||
cur_ps = []
|
||||
|
||||
for line in f:
|
||||
current = loads(line)
|
||||
cur_t = current['time']
|
||||
cur_ps = current['players']
|
||||
|
||||
if state == ():
|
||||
state = (cur_t, 'online', cur_t, cur_ps)
|
||||
else:
|
||||
state = doOffline(state, cur_t, cur_ps)
|
||||
state = doBackOnline(state, cur_t, cur_ps)
|
||||
state = doPlayerChange(state, cur_t, cur_ps)
|
||||
state = doUpdateTime(state, cur_t, cur_ps)
|
||||
|
||||
doCurrent(state)
|
||||
|
||||
|
||||
def dumpJSON(events):
|
||||
for event in events:
|
||||
print(dumps(event))
|
||||
|
||||
dumpJSON(events)
|
Loading…
Reference in New Issue