class JSONDumper(object): def __init__(self, filename): self.filename = filename self.demo = DemoDump() self.callback = None if self.demo.open(filename): for t in _DUMPED_TYPES: self.demo.register_on_netmsg(t, self.on_netmsg) for i in range(0, 10000): self.demo.register_on_gameevent(i, self.on_event) def on_event(self, data): del data.raw name = data.descriptor[1] id = data.descriptor[0] del data.descriptor v = {"name": name, "id": id} v["params"] = data.__dict__ dictz = {"type": "GameEvent (%s)" % name, "data": v} if self.callback is not None: self.callback(dictz) def on_netmsg(self, id, data): inst = eval(_DUMPED_TYPES[id])() inst.ParseFromString(data) name = _DUMPED_TYPES[id].replace("CNETMsg", "net").replace("CSVCMsg", "svc") name = "%s (%i)" % (name, id) serializer = PbLiteSerializer() dict = {"type": name, "data": serializer.serialize(inst)} if self.callback is not None: self.callback(dict)
t.ParseFromString(data) for desc in t.descriptors: events[desc.name] = { "ID": desc.eventid, "name": desc.name, "params": {} } for key in desc.keys: events[desc.name]["params"][key.name] = _GAMEEVENT_TYPES[key.type + 1] if __name__ == '__main__': demo = DemoDump() filename = sys.argv[1] if len(sys.argv) <= 1: print "updateeventlist.py demofile.dem" sys.exit() if demo.open(filename): print "Beginning parsing" demo.register_on_netmsg(svc_GameEventList, on_list_received) demo.dump() ordered = collections.OrderedDict(sorted(events.items())) json_data = json.dumps(ordered, indent=4) print json_data f = open("../data/game_events.txt", "w") f.write(json_data) print "Saved to file data/game_events.txt"
t = CSVCMsg_GameEventList() t.ParseFromString(data) for desc in t.descriptors: events[desc.name] = { "ID": desc.eventid, "name": desc.name, "params": {} } for key in desc.keys: events[desc.name]["params"][key.name] = _GAMEEVENT_TYPES[key.type + 1] if __name__ == '__main__': demo = DemoDump() filename = sys.argv[1] if len(sys.argv) <= 1: print "updateeventlist.py demofile.dem" sys.exit() if demo.open(filename): print "Beginning parsing" demo.register_on_netmsg(svc_GameEventList, on_list_received) demo.dump() ordered = collections.OrderedDict(sorted(events.items())) json_data = json.dumps(ordered, indent=4) print json_data f = open("../data/game_events.txt", "w") f.write(json_data) print "Saved to file data/game_events.txt"