4.5 KiB
4.5 KiB
Documentation
- Class name: TextCombinations2
- Category: Mikey/Text
- Output node: False
- Repo Ref: https://github.com/bash-j/mikey_nodes
TextCombinations2节点旨在生成一系列文本操作,这些操作以定义的操作方式结合两个输入文本。它通过在输入上执行指定的操作来促进输出文本的创建,提供了文本处理的灵活性。
Input types
Required
- text1
- 'text1'参数是将在组合操作中使用的第一种输入文本。它在确定最终输出中起着关键作用,因为它是被操作的主要元素之一。
- Comfy dtype: STRING
- Python dtype: str
- text2
- 'text2'参数是与'text1'通过定义的操作结合的第二种输入文本。它的内容对于输出生成过程至关重要。
- Comfy dtype: STRING
- Python dtype: str
- operation
- 'operation'参数定义了要在输入文本上执行的特定组合操作。它至关重要,因为它决定了如何将'text1'和'text2'转换为所需的输出。
- Comfy dtype: COMBO['text1 to output1', 'text2 to output2']
- Python dtype: str
Optional
- delimiter
- 'delimiter'参数指定在操作期间连接文本组件时使用字符或字符串。它影响最终输出的格式。
- Comfy dtype: STRING
- Python dtype: str
- use_seed
- 'use_seed'参数决定是否应使用种子值从预定义的操作列表中选择一个操作。它为操作选择过程增加了随机性或特定性。
- Comfy dtype: COMBO['true', 'false']
- Python dtype: str
- seed
- 'seed'参数是一个整数值,当'use_seed'设置为true时,用于偏移操作的选择。它确保根据提供的整数选择特定的操作。
- Comfy dtype: INT
- Python dtype: int
- extra_pnginfo
- 'extra_pnginfo'参数保存可能需要用于某些操作的额外信息。它用于根据额外的上下文数据影响节点的行为。
- Comfy dtype: EXTRA_PNGINFO
- Python dtype: Union[Dict, str]
- prompt
- 'prompt'参数为节点提供指导或额外的上下文,可能会改变其处理输入文本的方式。它对于需要交互式或条件行为的节点特别有用。
- Comfy dtype: PROMPT
- Python dtype: Union[Dict, str]
Output types
- output1
- 'output1'参数代表组合操作后的第一个结果文本。它是输入和指定操作的直接结果。
- Comfy dtype: STRING
- Python dtype: str
- output2
- 'output2'参数代表组合操作后的第二个结果文本。它是从输入和执行的操作派生出的另一个输出。
- Comfy dtype: STRING
- Python dtype: str
Usage tips
- Infra type: CPU
Source code
class TextCombinations2:
texts = ['text1', 'text2', 'text1 + text2']
outputs = ['output1', 'output2']
@classmethod
def generate_combinations(cls, texts, outputs):
operations = []
for (output1, output2) in product(texts, repeat=len(outputs)):
operation = f'{output1} to {outputs[0]}, {output2} to {outputs[1]}'
operations.append(operation)
return operations
@classmethod
def INPUT_TYPES(cls):
cls.operations = cls.generate_combinations(cls.texts, cls.outputs)
return {'required': {'text1': ('STRING', {'multiline': True, 'default': 'Text 1'}), 'text2': ('STRING', {'multiline': True, 'default': 'Text 2'}), 'operation': (cls.operations, {'default': cls.operations[0]}), 'delimiter': ('STRING', {'default': ' '}), 'use_seed': (['true', 'false'], {'default': 'false'}), 'seed': ('INT', {'default': 0, 'min': 0, 'max': 18446744073709551615})}, 'hidden': {'extra_pnginfo': 'EXTRA_PNGINFO', 'prompt': 'PROMPT'}}
RETURN_TYPES = ('STRING', 'STRING')
RETURN_NAMES = ('output1', 'output2')
FUNCTION = 'mix'
CATEGORY = 'Mikey/Text'
def mix(self, text1, text2, operation, delimiter, use_seed, seed, extra_pnginfo, prompt):
text1 = search_and_replace(text1, extra_pnginfo, prompt)
text2 = search_and_replace(text2, extra_pnginfo, prompt)
text_dict = {'text1': text1, 'text2': text2}
if use_seed == 'true' and len(self.operations) > 0:
offset = seed % len(self.operations)
operation = self.operations[offset]
ops = operation.split(', ')
output_texts = [op.split(' to ')[0] for op in ops]
outputs = []
for output_text in output_texts:
components = output_text.split(' + ')
final_output = delimiter.join((eval(comp, {}, text_dict) for comp in components))
outputs.append(final_output)
return tuple(outputs)