aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbdata/repo.py12
-rw-r--r--sbdata/tasks/find_kat_recipes.py4
2 files changed, 14 insertions, 2 deletions
diff --git a/sbdata/repo.py b/sbdata/repo.py
index b57062b..77568d7 100644
--- a/sbdata/repo.py
+++ b/sbdata/repo.py
@@ -1,3 +1,4 @@
+import collections
import dataclasses
import json
import os
@@ -46,6 +47,17 @@ def find_item_by_name(name: str) -> typing.Optional[Item]:
return None
+def save_modified_file(file: pathlib.Path, new_json: dict):
+ d: collections.OrderedDict = json.loads(file.read_text(), object_pairs_hook=lambda x: collections.OrderedDict(x))
+ for k, v in new_json.items():
+ d[k] = v
+ for k in d.keys():
+ if k not in new_json.keys():
+ del d[k]
+ file.write_text(json
+ .dumps(d, sort_keys=False, indent=2, ensure_ascii=False))
+
+
def load_items():
item_dir = repo_dir / 'items'
for item in item_dir.iterdir():
diff --git a/sbdata/tasks/find_kat_recipes.py b/sbdata/tasks/find_kat_recipes.py
index 1546fa4..bc707f8 100644
--- a/sbdata/tasks/find_kat_recipes.py
+++ b/sbdata/tasks/find_kat_recipes.py
@@ -2,7 +2,7 @@ import json
import mwparserfromhell.nodes
-from sbdata.repo import find_item_by_name, item_list, Item
+from sbdata.repo import find_item_by_name, item_list, Item, save_modified_file
from sbdata.task import register_task, Arguments
from sbdata.wiki import get_wiki_sources_by_title
@@ -55,7 +55,7 @@ def analyze_pet(itemid: str):
output=f'{itemid};{rarity_before_idx + 1}',
items=[f'{x[0].internalname}:{str(x[1])}' for x in mats]
)] + [r for r in itemjson.get('recipes', []) if r.get('type') != 'katgrade']
- itemfile.write_text(json.dumps(itemjson, indent=2, sort_keys=True).replace('\\u00a7', '\u00a7') + "\n")
+ save_modified_file(itemfile, itemjson)
break