92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
import random
|
|
|
|
class PromptGenerator12Columns_Empty:
|
|
DEBUG = True
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"Column_1": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_2": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_3": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_4": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_5": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_6": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_7": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_8": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_9": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_10": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_11": ("STRING", {"multiline": True, "default": ""}),
|
|
"Column_12": ("STRING", {"multiline": True, "default": ""}),
|
|
"always_add": ("STRING", {"multiline": True, "default": ""}),
|
|
},
|
|
"optional": {
|
|
"use_commas": ("BOOLEAN", {
|
|
"default": True,
|
|
"label_on": "Use Commas",
|
|
"label_off": "New Lines"
|
|
}),
|
|
"include_always": ("BOOLEAN", {
|
|
"default": True,
|
|
"label_on": "Include Always Add",
|
|
"label_off": "Skip Always Add"
|
|
}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("prompt",)
|
|
FUNCTION = "generate"
|
|
CATEGORY = "Random Prompt Generators"
|
|
|
|
@classmethod
|
|
def IS_CHANGED(cls, **kwargs):
|
|
return random.random()
|
|
|
|
def _pick_one(self, text_block):
|
|
if not text_block:
|
|
return ""
|
|
lines = [l.strip() for l in str(text_block).splitlines()
|
|
if l.strip() and not l.strip().startswith('#')]
|
|
return random.choice(lines) if lines else ""
|
|
|
|
def generate(self, **kwargs):
|
|
seed = random.randint(0, 0xffffffffffffffff)
|
|
random.seed(seed)
|
|
|
|
cols = [kwargs[f"Column_{i}"] for i in range(1, 13)]
|
|
use_commas = kwargs.get("use_commas", True)
|
|
include_always = kwargs.get("include_always", True)
|
|
always_add = kwargs.get("always_add", "").strip()
|
|
|
|
# Pick one from each column (skip empty results)
|
|
parts = [self._pick_one(col) for col in cols if self._pick_one(col)]
|
|
|
|
# Join the column picks
|
|
if use_commas:
|
|
result = ", ".join(parts)
|
|
else:
|
|
result = "\n".join(parts)
|
|
|
|
# Smart always_add handling
|
|
if include_always and always_add:
|
|
if use_commas:
|
|
connector = ", " if result else ""
|
|
else:
|
|
connector = "\n" if result else ""
|
|
result += connector + always_add
|
|
|
|
if self.DEBUG:
|
|
print(f"\n[Empty 12-Columns Generator] Seed: {seed}\n→ {result}\n{'─' * 80}")
|
|
|
|
return (result,)
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"PromptGenerator12Columns_Empty": PromptGenerator12Columns_Empty
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"PromptGenerator12Columns_Empty": "(Empty) Prompt Generator 12 Columns"
|
|
} |