diff --git a/whoisit/utils.py b/whoisit/utils.py index 9756bbe..ff306c3 100644 --- a/whoisit/utils.py +++ b/whoisit/utils.py @@ -158,5 +158,18 @@ def recursive_merge(d1, d2): for k, v in d2.items(): if k in d1 and isinstance(d1[k], dict) and isinstance(v, dict): recursive_merge(d1[k], v) + elif k == "events" and isinstance(v, list): + v1 = d1.get(k) or [] + d1[k] = recursive_merge_lists(v1, v, dedup_on='eventAction') + elif k in {"notices", "remarks"} and isinstance(v, list): + v1 = d1.get(k) or [] + d1[k] = recursive_merge_lists(v1, v) elif v: d1[k] = v + + +def recursive_merge_lists(l1, l2, dedup_on="title"): + list1 = {l[dedup_on]: l for l in l1} + list2 = {l[dedup_on]: l for l in l2} + recursive_merge(list1, list2) + return list(list1.values())