From 005fc6e1edcd9d103c89e34df51beeabcdffb1c7 Mon Sep 17 00:00:00 2001 From: AlekPet Date: Tue, 11 Jul 2023 19:17:32 +0300 Subject: [PATCH] update, add PreviewTextNode --- ExtrasNode/README.md | 6 +++++ ExtrasNode/extras_node.py | 22 ++++++++++++++++ ExtrasNode/js/extras_node.js | 45 +++++++++++++++++++++++++++++++++ README.md | 12 +++++---- TranslateNode/README.md | 6 ++--- TranslateNode/translate_node.py | 26 ++----------------- 6 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 ExtrasNode/README.md create mode 100644 ExtrasNode/extras_node.py create mode 100644 ExtrasNode/js/extras_node.js diff --git a/ExtrasNode/README.md b/ExtrasNode/README.md new file mode 100644 index 0000000..13e372d --- /dev/null +++ b/ExtrasNode/README.md @@ -0,0 +1,6 @@ +# ExtrasNode node for ComfyUI + +Custom nodes for ComfyUI + +> Includes: +> **PreviewTextNode** - The node displays the input text diff --git a/ExtrasNode/extras_node.py b/ExtrasNode/extras_node.py new file mode 100644 index 0000000..4df2050 --- /dev/null +++ b/ExtrasNode/extras_node.py @@ -0,0 +1,22 @@ +class PreviewTextNode: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(s): + + return { + "required": { + "text": ("STRING", {"forceInput": True}), + }, + "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, + } + + RETURN_TYPES = () + OUTPUT_NODE = True + FUNCTION = "preview_text" + + CATEGORY = "AlekPet Nodes/extras" + + def preview_text(self, text, prompt=None, extra_pnginfo=None): + return {"ui": {"string": [text,]}} diff --git a/ExtrasNode/js/extras_node.js b/ExtrasNode/js/extras_node.js new file mode 100644 index 0000000..9e424cf --- /dev/null +++ b/ExtrasNode/js/extras_node.js @@ -0,0 +1,45 @@ +import { app } from "../../scripts/app.js"; +import { ComfyWidgets } from "../../scripts/widgets.js"; + +app.registerExtension({ + name: "Comfy.ExtrasNode", + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeData.name === "PreviewTextNode") { + const onNodeCreated = nodeType.prototype.onNodeCreated; + + nodeType.prototype.onNodeCreated = function () { + const r = onNodeCreated + ? onNodeCreated.apply(this, arguments) + : undefined; + + let PreviewTextNode = app.graph._nodes.filter( + (wi) => wi.type == "PreviewTextNode" + ), + nodeName = `PreviewTextNode_${PreviewTextNode.length}`; + + console.log(`Create PreviewTextNode: ${nodeName}`); + + ComfyWidgets.STRING( + this, + nodeName, + [ + "STRING", + { + default: "", + placeholder: "Text message output...", + multiline: true, + }, + ], + app + ); + this.onDrawBackground = function () { + const output = app.nodeOutputs[this.id + ""]; + if (output && output.string) { + this.widgets[0].inputEl.value = output.string[0]; + } + }; + return r; + }; + } + }, +}); diff --git a/README.md b/README.md index 57b8735..d89c868 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,13 @@ Custom nodes that extend the capabilities of [ComfyUI](https://github.com/comfya # List Nodes: -| Name | Description | ComfyUI category | -| :-------------- | :--------------------------------------------------------------------------------------------------------------: | :------------------------------------------: | -| _PoseNode_ | Set pose ControlNet | AlekPet Node/image | -| _PainterNode_ | Set sketch, scrumble image ControlNet and other nodes | AlekPet Node/image | -| _TranslateNode_ | Node translate promt from other languages into english. Includes: TranslateCLIPTextEncodeNode, TranslateTextNode | AlekPet Node/conditioning, AlekPet Node/text | +| Name | Description | ComfyUI category | +| :------------------ | :---------------------------------------------------------------------------------: | :-----------------------: | +| _PoseNode_ | The node set pose ControlNet | AlekPet Node/image | +| _PainterNode_ | The node set sketch, scrumble image ControlNet and other nodes | AlekPet Node/image | +| _TranslateNode_ | The node translate promt from other languages into english, and return conditioning | AlekPet Node/conditioning | +| _TranslateTextNode_ | The node translate promt from other languages into english and return string | AlekPet Node/text | +| _PreviewTextNode_ | The node displays the input text | AlekPet Node/extras | # Installing diff --git a/TranslateNode/README.md b/TranslateNode/README.md index 40535db..1c562b6 100644 --- a/TranslateNode/README.md +++ b/TranslateNode/README.md @@ -2,9 +2,9 @@ Custom nodes for ComfyUI, translate promt from other languages into english -Includes: -TranslateCLIPTextEncodeNode - return CONDITIONING -TranslateTextNode - return STRING +> Includes: +> **TranslateCLIPTextEncodeNode** - translate text, and return CONDITIONING +> **TranslateTextNode** - translte text and return text (STRING) ## Image: diff --git a/TranslateNode/translate_node.py b/TranslateNode/translate_node.py index db7ade9..ca8be3f 100644 --- a/TranslateNode/translate_node.py +++ b/TranslateNode/translate_node.py @@ -1,6 +1,5 @@ import re from googletrans import Translator, LANGUAGES -import folder_paths translator = Translator() empty_str = re.compile('^\s*$', re.I | re.M) @@ -65,6 +64,7 @@ class TranslateTextNode: } RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("text",) FUNCTION = "translate_text" CATEGORY = "AlekPet Nodes/text" @@ -72,27 +72,5 @@ class TranslateTextNode: def translate_text(self, from_translate, to_translate, text): text_tranlsated = translate(text, from_translate, to_translate) return (text_tranlsated,) - -# class PreviewTextNode: - -# def __init__(self): -# self.output_dir = folder_paths.get_temp_directory() -# @classmethod -# def INPUT_TYPES(s): - -# return { -# "required": { -# "text": ("STRING", {"forceInput": True}), -# } -# } -# OUTPUT_NODE = True -# RETURN_TYPES = () -# FUNCTION = "preview_text" - -# CATEGORY = "AlekPet Nodes/text" - -# def preview_text(self, text): -# print(text) -# return { "ui": { "string": text } } - + \ No newline at end of file