66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import random
|
|
from typing import List
|
|
import comfy.model_management as model_management
|
|
|
|
class TT_StoryCombiner:
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"text1": ("STRING", {"multiline": True}),
|
|
"text2": ("STRING", {"multiline": True}),
|
|
"text3": ("STRING", {"multiline": True}),
|
|
"text4": ("STRING", {"multiline": True}),
|
|
"text5": ("STRING", {"multiline": True}),
|
|
"text6": ("STRING", {"multiline": True}),
|
|
"text7": ("STRING", {"multiline": True}),
|
|
"text8": ("STRING", {"multiline": True}),
|
|
"text9": ("STRING", {"multiline": True}),
|
|
"separator": ("STRING", {"default": ". "}),
|
|
"seed": ("INT", {"default": 0}),
|
|
}
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
FUNCTION = "process"
|
|
CATEGORY = "TT_TextTools"
|
|
|
|
def process(self, text1: str, text2: str, text3: str, text4: str, text5: str, text6: str, text7: str, text8: str, text9: str, separator: str, seed: int) -> List[str]:
|
|
random.seed(seed)
|
|
|
|
def get_random_line(text):
|
|
lines = [line.strip() for line in text.split("\n") if line.strip()]
|
|
return random.choice(lines) if lines else ""
|
|
|
|
selected_lines = [
|
|
get_random_line(text1),
|
|
get_random_line(text2),
|
|
get_random_line(text3),
|
|
get_random_line(text4),
|
|
get_random_line(text5),
|
|
get_random_line(text6),
|
|
get_random_line(text7),
|
|
get_random_line(text8),
|
|
get_random_line(text9)
|
|
]
|
|
|
|
filtered_lines = [line for line in selected_lines if line]
|
|
|
|
result = separator.join(filtered_lines)
|
|
|
|
return (result,)
|
|
|
|
def register_nodes():
|
|
return {"TT_StoryCombiner": TT_StoryCombiner}
|
|
|
|
# A dictionary that contains all nodes you want to export with their names
|
|
# NOTE: names should be globally unique
|
|
NODE_CLASS_MAPPINGS = {
|
|
"TT_StoryCombiner": TT_StoryCombiner
|
|
}
|
|
|
|
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"TT_StoryCombiner": "TT_StoryCombiner"
|
|
}
|