Version 0.2
Added a secondary node specific for inputting clip and outputting each prompt as a condition
This commit is contained in:
+8
-1
@@ -1,3 +1,10 @@
|
||||
from .multi_prompt_node import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
|
||||
from .multi_prompt_node import NODE_CLASS_MAPPINGS as string_node_mappings
|
||||
from .multi_prompt_node import NODE_DISPLAY_NAME_MAPPINGS as string_name_mappings
|
||||
|
||||
from .multi_prompt_encode_node import NODE_CLASS_MAPPINGS as encode_node_mappings
|
||||
from .multi_prompt_encode_node import NODE_DISPLAY_NAME_MAPPINGS as encode_name_mappings
|
||||
|
||||
NODE_CLASS_MAPPINGS = {**string_node_mappings, **encode_node_mappings}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {**string_name_mappings, **encode_name_mappings}
|
||||
|
||||
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
|
||||
@@ -0,0 +1,92 @@
|
||||
import torch
|
||||
|
||||
class MultiStringPromptsEncode:
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"clip": ("CLIP", ),
|
||||
"enable_prefix": (["true", "false"], {"default": "true"}),
|
||||
"enable_suffix": (["true", "false"], {"default": "true"}),
|
||||
"prefix": ("STRING", {"default": ""}),
|
||||
"suffix": ("STRING", {"default": ""}),
|
||||
"positive_prompt_1": ("STRING", {"multiline": True, "default": ""}),
|
||||
"positive_prompt_2": ("STRING", {"multiline": True, "default": ""}),
|
||||
"positive_prompt_3": ("STRING", {"multiline": True, "default": ""}),
|
||||
"positive_prompt_4": ("STRING", {"multiline": True, "default": ""}),
|
||||
"positive_prompt_5": ("STRING", {"multiline": True, "default": ""}),
|
||||
"negative_prompt": ("STRING", {"multiline": True, "default": ""}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("CONDITIONING", "CONDITIONING", "CONDITIONING", "CONDITIONING", "CONDITIONING", "CONDITIONING",)
|
||||
RETURN_NAMES = (
|
||||
"positive_1",
|
||||
"positive_2",
|
||||
"positive_3",
|
||||
"positive_4",
|
||||
"positive_5",
|
||||
"negative",
|
||||
)
|
||||
FUNCTION = "encode"
|
||||
CATEGORY = "MultiString Prompts"
|
||||
|
||||
def _process(self, 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)
|
||||
|
||||
def _encode_prompt(self, clip, prompt):
|
||||
if not prompt:
|
||||
prompt = ""
|
||||
|
||||
tokens = clip.tokenize(prompt)
|
||||
cond, pooled = clip.encode_from_tokens(tokens, return_pooled=True)
|
||||
return [[cond, {"pooled_output": pooled}]]
|
||||
|
||||
def encode(self, clip, prefix, suffix, enable_prefix, enable_suffix,
|
||||
positive_prompt_1, positive_prompt_2, positive_prompt_3,
|
||||
positive_prompt_4, positive_prompt_5, negative_prompt):
|
||||
|
||||
p1 = self._process(positive_prompt_1, prefix, suffix, enable_prefix, enable_suffix)
|
||||
p2 = self._process(positive_prompt_2, prefix, suffix, enable_prefix, enable_suffix)
|
||||
p3 = self._process(positive_prompt_3, prefix, suffix, enable_prefix, enable_suffix)
|
||||
p4 = self._process(positive_prompt_4, prefix, suffix, enable_prefix, enable_suffix)
|
||||
p5 = self._process(positive_prompt_5, prefix, suffix, enable_prefix, enable_suffix)
|
||||
n = self._process(negative_prompt, prefix, suffix, enable_prefix, enable_suffix)
|
||||
|
||||
cond_p1 = self._encode_prompt(clip, p1)
|
||||
cond_p2 = self._encode_prompt(clip, p2)
|
||||
cond_p3 = self._encode_prompt(clip, p3)
|
||||
cond_p4 = self._encode_prompt(clip, p4)
|
||||
cond_p5 = self._encode_prompt(clip, p5)
|
||||
cond_n = self._encode_prompt(clip, n)
|
||||
|
||||
return (cond_p1, cond_p2, cond_p3, cond_p4, cond_p5, cond_n)
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"MultiStringPromptsEncode": MultiStringPromptsEncode
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"MultiStringPromptsEncode": "MultiString Prompts Encode"
|
||||
}
|
||||
Reference in New Issue
Block a user