Spaces:
Runtime error
Runtime error
import json | |
from loguru import logger as log | |
def get_opaque_payload(): | |
with open(r"autoexpress\resources\empty_bg.json", "r") as payload_file: | |
return json.load(payload_file) | |
def get_expression_list(): | |
with open(r"autoexpress\resources\expressions.json", "r") as exp_file: | |
return json.load(exp_file) | |
def get_clip_expression_list(): | |
with open(r"autoexpress\resources\clip_expressions.json", "r") as exp_file: | |
return json.load(exp_file) | |
def get_img2img_payload(): | |
with open(r"autoexpress\resources\payload.json", "r") as payload_file: | |
return json.load(payload_file) | |
def update_nested_key(data, key_to_update, new_value): | |
if isinstance(data, dict): | |
for key, value in data.items(): | |
if key == key_to_update: | |
data[key] = new_value | |
update_nested_key(value, key_to_update, new_value) | |
elif isinstance(data, list): | |
for item in data: | |
update_nested_key(item, key_to_update, new_value) | |
def find_nested_key(data, target_key): | |
"""Recursively search for a key in a nested structure (dictionary or list) and return its value.""" | |
if isinstance(data, dict): | |
if target_key in data: | |
return data[target_key] | |
return next( | |
( | |
result | |
for key, value in data.items() | |
if (result := find_nested_key(value, target_key)) is not None | |
), | |
None, | |
) | |
elif isinstance(data, list): | |
return next( | |
( | |
result | |
for item in data | |
if isinstance(item, (dict, list)) | |
and (result := find_nested_key(item, target_key)) is not None | |
), | |
None, | |
) | |
return None | |
def edit_payload_body(b64_image_str: str, payload, settings=None, expression_tags=None): | |
if settings: | |
for key, value in settings.items(): | |
update_nested_key(payload, key, value) | |
prompt = find_nested_key(payload, "ad_prompt") | |
if prompt: | |
if prompt[-1] not in [","]: | |
update_nested_key(payload, "ad_prompt", prompt + ", ") | |
if expression_tags: | |
update_nested_key( | |
payload, | |
"ad_prompt", | |
find_nested_key(payload, "ad_prompt") + str(expression_tags), | |
) | |
payload["prompt"] = payload["alwayson_scripts"]["ADetailer"]["args"][2]["ad_prompt"] | |
payload["negative_prompt"] = payload["alwayson_scripts"]["ADetailer"]["args"][2][ | |
"ad_negative_prompt" | |
] | |
log.debug(f"{payload}") | |
payload["init_images"][0] = b64_image_str | |
json_payload = json.dumps(payload, indent=4) | |
return json_payload | |
if __name__ == "__main__": | |
expression = get_expression_list() | |
print(expression.keys()) | |