92 lines
3.2 KiB
Python
92 lines
3.2 KiB
Python
class MultiStringPrompts:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"enable_prefix": (["true", "false"], {"default": "true"}),
|
|
"enable_suffix": (["true", "false"], {"default": "true"}),
|
|
"prefix": ("STRING", {"default": ""}),
|
|
"suffix": ("STRING", {"default": ""}),
|
|
"multi_prompt_1": ("STRING", {"multiline": True, "default": ""}),
|
|
"multi_prompt_2": ("STRING", {"multiline": True, "default": ""}),
|
|
"multi_prompt_3": ("STRING", {"multiline": True, "default": ""}),
|
|
"multi_prompt_4": ("STRING", {"multiline": True, "default": ""}),
|
|
"multi_prompt_5": ("STRING", {"multiline": True, "default": ""}),
|
|
"negative_prompt": ("STRING", {"multiline": True, "default": ""}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING", "*",)
|
|
RETURN_NAMES = (
|
|
"prompt_1",
|
|
"prompt_2",
|
|
"prompt_3",
|
|
"prompt_4",
|
|
"prompt_5",
|
|
"negative_prompt",
|
|
"prompt_list",
|
|
)
|
|
OUTPUT_IS_LIST = (False, False, False, False, False, False, False,)
|
|
FUNCTION = "process_prompts"
|
|
CATEGORY = "MultiString Prompts"
|
|
|
|
def process_prompts(self, prefix, suffix, enable_prefix, enable_suffix,
|
|
multi_prompt_1, multi_prompt_2, multi_prompt_3,
|
|
multi_prompt_4, multi_prompt_5, negative_prompt):
|
|
|
|
def _process(prompt_text, prefix, suffix, enable_prefix, enable_suffix):
|
|
|
|
prompt_text = prompt_text.strip()
|
|
|
|
if not prompt_text:
|
|
return ""
|
|
|
|
is_prefix_enabled = (enable_prefix == "true")
|
|
is_suffix_enabled = (enable_suffix == "true")
|
|
|
|
prefix_text = prefix.strip() if is_prefix_enabled else ""
|
|
suffix_text = suffix.strip() if is_suffix_enabled else ""
|
|
|
|
parts = []
|
|
if prefix_text:
|
|
parts.append(prefix_text)
|
|
|
|
parts.append(prompt_text)
|
|
|
|
if suffix_text:
|
|
parts.append(suffix_text)
|
|
|
|
return ",".join(parts)
|
|
|
|
prompts_in = [
|
|
multi_prompt_1,
|
|
multi_prompt_2,
|
|
multi_prompt_3,
|
|
multi_prompt_4,
|
|
multi_prompt_5
|
|
]
|
|
|
|
processed_prompts = [
|
|
_process(p, prefix, suffix, enable_prefix, enable_suffix) for p in prompts_in
|
|
]
|
|
neg_prompt_out = _process(negative_prompt, prefix, suffix, enable_prefix, enable_suffix)
|
|
prompt_list_out = [p for p in processed_prompts if p and p.strip()]
|
|
|
|
return (
|
|
processed_prompts[0],
|
|
processed_prompts[1],
|
|
processed_prompts[2],
|
|
processed_prompts[3],
|
|
processed_prompts[4],
|
|
neg_prompt_out,
|
|
prompt_list_out,
|
|
)
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"MultiStringPrompts": MultiStringPrompts
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"MultiStringPrompts": "MultiString Prompts"
|
|
} |