from .py.server_backend import * from aiohttp import web from pathlib import Path import asyncio import importlib import server @server.PromptServer.instance.routes.get('/jnodes_list_comfyui_subdirectories') async def list_comfyui_subdirectories_wrapper(request): loop = asyncio.get_event_loop() return await loop.run_in_executor(None, lambda: list_comfyui_subdirectories_request(request)) @server.PromptServer.instance.routes.get('/jnodes_list_immediate_subdirectories') async def list_immediate_subdirectories_wrapper(request): loop = asyncio.get_event_loop() return await loop.run_in_executor(None, lambda: list_immediate_subdirectories_request(request)) @server.PromptServer.instance.routes.get('/jnodes_get_comfyui_subdirectory_images') async def get_comfyui_subdirectory_images_wrapper(request): loop = asyncio.get_event_loop() return await loop.run_in_executor(None, lambda: get_comfyui_subdirectory_images_request(request)) @server.PromptServer.instance.routes.get('/jnodes_list_model_subdirectories') async def list_model_subdirectories_wrapper(request): loop = asyncio.get_event_loop() return await loop.run_in_executor(None, lambda: list_model_subdirectories_request(request)) @server.PromptServer.instance.routes.get('/jnodes_model_items') async def get_model_items_wrapper(request): loop = asyncio.get_event_loop() return await loop.run_in_executor(None, lambda: get_model_items(request)) @server.PromptServer.instance.routes.post('/jnodes_save_model_user_info') async def save_model_user_info_wrapper(request): return await save_model_user_info(request) @server.PromptServer.instance.routes.get("/jnodes_view_image") async def view_image_wrapper(request): return await view_image(request) @server.PromptServer.instance.routes.post("/jnodes_save_image_as_model_preview") async def save_image_as_model_preview_wrapper(request): return await save_image_as_model_preview(request) @server.PromptServer.instance.routes.post('/jnodes_copy_item') async def copy_item_wrapper(request): return await copy_item(request) @server.PromptServer.instance.routes.get("/jnodes_load_info") async def load_info_wrapper(request): return load_info(request) @server.PromptServer.instance.routes.post('/jnodes_request_open_file_manager') async def request_open_file_manager_wrapper(request): return await request_open_file_manager(request) @server.PromptServer.instance.routes.post('/jnodes_request_task_cancellation') async def request_task_cancellation_wrapper(request): request_task_cancellation() return web.json_response({"success": True}) @server.PromptServer.instance.routes.post('/jnodes_find_files') async def find_files_wrapper(request): return await find_files(request) @server.PromptServer.instance.routes.post('/jnodes_save_text') async def save_text_wrapper(request): return await save_text(request) @server.PromptServer.instance.routes.post('/jnodes_load_text') async def load_text_wrapper(request): return await load_text(request) @server.PromptServer.instance.routes.post('/jnodes_post_setting') async def post_setting_wrapper(request): return await post_setting(request) @server.PromptServer.instance.routes.post('/jnodes_post_all_settings') async def post_all_settings_wrapper(request): return await post_all_settings(request) @server.PromptServer.instance.routes.get('/jnodes_get_setting') async def get_setting_wrapper(request): return await get_setting(request) @server.PromptServer.instance.routes.get('/jnodes_get_all_settings') async def get_all_settings_wrapper(request): return await get_all_settings(request) @server.PromptServer.instance.routes.post("/jnodes_upload_image") async def upload_image_wrapper(request): return await upload_image(request) @server.PromptServer.instance.routes.delete("/jnodes_delete_item") async def delete_item_wrapper(request): return await delete_item(request) @server.PromptServer.instance.routes.get('/jnodes_get_browser_video_extensions') def get_browser_video_extensions_wrapper(request): from .py.utils import ACCEPTED_BROWSER_VIDEO_EXTENSIONS return web.json_response({"success": True, "extensions": ACCEPTED_BROWSER_VIDEO_EXTENSIONS}) @server.PromptServer.instance.routes.post('/jnodes_edit_image_metadata') async def edit_image_metadata_wrapper(request): return await edit_image_metadata(request) WEB_DIRECTORY = "./web" NODE_CLASS_MAPPINGS = {} NODE_DISPLAY_NAME_MAPPINGS = {} def load_nodes(): for filename in (Path(__file__).parent.resolve() / "py").glob("*.py"): if not filename.is_file(): continue if filename.suffix != ".py": continue if filename.name.startswith("."): continue if filename.name == "__init__.py": continue print("Loading:", filename) module_name = filename.stem module = importlib.import_module(f"{__package__}.py.{module_name}") try: NODE_CLASS_MAPPINGS.update(getattr(module, "NODE_CLASS_MAPPINGS")) if hasattr(module, "NODE_DISPLAY_NAME_MAPPINGS"): NODE_DISPLAY_NAME_MAPPINGS.update(getattr(module, "NODE_DISPLAY_NAME_MAPPINGS")) except: pass load_nodes() __all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]