diff options
author | nea <romangraef@gmail.com> | 2022-03-12 01:57:57 +0100 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-03-12 01:57:57 +0100 |
commit | e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26 (patch) | |
tree | 03bce4042c47e475a99dfe90bc1e7a31afe25358 /sbdata/repo.py | |
download | sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.gz sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.tar.bz2 sbdata-e7caa7a9ba0202c44ad02ea9fd37c27bd4336c26.zip |
Initial commit
Diffstat (limited to 'sbdata/repo.py')
-rw-r--r-- | sbdata/repo.py | 61 |
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() |