import os import random import time import folder_paths class LoadText: @classmethod def INPUT_TYPES(s): input_dir = folder_paths.get_input_directory() files = [f for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f))] files = folder_paths.filter_files_content_types(files, ["text"]) return { "required": { "file_path": ("STRING", {"default": "/path/to/file"}), "file": (sorted(files),), "encoding": ("STRING", {"default": "utf-8"}), }, } RETURN_TYPES = ("STRING",) FUNCTION = "load" CATEGORY = "不忘科技-自定义节点🚩/文本" def load(self, file_path, file, encoding): if not (file_path and len(file_path.strip()) > 0 and file_path != "/path/to/file"): file_path = folder_paths.get_annotated_filepath(file) with open(file_path, "r", encoding=encoding) as f: return (f.read(),) class StringEmptyJudgement: @classmethod def INPUT_TYPES(s): return { "required": { "input": ("STRING", {"forceInput": True}), }, } RETURN_TYPES = ("BOOLEAN",) RETURN_NAMES = ("是否为空",) FUNCTION = "compute" CATEGORY = "不忘科技-自定义节点🚩/文本" def compute(self, input): if len(input) == 0: return (True,) else: return (False,) class RandomLineSelector: """ ComfyUI自定义节点:随机行选择器 从输入的多行文本中随机选择一行输出 """ @classmethod def INPUT_TYPES(cls): return { "required": { "text": ("STRING", { "multiline": True, "default": """ 保持人物样貌和衣服不变,改变人物的光影效果。更换背景: 图像呈现出一个温馨的维多利亚复古风格房间,墙面被多样化的艺术画框与照片装饰,展现出浓郁的怀旧氛围。中心的金框全身镜是视觉焦点,上面缠绕着精致花卉装饰,增强了空间的艺术感。左侧靠墙摆放花瓶与烛台,白色地板映衬着跳动的暖黄色光线,营造出柔和而梦幻的氛围。右侧床铺整洁柔软,与一旁的小抽屉柜和台灯形成和谐的组合。整体画面色调以暖黄色为主,搭配田园风格装饰元素,构图均衡,注重细节,体现了舒适浪漫的生活场景。人物重新打光融合到场景中。 保持人物形象和衣服不变,改变人物的光影效果。更换背景: 衣帽间的开放式悬挂区搭配浅色木地板,衣杆上挂满中性色长裙,旁边搁板整齐叠放针织毛衣与围巾。 保持人物形象和衣服不变,改变人物的光影效果。更换背景: 白色衣柜门打开后,分层挂满长裙和连体裤,底部抽屉收纳着色彩鲜艳的运动服与家居裤。 保持人物形象和衣服不变,改变人物的光影效果。更换背景: 玻璃门的衣柜设计体现精致生活,内部悬挂精致衬衫和镂空裙摆,饰品抽屉随时为配件搭配提供轻便选择。 """ }), "seed": ("INT", { "default": 0, "min": -1, "max": 0xffffffffffffffff }), }, } RETURN_TYPES = ("STRING",) RETURN_NAMES = ("selected_line",) FUNCTION = "select_random_line" CATEGORY = "不忘科技-自定义节点🚩/文本" def select_random_line(self, text, seed): """ 从输入文本中随机选择一行 Args: text (str): 输入的多行文本 seed (int): 随机种子 Returns: tuple: 包含选中行的元组 """ # 设置随机种子(-1表示使用当前时间戳) if seed == -1: random.seed(int(time.time() * 1000000)) # 使用微秒级时间戳 else: random.seed(seed) # 过滤掉空行 non_empty_lines = [line.strip() for line in text.split('\n') if line.strip()] # 如果没有非空行,返回空字符串 if not non_empty_lines: return ("",) # 随机选择一行 selected_line = random.choice(non_empty_lines) return (selected_line,)