diff --git a/js/index.js b/js/index.js index dec06c3..fb874af 100644 --- a/js/index.js +++ b/js/index.js @@ -1,5 +1,6 @@ import { app } from "../../../scripts/app.js"; import { ComfyWidgets } from "../../scripts/widgets.js"; +import { api } from '../../scripts/api.js'; app.registerExtension({ name: "LoraInfo", @@ -17,6 +18,28 @@ app.registerExtension({ ["STRING", { multiline: true }], app, ).widget; + + const [loraNameWidget, baseModelWidget, outputWidget] = this.widgets; + let originalDescriptor = Object.getOwnPropertyDescriptor(loraNameWidget, 'value'); + + Object.defineProperty(loraNameWidget, 'value', { + get() { + const ret = originalDescriptor.get.call(loraNameWidget); + return ret + }, + set(value) { + originalDescriptor.set.call(loraNameWidget, value); + const body = new FormData(); + body.append('lora_name',value); + api + .fetchApi("/lora_info", { method: "POST", body, }) + .then((response) => response.json()) + .then((resp) => { + baseModelWidget.value = resp.baseModel; + outputWidget.value = resp.output; + }) + } + }); } const onExecuted = nodeType.prototype.onExecuted; diff --git a/lora_info.py b/lora_info.py index 8fad18b..3d38f4b 100644 --- a/lora_info.py +++ b/lora_info.py @@ -2,6 +2,9 @@ import folder_paths import hashlib import requests import json +import server +from server import PromptServer +from aiohttp import web def load_json_from_file(file_path): try: @@ -99,6 +102,17 @@ def get_lora_info(lora_name): LORA_LIST = sorted(folder_paths.get_filename_list("loras"), key=str.lower) +@server.PromptServer.instance.routes.post('/lora_info') +async def fetch_lora_info(request): + post = await request.post() + lora_name = post.get("lora_name") + (output, triggerWords, examplePrompt, baseModel) = get_lora_info(lora_name) + + return web.json_response({"output": output, "triggerWords": triggerWords, "examplePrompt": examplePrompt, "baseModel": baseModel}) + +dictionary_of_stuff = {"something":"A text message"} +PromptServer.instance.send_sync("my-message-handle", dictionary_of_stuff) + class LoraInfo: def __init__(self): pass @@ -132,4 +146,4 @@ NODE_DISPLAY_NAME_MAPPINGS = { "LoraInfo": "Lora Info", } -WEB_DIRECTORY = "./js" \ No newline at end of file +WEB_DIRECTORY = "./js"