49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import logging
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class SplitPrompt:
|
|
"""
|
|
A simple node to split a prompt into a batch of prompt.
|
|
Inspired from [ComfyUI-Inspire-Pack](https://github.com/ltdrdata/ComfyUI-Inspire-Pack)
|
|
"""
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"prompt": (
|
|
"STRING",
|
|
{"multiline": True, "default": "First Prompt \nSecond Prompt", "tooltip": "A multiline prompt that will be split to batch generate"}
|
|
)
|
|
},
|
|
"optional": {
|
|
"split_on": (
|
|
"STRING",
|
|
{"default": '\n', "tooltip": "Will split the input prompt on this character"}
|
|
),
|
|
"trim": (
|
|
"BOOLEAN",
|
|
{"default": True, "tooltip": "Will trim prompts and remove empty ones"}
|
|
),
|
|
}
|
|
}
|
|
|
|
CATEGORY = "pecha_kucha"
|
|
DESCRIPTION = "Split a prompt in a list of prompts"
|
|
FUNCTION = "split"
|
|
OUTPUT_IS_LIST = (True,)
|
|
RETURN_NAMES = ("Split Prompts",)
|
|
RETURN_TYPES = ("STRING",)
|
|
|
|
@staticmethod
|
|
def IS_CHANGED(prompt, split_on='\n', trim=True):
|
|
return f"trim:{trim}_split:{split_on}_prompt:{prompt}"
|
|
|
|
@staticmethod
|
|
def split(prompt, split_on='\n', trim=True):
|
|
prompts = prompt.split(split_on)
|
|
if trim:
|
|
prompts = [prompt.strip() for prompt in prompts]
|
|
return (prompts,)
|