from demo2 import Demo from demparse import * import sys def analyse_dem(fname): interest = tuple(c.code for c in [Print, UpdateStat, KilledMonster, FoundSecret, Intermission, Time]) t= '' print fname, nkills = '?' nsecs = '?' kills = 0 secs = 0 t = '' for block in Demo(open(fname, 'rb')): block = block.filtered(interest) for m in block: cls = m.__class__ if cls is Time: blocktime = m.time elif cls is Print: if 'The recorded time was' in m.text: t = '' while 1: m = block.next() if '\n' in m.text: break else: t += m.text print t, elif cls is Intermission: inttime = blocktime elif cls is UpdateStat: if m.index == 11: nsecs = m.value elif m.index == 12: nkills = m.value elif cls is KilledMonster: kills += 1 elif cls is FoundSecret: secs += 1 if not t: mins = int(inttime)//60 s = inttime%60 print "%d:%02.4f!"%(mins, s), print kills, '/', nkills, secs, '/', nsecs def main(argv): map(analyse_dem, argv) if __name__ == '__main__': main(sys.argv[1:])