From 8d0a142321f3a59303af04aa3c8ee1e9be4c19e1 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Fri, 24 Mar 2023 11:39:09 +0000 Subject: [PATCH 1/3] adds simple access to server from custom nodes --- server.py | 2 ++ web/scripts/api.js | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index 73429acca..2593e8086 100644 --- a/server.py +++ b/server.py @@ -29,6 +29,8 @@ async def cache_control(request: web.Request, handler): class PromptServer(): def __init__(self, loop): + PromptServer.instance = self + mimetypes.init(); mimetypes.types_map['.js'] = 'application/javascript; charset=utf-8' self.prompt_queue = None diff --git a/web/scripts/api.js b/web/scripts/api.js index b90b1c656..2b90c2abc 100644 --- a/web/scripts/api.js +++ b/web/scripts/api.js @@ -1,8 +1,15 @@ class ComfyApi extends EventTarget { + #registered = new Set(); + constructor() { super(); } + addEventListener(type, callback, options) { + super.addEventListener(type, callback, options); + this.#registered.add(type); + } + /** * Poll status for colab and other things that don't support websockets. */ @@ -82,7 +89,11 @@ class ComfyApi extends EventTarget { this.dispatchEvent(new CustomEvent("executed", { detail: msg.data })); break; default: - throw new Error("Unknown message type"); + if (this.#registered.has(msg.type)) { + this.dispatchEvent(new CustomEvent(msg.type, { detail: msg.data })); + } else { + throw new Error("Unknown message type"); + } } } catch (error) { console.warn("Unhandled message:", event.data); From 8a35c12e8c2dcac25ab1dcaba5bd832c278dcce4 Mon Sep 17 00:00:00 2001 From: m957ymj75urz Date: Sun, 26 Mar 2023 13:10:20 +0200 Subject: [PATCH 2/3] compute %width% and %height% in filepath when saving --- nodes.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nodes.py b/nodes.py index a981abb8e..bec2bf9a7 100644 --- a/nodes.py +++ b/nodes.py @@ -746,6 +746,13 @@ class SaveImage: except: digits = 0 return (digits, prefix) + + def compute_vars(input): + input = input.replace("%width%", str(images[0].shape[1])) + input = input.replace("%height%", str(images[0].shape[0])) + return input + + filename_prefix = compute_vars(filename_prefix) subfolder = os.path.dirname(os.path.normpath(filename_prefix)) filename = os.path.basename(os.path.normpath(filename_prefix)) From 48efadeccf9793ea86df89c173c34279ebe07f1f Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sun, 26 Mar 2023 15:16:52 -0400 Subject: [PATCH 3/3] Style. --- nodes.py | 4 ++-- server.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nodes.py b/nodes.py index bec2bf9a7..f24bc4a5e 100644 --- a/nodes.py +++ b/nodes.py @@ -746,12 +746,12 @@ class SaveImage: except: digits = 0 return (digits, prefix) - + def compute_vars(input): input = input.replace("%width%", str(images[0].shape[1])) input = input.replace("%height%", str(images[0].shape[0])) return input - + filename_prefix = compute_vars(filename_prefix) subfolder = os.path.dirname(os.path.normpath(filename_prefix)) diff --git a/server.py b/server.py index 1a370317f..e71289cdf 100644 --- a/server.py +++ b/server.py @@ -30,7 +30,7 @@ async def cache_control(request: web.Request, handler): class PromptServer(): def __init__(self, loop): PromptServer.instance = self - + mimetypes.init(); mimetypes.types_map['.js'] = 'application/javascript; charset=utf-8' self.prompt_queue = None