monolith/utils/dedup.py

26 lines
908 B
Python
Raw Normal View History

from datetime import datetime
from csiphash import siphash24
from copy import deepcopy
from json import dumps
import main
from utils.logging.debug import debug
2022-07-21 12:39:41 +00:00
def dedup(numName, b):
c = deepcopy(b)
if "time" in c.keys():
del c["time"]
2022-07-21 12:39:41 +00:00
c["approxtime"] = str(datetime.utcnow().timestamp())[: main.config["Tweaks"]["DedupPrecision"]]
castHash = siphash24(main.hashKey, dumps(c, sort_keys=True).encode("utf-8"))
del c["approxtime"]
2022-07-21 12:39:41 +00:00
isDuplicate = any(castHash in main.lastEvents[x] for x in main.lastEvents.keys() if not x == numName)
if isDuplicate:
debug("Duplicate: %s" % (c))
return True
if numName in main.lastEvents.keys():
main.lastEvents[numName].insert(0, castHash)
2022-07-21 12:39:41 +00:00
main.lastEvents[numName] = main.lastEvents[numName][0 : main.config["Tweaks"]["MaxHash"]]
else:
main.lastEvents[numName] = [castHash]
return False