aboutsummaryrefslogtreecommitdiff
path: root/sbdata/repo.py
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-03-12 01:57:57 +0100
committernea <romangraef@gmail.com>2022-03-12 01:57:57 +0100
commite7caa7a9ba0202c44ad02ea9fd37c27bd4336c26 (patch)
tree03bce4042c47e475a99dfe90bc1e7a31afe25358 /sbdata/repo.py
downloadsbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.gz
sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.bz2
sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.zip
Initial commit
Diffstat (limited to 'sbdata/repo.py')
-rw-r--r--sbdata/repo.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/sbdata/repo.py b/sbdata/repo.py
new file mode 100644
index 0000000..475f2a6
--- /dev/null
+++ b/sbdata/repo.py
@@ -0,0 +1,61 @@
+import dataclasses
+import json
+import os
+import pathlib
+import re
+import typing
+
+item_list = {}
+repo_dir = pathlib.Path(os.environ.get('REPO_DIR', 'NotEnoughUpdates-REPO'))
+
+
+@dataclasses.dataclass
+class Item:
+ displayname: str
+ itemid: str
+ internalname: str
+ lore: list[str]
+
+
+def unformat_name(name: str) -> str:
+ return re.sub('ยง.', '', name)
+
+
+def bare_name(name: str) -> str:
+ name = unformat_name(name).replace("'", '').lower()
+ if name.startswith('ultimate'):
+ name = name[8:]
+ return name.strip()
+
+
+def load_item(item: pathlib.Path):
+ with item.open('r') as fp:
+ data = json.load(fp)
+ item_list[data['internalname']] = Item(data['displayname'], data['itemid'], data['internalname'], data['lore'])
+
+
+def find_item_by_name(name: str) -> typing.Optional[Item]:
+ name = bare_name(name)
+ pot = [item for item in item_list.values()
+ if item.internalname.casefold() == name
+ or bare_name(item.displayname) in name
+ or (item.itemid == 'minecraft:enchanted_book'
+ and name in bare_name(item.lore[0]))]
+ if pot:
+ return pot[0]
+ return None
+
+
+def load_items():
+ item_dir = repo_dir / 'items'
+ for item in item_dir.iterdir():
+ if item.name.endswith('.json'):
+ load_item(item)
+
+
+def load_repo_data():
+ item_list.clear()
+ load_items()
+
+
+load_repo_data()