BookWorld / convert_sillytavern_cards_to_data.py
alienet's picture
first commit
e636070
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.")