store difference of vehicle data to file

This commit is contained in:
2024-10-18 19:06:32 +02:00
parent 65849ccfe3
commit b1b9a7d385
3 changed files with 90 additions and 13 deletions
+58
View File
@@ -0,0 +1,58 @@
import json
from copy import deepcopy
def deep_diff(data, temp_data):
new_data = {}
for k in data.keys():
if type(data[k]) == type({}):
if k not in temp_data:
temp_data[k] = {}
temp = deep_diff(data[k], temp_data[k])
if temp:
new_data[k] = {}
new_data[k] = temp
else:
if k in temp_data:
if data[k] != temp_data[k]:
new_data[k] = data[k]
else:
new_data[k] = data[k]
return new_data
def deep_merge(d, u, only_existing=True):
for k, v in u.items():
if isinstance(v, dict):
if only_existing:
r = deep_merge(d.get(k, {}), v)
d[k] = r
else:
d[k] = v
else:
d[k] = u[k]
return d
if __name__ == '__main__':
with open("results/WVWZZZE1ZMP010760/2024/10/18/vehicle_WVWZZZE1ZMP010760_2024-10-15T12-05-23-268Z.json", "r") as fp:
src = json.load(fp)
src_last = {}
diffed_list = []
last = {}
for s in src:
diffed = deep_diff(s, last)
diffed_list.append(deepcopy(diffed))
last = deepcopy(s)
print(f"Diffed: {diffed}")
merged_list = []
last = {}
for d in diffed_list:
merged = deep_merge(last, d)
last = deepcopy(merged)
merged_list.append(deepcopy(merged))
print(f"Merged: {merged}")
assert src == merged_list