|
import random |
|
|
|
from .utils import * |
|
|
|
class FusionText: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"text_1": ("STRING", {"default": "", "forceInput": True}), "text_2": ("STRING", {"default": "", "forceInput": True})}} |
|
RETURN_TYPES = ("STRING",) |
|
FUNCTION = "combine" |
|
CATEGORY = "autotrigger" |
|
|
|
def combine(self, text_1, text_2): |
|
return (text_1 + text_2, ) |
|
|
|
|
|
class Randomizer: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"text_1":("STRING", {"forceInput": True}), |
|
"lora_1":("LORA_STACK", ), |
|
"text_2":("STRING", {"forceInput": True} ), |
|
"lora_2":("LORA_STACK", ), |
|
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("STRING", "LORA_STACK") |
|
RETURN_NAMES = ("text", "lora stack") |
|
FUNCTION = "randomize" |
|
|
|
|
|
|
|
CATEGORY = "autotrigger" |
|
|
|
def randomize(self, text_1, lora_1, text_2, lora_2, seed): |
|
random.seed(seed) |
|
if random.random() < .5: |
|
return (text_1, lora_1) |
|
return (text_2, lora_2) |
|
|
|
class TextInputBasic: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"text":("STRING", {"default":"", "multiline":True}), |
|
}, |
|
"optional": { |
|
"prefix":("STRING", {"default":"", "forceInput": True}), |
|
"suffix":("STRING", {"default":"", "forceInput": True}), |
|
} |
|
} |
|
|
|
RETURN_TYPES = ("STRING",) |
|
RETURN_NAMES = ("text", ) |
|
FUNCTION = "get_text" |
|
|
|
|
|
|
|
CATEGORY = "autotrigger" |
|
|
|
def get_text(self, text, prefix="", suffix=""): |
|
return (prefix + text + suffix, ) |
|
|
|
|
|
class TagsSelector: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"tags_list": ("LIST", {"default": []}), |
|
"selector": ("STRING", {"default": ":"}), |
|
"weight": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}), |
|
"ensure_comma": ("BOOLEAN", {"default": True}) |
|
}, |
|
"optional": { |
|
"prefix":("STRING", {"default":"", "forceInput": True}), |
|
"suffix":("STRING", {"default":"", "forceInput": True}), |
|
} |
|
} |
|
|
|
RETURN_TYPES = ("STRING",) |
|
FUNCTION = "select_tags" |
|
CATEGORY = "autotrigger" |
|
|
|
def select_tags(self, tags_list, selector, weight, ensure_comma, prefix="", suffix=""): |
|
if weight != 1.0: |
|
tags_list = [f"({tag}:{weight})" for tag in tags_list] |
|
output = parse_selector(selector, tags_list) |
|
if ensure_comma: |
|
striped_prefix = prefix.strip() |
|
striped_suffix = suffix.strip() |
|
if striped_prefix != "" and not striped_prefix.endswith(",") and output != "" and not output.startswith(","): |
|
prefix = striped_prefix + ", " |
|
if output != "" and not output.endswith(",") and striped_suffix != "" and not striped_suffix.startswith(","): |
|
suffix = ", " + striped_suffix |
|
return (prefix + output + suffix, ) |
|
|
|
class TagsFormater: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"tags_list": ("LIST", {"default": []}), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("STRING",) |
|
FUNCTION = "format_tags" |
|
CATEGORY = "autotrigger" |
|
|
|
def format_tags(self, tags_list): |
|
output = "" |
|
i = 0 |
|
for tag in tags_list: |
|
output += f'{i} : "{tag}"\n' |
|
i+=1 |
|
|
|
return (output,) |
|
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = { |
|
"Randomizer": Randomizer, |
|
"FusionText": FusionText, |
|
"TextInputBasic": TextInputBasic, |
|
"TagsSelector": TagsSelector, |
|
"TagsFormater": TagsFormater, |
|
} |
|
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = { |
|
"Randomizer": "Randomizer", |
|
"FusionText": "FusionText", |
|
"TextInputBasic": "TextInputBasic", |
|
"TagsSelector": "TagsSelector", |
|
"TagsFormater": "TagsFormater", |
|
} |
|
|