| 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',encoding="utf-8") 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.") |
| |