Compare commits

..
9 Commits
Author SHA1 Message Date
Dijkstra 1e8ed1e16f feat: added pyssss's lora view info 2024-04-09 21:09:44 +02:00
dijkstra 64113afd7f Merge pull request #18 from idrirap/issue16
feat: added lora name to output
2024-04-09 18:16:19 +02:00
Dijkstra 2bd6769b78 fix: now can use the output lora_name as an input for override_lora_name 2024-04-09 18:11:46 +02:00
Dijkstra 96a69f7cbe feat: added lora name to output 2024-04-09 17:05:22 +02:00
dijkstra 9d8b79844f Merge pull request #13 from idrirap/issue12
fix: broken preview when using both enable preview and override_lora_name
2024-03-14 23:26:17 +01:00
Dijkstra f3815b7ce4 fix: broken preview when using both enable preview and override_lora_name 2024-03-14 23:23:35 +01:00
dijkstra d5641ba745 Merge pull request #11 from deipfei/json-error-change
don't delete loras_tags.json on JSONDecodeError
2024-03-08 21:21:03 +01:00
Dustin Pfeiffer 5b5eaf3a81 don't delete loras_tags.json on JSONDecodeError 2024-02-23 15:28:01 -08:00
dijkstra 517b8a8a12 Merge pull request #9 from idrirap/issue8
feat: added tags only node. Added node to load lora names as string. …
2023-12-12 18:58:03 +01:00
4 changed files with 62 additions and 19 deletions
+2 -1
View File
@@ -5,4 +5,5 @@ from .nodes_utils import NODE_CLASS_MAPPINGS as nu_NCM
NODE_CLASS_MAPPINGS = dict(na_NCM, **nu_NCM)
#NODE_DISPLAY_NAME_MAPPINGS = dict(na_NDNM, **nu_NDNM)
__all__ = ["NODE_CLASS_MAPPINGS"]#, "NODE_DISPLAY_NAME_MAPPINGS"]
WEB_DIRECTORY = "./web"
__all__ = ["NODE_CLASS_MAPPINGS", "WEB_DIRECTORY"]#, "NODE_DISPLAY_NAME_MAPPINGS"]
+20 -16
View File
@@ -26,8 +26,8 @@ class LoraLoaderVanilla:
}
}
RETURN_TYPES = ("MODEL", "CLIP", "LIST", "LIST")
RETURN_NAMES = ("MODEL", "CLIP", "civitai_tags_list", "meta_tags_list")
RETURN_TYPES = ("MODEL", "CLIP", "LIST", "LIST", "STRING")
RETURN_NAMES = ("MODEL", "CLIP", "civitai_tags_list", "meta_tags_list", "lora_name")
FUNCTION = "load_lora"
CATEGORY = "autotrigger"
@@ -56,7 +56,7 @@ class LoraLoaderVanilla:
model_lora, clip_lora = load_lora_for_models(model, clip, lora, strength_model, strength_clip)
return (model_lora, clip_lora, civitai_tags_list, meta_tags_list)
return (model_lora, clip_lora, civitai_tags_list, meta_tags_list, lora_name)
class LoraLoaderStackedVanilla:
@classmethod
@@ -75,8 +75,8 @@ class LoraLoaderStackedVanilla:
}
}
RETURN_TYPES = ("LIST", "LIST", "LORA_STACK",)
RETURN_NAMES = ("civitai_tags_list", "meta_tags_list", "LORA_STACK",)
RETURN_TYPES = ("LIST", "LIST", "LORA_STACK", "STRING")
RETURN_NAMES = ("civitai_tags_list", "meta_tags_list", "LORA_STACK", "lora_name")
FUNCTION = "set_stack"
#OUTPUT_NODE = False
CATEGORY = "autotrigger"
@@ -96,7 +96,7 @@ class LoraLoaderStackedVanilla:
if lora_stack is not None:
loras.extend(lora_stack)
return (civitai_tags_list, meta_tags_list, loras)
return (civitai_tags_list, meta_tags_list, loras, lora_name)
class LoraLoaderAdvanced:
def __init__(self):
@@ -122,14 +122,16 @@ class LoraLoaderAdvanced:
}
}
RETURN_TYPES = ("MODEL", "CLIP", "LIST", "LIST")
RETURN_NAMES = ("MODEL", "CLIP", "civitai_tags_list", "meta_tags_list")
RETURN_TYPES = ("MODEL", "CLIP", "LIST", "LIST", "STRING")
RETURN_NAMES = ("MODEL", "CLIP", "civitai_tags_list", "meta_tags_list", "lora_name")
FUNCTION = "load_lora"
CATEGORY = "autotrigger"
def load_lora(self, model, clip, lora_name, strength_model, strength_clip, force_fetch, enable_preview, append_loraname_if_empty, override_lora_name=""):
if override_lora_name != "":
lora_name = {"content": override_lora_name, "image": ""}
has_preview, prev = get_preview_path(override_lora_name, "loras")
prev = f"loras/{prev}" if has_preview else None
lora_name = {"content": override_lora_name, "image": prev, "type": "loras"}
meta_tags_list = sort_tags_by_frequency(get_metadata(lora_name["content"], "loras"))
civitai_tags_list = load_and_save_tags(lora_name["content"], force_fetch)
@@ -160,10 +162,10 @@ class LoraLoaderAdvanced:
"subfolder": "lora_preview",
"type": "temp"
}
return {"ui": {"images": [preview_output]}, "result": (model_lora, clip_lora, civitai_tags_list, meta_tags_list)}
return {"ui": {"images": [preview_output]}, "result": (model_lora, clip_lora, civitai_tags_list, meta_tags_list, lora_name["content"])}
return (model_lora, clip_lora, civitai_tags_list, meta_tags_list)
return (model_lora, clip_lora, civitai_tags_list, meta_tags_list, lora_name["content"])
class LoraLoaderStackedAdvanced:
@classmethod
@@ -184,15 +186,17 @@ class LoraLoaderStackedAdvanced:
}
}
RETURN_TYPES = ("LIST", "LIST", "LORA_STACK",)
RETURN_NAMES = ("civitai_tags_list", "meta_tags_list", "LORA_STACK",)
RETURN_TYPES = ("LIST", "LIST", "LORA_STACK", "STRING")
RETURN_NAMES = ("civitai_tags_list", "meta_tags_list", "LORA_STACK", "lora_name")
FUNCTION = "set_stack"
#OUTPUT_NODE = False
CATEGORY = "autotrigger"
def set_stack(self, lora_name, lora_weight, force_fetch, enable_preview, append_loraname_if_empty, lora_stack=None, override_lora_name=""):
if override_lora_name != "":
lora_name = {"content": override_lora_name, "image": ""}
has_preview, prev = get_preview_path(override_lora_name, "loras")
prev = f"loras/{prev}" if has_preview else None
lora_name = {"content": override_lora_name, "image": prev, "type": "loras"}
civitai_tags_list = load_and_save_tags(lora_name["content"], force_fetch)
@@ -214,9 +218,9 @@ class LoraLoaderStackedAdvanced:
"subfolder": "lora_preview",
"type": "temp"
}
return {"ui": {"images": [preview_output]}, "result": (civitai_tags_list, meta_tags_list, loras)}
return {"ui": {"images": [preview_output]}, "result": (civitai_tags_list, meta_tags_list, loras, lora_name["content"])}
return {"result": (civitai_tags_list, meta_tags_list, loras)}
return {"result": (civitai_tags_list, meta_tags_list, loras, lora_name["content"])}
class LoraTagsOnly:
@classmethod
+4 -2
View File
@@ -31,6 +31,8 @@ def copy_preview_to_temp(file_name):
lora_less = "/".join(file_name.split("/")[1:])
file_path = folder_paths.get_full_path("loras", lora_less)
if file_path is None:
return None, None
temp_path = folder_paths.get_temp_directory()
preview_path = os.path.join(temp_path, "lora_preview")
@@ -66,7 +68,7 @@ def load_json_from_file(file_path):
return None
except json.JSONDecodeError:
print(f"Error decoding JSON in file: {file_path}")
return None
raise
def save_dict_to_json(data_dict, file_path):
try:
@@ -219,4 +221,4 @@ def append_lora_name_if_empty(tags_list, lora_path, enabled):
filename = os.path.basename(filename)
tags_list.append(filename)
return tags_list
return tags_list
+36
View File
@@ -0,0 +1,36 @@
import { app } from "../../../scripts/app.js";
import { LoraInfoDialog } from "../../ComfyUI-Custom-Scripts/js/modelInfo.js";
const infoHandlers = {
"LoraLoaderVanilla":true,
"LoraLoaderStackedVanilla":true,
"LoraLoaderAdvanced":true,
"LoraLoaderStackedAdvanced":true
}
app.registerExtension({
name: "autotrigger.LoraInfo",
beforeRegisterNodeDef(nodeType) {
if (! infoHandlers[nodeType.comfyClass]) {
return;
}
const getExtraMenuOptions = nodeType.prototype.getExtraMenuOptions;
nodeType.prototype.getExtraMenuOptions = function (_, options) {
let value = this.widgets[0].value;
if (!value) {
return;
}
if (value.content) {
value = value.content;
}
options.unshift({
content: "View info...",
callback: async () => {
new LoraInfoDialog(value).show("loras", value);
},
});
return getExtraMenuOptions?.apply(this, arguments);
};
}
});