From 07a7de5227b73bb8237cb8ef1691d4b3c5a353a0 Mon Sep 17 00:00:00 2001 From: Adam Goldsmith Date: Sun, 27 May 2018 17:44:00 -0400 Subject: [PATCH] events: Get only needed records, write to file --- events.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/events.py b/events.py index d64f9e2..5548f21 100755 --- a/events.py +++ b/events.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 from collections import defaultdict from xml.etree import ElementTree as ET +import os import re import requests @@ -64,15 +65,35 @@ parXMLIn = ET.Element("VertXMessage") ET.SubElement(parXMLIn, "hid:EventMessages", attrib={"action": "LR"}) parXMLOut = doXMLRequest(TARGET_IP, ET.tostring(parXMLIn)) +root = None +if os.path.exists("log.xml"): + # read last log + tree = ET.ElementTree(None, "log.xml") + root = tree.getroot() + recordCount = int(parXMLOut[0].attrib["historyRecordMarker"]) - \ + int(root[0][0].attrib["recordMarker"]) +else: + # first run for this door + recordCount = 1000 + +print("Getting", recordCount, "records") # get the actual messages eventsXMLIn = ET.Element("VertXMessage") ET.SubElement(eventsXMLIn, "hid:EventMessages", attrib={"action": "LR", - "recordCount": "1000", + "recordCount": str(recordCount), "historyRecordMarker": parXMLOut[0].attrib["historyRecordMarker"], "historyTimestamp": parXMLOut[0].attrib["historyTimestamp"]}) eventsXMLOut = doXMLRequest(TARGET_IP, ET.tostring(eventsXMLIn)) +#TODO: handle modeRecords=true -for event in eventsXMLOut[0]: - ET.dump(event) - print(formatMessage(event)) +for index, event in enumerate(eventsXMLOut[0]): + event.attrib["recordMarker"] = str(int(parXMLOut[0].attrib["historyRecordMarker"]) - index) +# print(formatMessage(event)) + +if root is None: + tree = ET.ElementTree(eventsXMLOut) +else: + for event in reversed(eventsXMLOut[0]): + root[0].insert(0, event) +tree.write("log.xml")