Files
narusas-Comfyui-Logic-Support/number_sequence_generator.py
T

73 lines
2.9 KiB
Python

class NumberSequenceGenerator:
"""
Number Sequence Generator Node: Generates a sequence of numbers with specified repetitions.
This node generates a sequence of numbers within a specified range (start_number to end_number),
repeating each number a specified number of times before moving to the next number.
Each time the node is executed, it outputs the next number in the sequence. When the sequence
is complete (after outputting the end_number the specified number of times), it starts over
from the beginning.
Usage examples:
- With start_number=1, end_number=3, repeat_count=2:
Outputs 1,1,2,2,3,3,1,1,2,2,3,3,... on successive executions
- With start_number=5, end_number=7, repeat_count=1:
Outputs 5,6,7,5,6,7,... on successive executions
"""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"start_number": ("INT", {"default": 1, "min": 1, "max": 1000, "step": 1}),
"end_number": ("INT", {"default": 10, "min": 1, "max": 1000, "step": 1}),
"repeat_count": ("INT", {"default": 1, "min": 1, "max": 100, "step": 1}),
},
}
RETURN_TYPES = ("INT",)
RETURN_NAMES = "NUMBER"
FUNCTION = "generate_number"
CATEGORY = "Logic-Support"
# 클래스 변수로 현재 상태 저장
current_number = 1
current_repeat = 1
def generate_number(self, start_number, end_number, repeat_count):
# 범위 검증 - 시작 숫자가 종료 숫자보다 크면 값을 교환
if start_number > end_number:
start_number, end_number = end_number, start_number
# 클래스 변수가 현재 범위를 벗어나면 초기화
if (NumberSequenceGenerator.current_number < start_number or
NumberSequenceGenerator.current_number > end_number):
NumberSequenceGenerator.current_number = start_number
NumberSequenceGenerator.current_repeat = 1
# 현재 숫자 저장
result = NumberSequenceGenerator.current_number
# 반복 횟수 증가
NumberSequenceGenerator.current_repeat += 1
# 현재 숫자의 반복 횟수가 지정된 반복 횟수에 도달하면 다음 숫자로 이동
if NumberSequenceGenerator.current_repeat > repeat_count:
NumberSequenceGenerator.current_number += 1
NumberSequenceGenerator.current_repeat = 1
# 종료 숫자를 넘어가면 시작 숫자로 돌아감
if NumberSequenceGenerator.current_number > end_number:
NumberSequenceGenerator.current_number = start_number
return (result,)
NODE_CLASS_MAPPINGS = {
"NumberSequenceGenerator": NumberSequenceGenerator
}
NODE_DISPLAY_NAME_MAPPINGS = {
"NumberSequenceGenerator": "Number Sequence Generator"
}