Files
2024-05-11 23:23:39 +08:00

172 lines
4.6 KiB
Python

"""
自定义的结点
"""
import os
import sys
import json
import hashlib
import traceback
import math
import time
import random
import numpy
import torch
import numbers
from pathlib import Path
from PIL import Image, ImageOps, ImageSequence
from PIL.PngImagePlugin import PngInfo
import numpy as np
import safetensors.torch
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "comfy"))
import comfy.diffusers_load
import comfy.samplers
import comfy.sample
import comfy.sd
import comfy.utils
import comfy.controlnet
import comfy.clip_vision
import comfy.model_management
from comfy.cli_args import args
import importlib
import folder_paths
import latent_preview
from .nodes_Any import any_type, show_any
class StringPathStem:
"""
从路径中解析出 stem
"""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"path": ("STRING", {"multiline": False, "default": ""}),
},
}
RETURN_TYPES = ("STRING", )
RETURN_NAMES = ("stem", )
FUNCTION = "stem"
CATEGORY = "ruiqu/string"
def stem(self, path):
return (Path(path).stem, )
class StringAsAny:
"""
支持匹配任意类型的字符串
"""
RETURN_TYPES = (any_type,)
FUNCTION = "get"
CATEGORY = "ruiqu/any"
@classmethod
def INPUT_TYPES(cls):
return {"required": {"string": ("STRING", {"default": "", "multiline": True})}}
def get(self, string):
return (string,)
class StringConcatBase:
"""
字符串的连接
"""
FUNCTION = "concat"
CATEGORY = "ruiqu/string"
def concat(self, prefix, suffix, join_with_space, **kwargs):
keys = self.__class__.INPUT_TYPES()['optional'].keys()
keys = sorted(keys)
result = []
for key in keys:
if join_with_space:
result.append(
prefix.strip() + " " + kwargs[key].strip() + " " + suffix.strip()
)
else:
result.append(
prefix + kwargs[key] + suffix
)
return tuple(result)
class StringConcat1(StringConcatBase):
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"prefix": ("STRING", {"multiline": False, "default": ""}),
"suffix": ("STRING", {"multiline": False, "default": ""}),
"join_with_space": ("BOOLEAN", {"default": True}),
},
"optional": {
f"text_{idx}": ("STRING", {"multiline": False, "default": ""})
for idx in range(1, 2)
}
}
RETURN_TYPES = tuple(("STRING" for idx in range(1, 2)))
RETURN_NAMES = tuple((f"text_{idx}" for idx in range(1, 2)))
class StringConcat3(StringConcatBase):
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"prefix": ("STRING", {"multiline": False, "default": ""}),
"suffix": ("STRING", {"multiline": False, "default": ""}),
"join_with_space": ("BOOLEAN", {"default": True}),
},
"optional": {
f"text_{idx}": ("STRING", {"multiline": False, "default": ""})
for idx in range(1, 4)
}
}
RETURN_TYPES = tuple(("STRING" for idx in range(1, 4)))
RETURN_NAMES = tuple((f"text_{idx}" for idx in range(1, 4)))
class StringConcat6(StringConcatBase):
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"prefix": ("STRING", {"multiline": False, "default": ""}),
"suffix": ("STRING", {"multiline": False, "default": ""}),
"join_with_space": ("BOOLEAN", {"default": True}),
},
"optional": {
f"text_{idx}": ("STRING", {"multiline": False, "default": ""})
for idx in range(1, 7)
}
}
RETURN_TYPES = tuple(("STRING" for idx in range(1, 7)))
RETURN_NAMES = tuple((f"text_{idx}" for idx in range(1, 7)))
class StringConcat9(StringConcatBase):
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"prefix": ("STRING", {"multiline": False, "default": ""}),
"suffix": ("STRING", {"multiline": False, "default": ""}),
"join_with_space": ("BOOLEAN", {"default": True}),
},
"optional": {
f"text_{idx}": ("STRING", {"multiline": False, "default": ""})
for idx in range(1, 10)
}
}
RETURN_TYPES = tuple(("STRING" for idx in range(1, 10)))
RETURN_NAMES = tuple((f"text_{idx}" for idx in range(1, 10)))