Files
CavinHuang-comfyui-nodes-docs/docs/SDXLPromptStylerAll.md
2024-05-26 20:35:16 +08:00

4.0 KiB

Documentation

该节点旨在通过应用各种样式模板来增强提示的呈现,确保提示具有吸引力且在情境上适当。

Input types

Required

  • text_positive
    • 正面文本输入至关重要,因为它为提示设定了积极基调。它是将要被样式化并呈现给用户的基础内容。
    • Comfy dtype: STRING
    • Python dtype: str
  • text_negative
    • 负面文本输入通过提供对比视角来补充正面文本。这对于创建一个平衡且全面的提示至关重要。
    • Comfy dtype: STRING
    • Python dtype: str
  • style
    • 样式参数至关重要,因为它决定了应用于提示的审美和结构格式,显著影响用户的感知和参与度。
    • Comfy dtype: COMBO
    • Python dtype: str

Optional

  • log_prompt
    • 日志记录选项允许记录提示生成的详细信息,这对于调试和随时间改进节点的功能非常有用。
    • Comfy dtype: COMBO
    • Python dtype: str
  • auto_select_style
    • 启用此功能后,它将自动化样式选择过程,确保将多样化的样式应用于提示,增强整体的多样性和吸引力。
    • Comfy dtype: BOOLEAN
    • Python dtype: bool
  • auto_refresh
    • 激活此参数后,它会触发节点刷新并生成新的提示,确保内容对用户保持新鲜和吸引力。
    • Comfy dtype: BOOLEAN
    • Python dtype: bool

Output types

  • positive_prompt_text_g
    • 输出提供积极样式化的提示文本,已经格式化以有效地吸引和引导用户。
    • Comfy dtype: STRING
    • Python dtype: str
  • negative_prompt_text_g
    • 输出提供负面样式化的提示文本,提供对比视角以平衡整体信息。
    • Comfy dtype: STRING
    • Python dtype: str

Usage tips

  • Infra type: CPU

Source code

class SDXLPromptStylerAll:

    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(cls):
        p = os.path.dirname(os.path.realpath(__file__))
        file_path = os.path.join(p, 'sdxl_styles_all.json')
        cls.json_data = read_json_file(file_path)
        styles = read_sdxl_styles(cls.json_data)
        return {'required': {'text_positive': ('STRING', {'default': '', 'multiline': True}), 'text_negative': ('STRING', {'default': '', 'multiline': True}), 'style': (styles,), 'log_prompt': (['No', 'Yes'], {'default': 'No'})}, 'optional': {'auto_select_style': ('BOOLEAN', {'default': False}), 'auto_refresh': ('BOOLEAN', {'default': False})}}

    @classmethod
    def IS_CHANGED(cls, text, autorefresh):
        if auto_refresh == 'True':
            return float('NaN')

    def get_prompt(self, text: str, autorefresh: str) -> tuple[str]:
        prompt = self.generate_prompt(text)
        print(f'Prompt: {prompt}')
        return (prompt,)

    @abstractmethod
    def generate_prompt(self, text: str) -> str:
        ...
    RETURN_TYPES = ('STRING', 'STRING')
    RETURN_NAMES = ('positive_prompt_text_g', 'negative_prompt_text_g')
    FUNCTION = 'prompt_styler'
    CATEGORY = 'Style Prompts'

    def prompt_styler(self, text_positive, text_negative, style, log_prompt, auto_select_style=False, auto_refresh=False):
        if auto_select_style or auto_refresh:
            style = random.choice([template['name'] for template in self.json_data])
        (positive_prompt, negative_prompt) = read_sdxl_templates_replace_and_combine(self.json_data, style, text_positive, text_negative)
        if log_prompt == 'Yes':
            print(f'style: {style}')
            print(f'text_positive: {text_positive}')
            print(f'text_negative: {text_negative}')
            print(f'positive_prompt: {positive_prompt}')
            print(f'negative_prompt: {negative_prompt}')
        current_time = int(time.time())
        dummy_change = current_time
        return (positive_prompt, negative_prompt, dummy_change)
        dummy_change = current_time
        return (positive_prompt, negative_prompt, dummy_change)