multimodalart's picture
Squashing commit
4450790 verified
#---------------------------------------------------------------------------------------------------------------------#
# Comfyroll Studio custom nodes by RockOfFire and Akatsuzi https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes
# for ComfyUI https://github.com/comfyanonymous/ComfyUI
#---------------------------------------------------------------------------------------------------------------------#
from ..categories import icons
class AnyType(str):
def __ne__(self, __value: object) -> bool:
return False
any = AnyType("*")
#---------------------------------------------------------------------------------------------------------------------#
class CR_StringToNumber:
@classmethod
def INPUT_TYPES(s):
return {"required": {"text": ("STRING", {"multiline": False, "default": "text", "forceInput": True}),
"round_integer": (["round", "round down","round up"],),
},
}
RETURN_TYPES = ("INT", "FLOAT", "STRING", )
RETURN_NAMES = ("INT", "FLOAT", "show_help", )
FUNCTION = "convert"
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, text, round_integer):
# Check if the text starts with a minus sign
if text.startswith('-') and text[1:].replace('.','',1).isdigit():
# If it starts with '-', remove it and convert the rest to int and float
float_out = -float(text[1:])
else:
# Check if number
if text.replace('.','',1).isdigit():
float_out = float(text)
else:
print(f"[Error] CR String To Number. Not a number.")
return {}
if round_integer == "round up":
if text.startswith('-'):
int_out = int(float_out)
else:
int_out = int(float_out) + 1
elif round_integer == "round down":
if text.startswith('-'):
int_out = int(float_out) - 1
else:
int_out = int(float_out)
else:
int_out = round(float_out)
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-string-to-number"
return (int_out, float_out, show_help,)
#---------------------------------------------------------------------------------------------------------------------#
# based on Repeater node by pythongosssss
class CR_StringToCombo:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"text": ("STRING", {"multiline": False, "default": "", "forceInput": True}),
},
}
RETURN_TYPES = (any, "STRING", )
RETURN_NAMES = ("any", "show_help", )
FUNCTION = "convert"
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, text):
text_list = list()
if text != "":
values = text.split(',')
text_list = values[0]
print(text_list)
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-string-to-combo"
return (text_list, show_help, )
#---------------------------------------------------------------------------------------------------------------------#
# based on Repeater node by pythongosssss
class CR_StringToBoolean:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"text": ("STRING", {"multiline": False, "default": "", "forceInput": True}),
},
}
RETURN_TYPES = ("BOOLEAN", "STRING", )
RETURN_NAMES = ("BOOLEAN", "show_help", )
FUNCTION = "convert"
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, text):
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-string-to-boolean"
if text == "True" or text == "true":
boolean_out = True
if text == "False" or text == "false":
boolean_out = False
else:
pass
return (boolean_out, show_help, )
#---------------------------------------------------------------------------------------------------------------------------------------------------#
# Cloned from Mikey Nodes
class CR_IntegerToString:
@classmethod
def INPUT_TYPES(s):
return {"required": {"int_": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff, "forceInput": True}),
}
}
RETURN_TYPES = ("STRING","STRING", )
RETURN_NAMES = ("STRING","show_help", )
FUNCTION = 'convert'
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, int_):
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-integer-to-string"
return (f'{int_}', show_help, )
#---------------------------------------------------------------------------------------------------------------------------------------------------#
# based on Mikey Nodes
class CR_FloatToString:
@classmethod
def INPUT_TYPES(s):
return {"required": {"float_": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1000000.0, "forceInput": True}),
}
}
RETURN_TYPES = ('STRING', "STRING", )
RETURN_NAMES = ('STRING', "show_help", )
FUNCTION = 'convert'
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, float_):
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-float-to-string"
return (f'{float_}', show_help, )
#---------------------------------------------------------------------------------------------------------------------
# based on Mikey Nodes
class CR_FloatToInteger:
@classmethod
def INPUT_TYPES(cls):
return {"required": {"_float": ("FLOAT", {"default": 0.0, "forceInput": True, "forceInput": True}),
}
}
RETURN_TYPES = ("INT", "STRING", )
RETURN_NAMES = ("INT", "show_help", )
FUNCTION = "convert"
CATEGORY = icons.get("Comfyroll/Utils/Conversion")
def convert(self, _float):
show_help = "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes/wiki/Conversion-Nodes#cr-float-to-integer"
return (int(_float), show_help, )
#---------------------------------------------------------------------------------------------------------------------#
# MAPPINGS
#---------------------------------------------------------------------------------------------------------------------#
# For reference only, actual mappings are in __init__.py
# 10 nodes published
'''
NODE_CLASS_MAPPINGS = {
"CR String To Number": CR_StringToNumber,
"CR String To Combo": CR_StringToCombo,
"CR Float To String": CR_FloatToString,
"CR Float To Integer": CR_FloatToInteger,
"CR Integer To String": CR_IntegerToString,
"CR String To Boolean": CR_StringToBoolean,
}
'''