monolith/legacy/utils/dedup.py

35 lines
959 B
Python
Raw Permalink Normal View History

from copy import deepcopy
2022-07-21 12:40:09 +00:00
from datetime import datetime
from json import dumps
2022-07-21 12:40:09 +00:00
import main
2022-09-05 06:20:30 +00:00
from siphashc import siphash
from utils.logging.debug import debug
2022-07-21 12:39:41 +00:00
def dedup(numName, b):
c = deepcopy(b)
2022-07-21 12:39:54 +00:00
if "ts" in c.keys():
del c["ts"]
2022-09-05 06:20:30 +00:00
c["approxtime"] = str(datetime.utcnow().timestamp())[
: main.config["Tweaks"]["DedupPrecision"]
]
2022-08-18 06:20:30 +00:00
castHash = siphash(main.hashKey, dumps(c, sort_keys=True))
del c["approxtime"]
2022-09-05 06:20:30 +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-09-05 06:20:30 +00:00
main.lastEvents[numName] = main.lastEvents[numName][
0 : main.config["Tweaks"]["MaxHash"]
] # noqa
else:
main.lastEvents[numName] = [castHash]
return False