81 lines
5.0 KiB
Python
81 lines
5.0 KiB
Python
_d='RiceRoundTempTokenNode'
|
|
_c='RiceRoundOutputImageNode'
|
|
_b='RiceRoundEncryptNode'
|
|
_a='RiceRoundOutputTextNode'
|
|
_Z='RiceRoundOutputBooleanNode'
|
|
_Y='RiceRoundOutputFloatNode'
|
|
_X='RiceRoundOutputIntNode'
|
|
_W='RiceRoundOutputMaskBridgeNode'
|
|
_V='RiceRoundUploadImageNode'
|
|
_U='RiceRoundImageUrlNode'
|
|
_T='RiceRoundOutputImageBridgeNode'
|
|
_S='RiceRoundDecryptNode'
|
|
_R='RiceRoundStrToBooleanNode'
|
|
_Q='RiceRoundStrToFloatNode'
|
|
_P='RiceRoundStrToIntNode'
|
|
_O='RiceRoundBooleanNode'
|
|
_N='RiceRoundFloatNode'
|
|
_M='RiceRoundIntNode'
|
|
_L='RiceRoundDownloadMaskNode'
|
|
_K='RiceRoundMaskBridgeNode'
|
|
_J='RiceRoundInputTextNode'
|
|
_I='RiceRoundRandomSeedNode'
|
|
_H='RiceRoundDownloadImageNode'
|
|
_G='RiceRoundSimpleImageNode'
|
|
_F='RiceRoundImageBridgeNode'
|
|
_E='RiceRoundDebugNode'
|
|
_D='RiceRoundAdvancedChoiceNode'
|
|
_C='RiceRoundSimpleChoiceNode'
|
|
_B='dynamic_class'
|
|
_A='display_name'
|
|
import platform,random
|
|
from urllib.parse import unquote
|
|
import subprocess
|
|
from server import PromptServer
|
|
from.input_node import*
|
|
from.output_node import*
|
|
from.encrypt_node import*
|
|
from.auth_unit import AuthUnit
|
|
from aiohttp import web
|
|
from functools import partial
|
|
from.rice_prompt_handler import RiceRoundPromptHandler
|
|
from.rice_url_config import RiceUrlConfig
|
|
from.rice_prompt_info import RiceEnvConfig,RicePromptInfo
|
|
def create_dynamic_nodes(base_class):
|
|
rice_prompt_info=RicePromptInfo();dynamic_classes={}
|
|
for(node_name,info)in rice_prompt_info.choice_classname_map.items():class_name=node_name;category='RiceRound/Advanced/Choice';dynamic_class=type(class_name,(base_class,),{'__node_name__':node_name,'CATEGORY':category});dynamic_classes[class_name]={_B:dynamic_class,_A:info.get(_A,class_name)}
|
|
return dynamic_classes
|
|
dynamic_choice_nodes=create_dynamic_nodes(RiceRoundBaseChoiceNode)
|
|
NODE_CLASS_MAPPINGS={_C:RiceRoundSimpleChoiceNode,_D:RiceRoundAdvancedChoiceNode,_E:RiceRoundDebugNode,_F:RiceRoundImageBridgeNode,_G:RiceRoundSimpleImageNode,_H:RiceRoundDownloadImageNode,_I:RiceRoundRandomSeedNode,_J:RiceRoundInputTextNode,_K:RiceRoundMaskBridgeNode,_L:RiceRoundDownloadMaskNode,_M:RiceRoundIntNode,_N:RiceRoundFloatNode,_O:RiceRoundBooleanNode,_P:RiceRoundStrToIntNode,_Q:RiceRoundStrToFloatNode,_R:RiceRoundStrToBooleanNode,_S:RiceRoundDecryptNode,_T:RiceRoundOutputImageBridgeNode,_U:RiceRoundImageUrlNode,_V:RiceRoundUploadImageNode,_W:RiceRoundOutputMaskBridgeNode,_X:RiceRoundOutputIntNode,_Y:RiceRoundOutputFloatNode,_Z:RiceRoundOutputBooleanNode,_a:RiceRoundOutputTextNode,_b:RiceRoundEncryptNode,_c:RiceRoundOutputImageNode,_d:RiceRoundTempTokenNode,**{name:cls[_B]for(name,cls)in dynamic_choice_nodes.items()}}
|
|
NODE_DISPLAY_NAME_MAPPINGS={_C:'Simple Choice',_D:'Advanced Choice',_E:'Debug',_F:'Image Bridge',_G:'Simple Image',_H:'Download Image',_I:'Random Seed',_J:'Input Text',_K:'Mask Bridge',_L:'Download Mask',_M:'RiceRound Int',_N:'RiceRound Float',_O:'RiceRound Boolean',_P:'RiceRound Str To Int',_Q:'RiceRound Str To Float',_R:'RiceRound Str To Boolean',_S:'Decrypt',_T:'Output Image Bridge',_U:'Image URL',_V:'Upload Image',_W:'Output Mask Bridge',_X:'Output Int',_Y:'Output Float',_Z:'Output Boolean',_a:'Output Text',_b:'Encrypt',_c:'Output Image',_d:'Temp Token',**{name:cls[_A]for(name,cls)in dynamic_choice_nodes.items()}}
|
|
WEB_DIRECTORY='./js'
|
|
__all__=['NODE_CLASS_MAPPINGS','NODE_DISPLAY_NAMES_MAPPINGS','WEB_DIRECTORY']
|
|
handler_instance=RiceRoundPromptHandler()
|
|
onprompt_callback=partial(handler_instance.onprompt_handler)
|
|
PromptServer.instance.add_on_prompt_handler(onprompt_callback)
|
|
routes=PromptServer.instance.routes
|
|
url_config=RiceUrlConfig()
|
|
@routes.post('/riceround/set_comfyui_web_server_info')
|
|
async def set_comfyui_web_server_info(request):server_info=await request.json();url_config.set_comfyui_local_web_server_info(server_info);return web.json_response({},status=200)
|
|
@routes.get('/riceround/auth_callback')
|
|
async def auth_callback(request):
|
|
auth_query=request.query;token=auth_query.get('token','')
|
|
if token:token=unquote(token);AuthUnit().save_user_token(token)
|
|
raise web.HTTPFound('/')
|
|
@routes.post('/riceround/set_node_additional_info')
|
|
async def set_node_additional_info(request):additional_info=await request.json();RicePromptInfo().set_node_additional_info(additional_info);return web.json_response({},status=200)
|
|
@routes.get('/riceround/open_selector_list_folder')
|
|
async def open_selector_list_folder(request):
|
|
A='error'
|
|
if request.remote not in('127.0.0.1','::1'):return web.json_response({A:'Unauthorized access'},status=403)
|
|
choice_server_folder=RicePromptInfo().get_choice_server_folder()
|
|
if not choice_server_folder.exists():return web.json_response({A:'Folder does not exist'},status=404)
|
|
system=platform.system()
|
|
try:
|
|
if system=='Windows':os.startfile(choice_server_folder)
|
|
elif system=='Darwin':subprocess.run(['open',choice_server_folder])
|
|
else:subprocess.run(['xdg-open',choice_server_folder])
|
|
return web.json_response({'status':'success'},status=200)
|
|
except Exception as e:return web.json_response({A:str(e)},status=500)
|
|
@routes.get('/riceround/save_current_env_config')
|
|
async def save_current_env_config(request):RiceEnvConfig().save_env_config();return web.json_response({},status=200) |