| from PIL import Image | |
| from bw_utils import get_child_paths,lang_detect,is_image,decode_base64,save_json_file,create_dir | |
| import PIL.PngImagePlugin | |
| import os | |
| import json | |
| card_dir = "./data/sillytavern_cards" | |
| names = os.listdir(card_dir) | |
| for name in names: | |
| path = os.path.join(card_dir, name) | |
| role_code = name.split('.')[0].replace(" ","_") | |
| if is_image(path): | |
| with open(path, 'rb') as f: | |
| image = Image.open(f) | |
| card_info = json.loads(decode_base64(image.text['chara'])) | |
| language = lang_detect(card_info['data']['description']) | |
| role_info = { | |
| "role_code": f"{role_code}-{language}", | |
| "role_name": card_info['data']['name'], | |
| "source": "", | |
| "profile": card_info['data']['description'], | |
| "nickname": card_info['data']['name'], | |
| "relation": {}, | |
| "card_data": card_info['data'] | |
| } | |
| create_dir(f"./data/roles/sillytavern/{role_code}") | |
| save_json_file(os.path.join(f"./data/roles/sillytavern/{role_code}","role_info.json"),role_info) | |
| image.save(os.path.join(f"./data/roles/sillytavern/{role_code}",f"icon.png")) | |
| print(f"{name} converted successfully.") | |