mirror of
https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words.git
synced 2026-03-21 13:12:13 -03:00
feat: added tags only node. Added node to load lora names as string. Added the ability to override lora name from dropdown menu. + fixed bad parameters for strenght_model
This commit is contained in:
@@ -16,10 +16,13 @@ class LoraLoaderVanilla:
|
|||||||
"model": ("MODEL",),
|
"model": ("MODEL",),
|
||||||
"clip": ("CLIP", ),
|
"clip": ("CLIP", ),
|
||||||
"lora_name": (LORA_LIST, ),
|
"lora_name": (LORA_LIST, ),
|
||||||
"strength_model": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}),
|
"strength_model": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
|
||||||
"strength_clip": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}),
|
"strength_clip": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
|
||||||
"force_fetch": ("BOOLEAN", {"default": False}),
|
"force_fetch": ("BOOLEAN", {"default": False}),
|
||||||
"append_loraname_if_empty": ("BOOLEAN", {"default": False}),
|
"append_loraname_if_empty": ("BOOLEAN", {"default": False}),
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"override_lora_name":("STRING", {"forceInput": True}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +31,9 @@ class LoraLoaderVanilla:
|
|||||||
FUNCTION = "load_lora"
|
FUNCTION = "load_lora"
|
||||||
CATEGORY = "autotrigger"
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
def load_lora(self, model, clip, lora_name, strength_model, strength_clip, force_fetch, append_loraname_if_empty):
|
def load_lora(self, model, clip, lora_name, strength_model, strength_clip, force_fetch, append_loraname_if_empty, override_lora_name=""):
|
||||||
|
if override_lora_name != "":
|
||||||
|
lora_name = override_lora_name
|
||||||
meta_tags_list = sort_tags_by_frequency(get_metadata(lora_name, "loras"))
|
meta_tags_list = sort_tags_by_frequency(get_metadata(lora_name, "loras"))
|
||||||
civitai_tags_list = load_and_save_tags(lora_name, force_fetch)
|
civitai_tags_list = load_and_save_tags(lora_name, force_fetch)
|
||||||
|
|
||||||
@@ -66,6 +71,7 @@ class LoraLoaderStackedVanilla:
|
|||||||
},
|
},
|
||||||
"optional": {
|
"optional": {
|
||||||
"lora_stack": ("LORA_STACK", ),
|
"lora_stack": ("LORA_STACK", ),
|
||||||
|
"override_lora_name":("STRING", {"forceInput": True}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +81,9 @@ class LoraLoaderStackedVanilla:
|
|||||||
#OUTPUT_NODE = False
|
#OUTPUT_NODE = False
|
||||||
CATEGORY = "autotrigger"
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
def set_stack(self, lora_name, lora_weight, force_fetch, append_loraname_if_empty, lora_stack=None):
|
def set_stack(self, lora_name, lora_weight, force_fetch, append_loraname_if_empty, lora_stack=None, override_lora_name=""):
|
||||||
|
if override_lora_name != "":
|
||||||
|
lora_name = override_lora_name
|
||||||
civitai_tags_list = load_and_save_tags(lora_name, force_fetch)
|
civitai_tags_list = load_and_save_tags(lora_name, force_fetch)
|
||||||
|
|
||||||
meta_tags = get_metadata(lora_name, "loras")
|
meta_tags = get_metadata(lora_name, "loras")
|
||||||
@@ -103,11 +111,14 @@ class LoraLoaderAdvanced:
|
|||||||
"model": ("MODEL",),
|
"model": ("MODEL",),
|
||||||
"clip": ("CLIP", ),
|
"clip": ("CLIP", ),
|
||||||
"lora_name": (LORA_LIST, ),
|
"lora_name": (LORA_LIST, ),
|
||||||
"strength_model": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}),
|
"strength_model": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
|
||||||
"strength_clip": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}),
|
"strength_clip": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}),
|
||||||
"force_fetch": ("BOOLEAN", {"default": False}),
|
"force_fetch": ("BOOLEAN", {"default": False}),
|
||||||
"enable_preview": ("BOOLEAN", {"default": False}),
|
"enable_preview": ("BOOLEAN", {"default": False}),
|
||||||
"append_loraname_if_empty": ("BOOLEAN", {"default": False}),
|
"append_loraname_if_empty": ("BOOLEAN", {"default": False}),
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"override_lora_name":("STRING", {"forceInput": True}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,7 +127,10 @@ class LoraLoaderAdvanced:
|
|||||||
FUNCTION = "load_lora"
|
FUNCTION = "load_lora"
|
||||||
CATEGORY = "autotrigger"
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
def load_lora(self, model, clip, lora_name, strength_model, strength_clip, force_fetch, enable_preview, append_loraname_if_empty):
|
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": ""}
|
||||||
|
|
||||||
meta_tags_list = sort_tags_by_frequency(get_metadata(lora_name["content"], "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)
|
civitai_tags_list = load_and_save_tags(lora_name["content"], force_fetch)
|
||||||
|
|
||||||
@@ -166,6 +180,7 @@ class LoraLoaderStackedAdvanced:
|
|||||||
},
|
},
|
||||||
"optional": {
|
"optional": {
|
||||||
"lora_stack": ("LORA_STACK", ),
|
"lora_stack": ("LORA_STACK", ),
|
||||||
|
"override_lora_name":("STRING", {"forceInput": True}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +190,10 @@ class LoraLoaderStackedAdvanced:
|
|||||||
#OUTPUT_NODE = False
|
#OUTPUT_NODE = False
|
||||||
CATEGORY = "autotrigger"
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
def set_stack(self, lora_name, lora_weight, force_fetch, enable_preview, append_loraname_if_empty, lora_stack=None):
|
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": ""}
|
||||||
|
|
||||||
civitai_tags_list = load_and_save_tags(lora_name["content"], force_fetch)
|
civitai_tags_list = load_and_save_tags(lora_name["content"], force_fetch)
|
||||||
|
|
||||||
meta_tags = get_metadata(lora_name["content"], "loras")
|
meta_tags = get_metadata(lora_name["content"], "loras")
|
||||||
@@ -200,6 +218,37 @@ class LoraLoaderStackedAdvanced:
|
|||||||
|
|
||||||
return {"result": (civitai_tags_list, meta_tags_list, loras)}
|
return {"result": (civitai_tags_list, meta_tags_list, loras)}
|
||||||
|
|
||||||
|
class LoraTagsOnly:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
LORA_LIST = sorted(folder_paths.get_filename_list("loras"), key=str.lower)
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"lora_name": (LORA_LIST,),
|
||||||
|
"force_fetch": ("BOOLEAN", {"default": False}),
|
||||||
|
"append_loraname_if_empty": ("BOOLEAN", {"default": False}),
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"override_lora_name":("STRING", {"forceInput": True}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("LIST", "LIST")
|
||||||
|
RETURN_NAMES = ("civitai_tags_list", "meta_tags_list")
|
||||||
|
FUNCTION = "ask_lora"
|
||||||
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
|
def ask_lora(self, lora_name, force_fetch, append_loraname_if_empty, override_lora_name=""):
|
||||||
|
if override_lora_name != "":
|
||||||
|
lora_name = override_lora_name
|
||||||
|
meta_tags_list = sort_tags_by_frequency(get_metadata(lora_name, "loras"))
|
||||||
|
civitai_tags_list = load_and_save_tags(lora_name, force_fetch)
|
||||||
|
|
||||||
|
meta_tags_list = append_lora_name_if_empty(meta_tags_list, lora_name, append_loraname_if_empty)
|
||||||
|
civitai_tags_list = append_lora_name_if_empty(civitai_tags_list, lora_name, append_loraname_if_empty)
|
||||||
|
|
||||||
|
return (civitai_tags_list, meta_tags_list)
|
||||||
|
|
||||||
|
|
||||||
# A dictionary that contains all nodes you want to export with their names
|
# A dictionary that contains all nodes you want to export with their names
|
||||||
# NOTE: names should be globally unique
|
# NOTE: names should be globally unique
|
||||||
@@ -208,6 +257,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"LoraLoaderStackedVanilla": LoraLoaderStackedVanilla,
|
"LoraLoaderStackedVanilla": LoraLoaderStackedVanilla,
|
||||||
"LoraLoaderAdvanced": LoraLoaderAdvanced,
|
"LoraLoaderAdvanced": LoraLoaderAdvanced,
|
||||||
"LoraLoaderStackedAdvanced": LoraLoaderStackedAdvanced,
|
"LoraLoaderStackedAdvanced": LoraLoaderStackedAdvanced,
|
||||||
|
"LoraTagsOnly": LoraTagsOnly,
|
||||||
}
|
}
|
||||||
|
|
||||||
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
||||||
@@ -216,4 +266,5 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"LoraLoaderStackedVanilla": "LoraLoaderStackedVanilla",
|
"LoraLoaderStackedVanilla": "LoraLoaderStackedVanilla",
|
||||||
"LoraLoaderAdvanced": "LoraLoaderAdvanced",
|
"LoraLoaderAdvanced": "LoraLoaderAdvanced",
|
||||||
"LoraLoaderStackedAdvanced": "LoraLoaderStackedAdvanced",
|
"LoraLoaderStackedAdvanced": "LoraLoaderStackedAdvanced",
|
||||||
|
"LoraTagsOnly": "LoraTagsOnly",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from .utils import *
|
from .utils import *
|
||||||
|
|
||||||
class FusionText:
|
class FusionText:
|
||||||
@@ -20,11 +18,13 @@ class Randomizer:
|
|||||||
return {
|
return {
|
||||||
"required": {
|
"required": {
|
||||||
"text_1":("STRING", {"forceInput": True}),
|
"text_1":("STRING", {"forceInput": True}),
|
||||||
"lora_1":("LORA_STACK", ),
|
|
||||||
"text_2":("STRING", {"forceInput": True} ),
|
"text_2":("STRING", {"forceInput": True} ),
|
||||||
"lora_2":("LORA_STACK", ),
|
|
||||||
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
|
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
|
||||||
},
|
},
|
||||||
|
"optional": {
|
||||||
|
"lora_1":("LORA_STACK", ),
|
||||||
|
"lora_2":("LORA_STACK", ),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_TYPES = ("STRING", "LORA_STACK")
|
RETURN_TYPES = ("STRING", "LORA_STACK")
|
||||||
@@ -35,9 +35,8 @@ class Randomizer:
|
|||||||
|
|
||||||
CATEGORY = "autotrigger"
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
def randomize(self, text_1, lora_1, text_2, lora_2, seed):
|
def randomize(self, text_1, text_2, seed, lora_1=[], lora_2=[]):
|
||||||
random.seed(seed)
|
if seed %2 == 0:
|
||||||
if random.random() < .5:
|
|
||||||
return (text_1, lora_1)
|
return (text_1, lora_1)
|
||||||
return (text_2, lora_2)
|
return (text_2, lora_2)
|
||||||
|
|
||||||
@@ -121,6 +120,25 @@ class TagsFormater:
|
|||||||
|
|
||||||
return (output,)
|
return (output,)
|
||||||
|
|
||||||
|
class LoraListNames:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
LORA_LIST = sorted(folder_paths.get_filename_list("loras"), key=str.lower)
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"lora_name": (LORA_LIST,),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("STRING",)
|
||||||
|
RETURN_NAMES = ("lora_name",)
|
||||||
|
FUNCTION = "output_selected"
|
||||||
|
CATEGORY = "autotrigger"
|
||||||
|
|
||||||
|
def output_selected(self, lora_name):
|
||||||
|
name = lora_name
|
||||||
|
return (name,)
|
||||||
|
|
||||||
# A dictionary that contains all nodes you want to export with their names
|
# A dictionary that contains all nodes you want to export with their names
|
||||||
# NOTE: names should be globally unique
|
# NOTE: names should be globally unique
|
||||||
NODE_CLASS_MAPPINGS = {
|
NODE_CLASS_MAPPINGS = {
|
||||||
@@ -129,6 +147,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"TextInputBasic": TextInputBasic,
|
"TextInputBasic": TextInputBasic,
|
||||||
"TagsSelector": TagsSelector,
|
"TagsSelector": TagsSelector,
|
||||||
"TagsFormater": TagsFormater,
|
"TagsFormater": TagsFormater,
|
||||||
|
"LoraListNames": LoraListNames,
|
||||||
}
|
}
|
||||||
|
|
||||||
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
# A dictionary that contains the friendly/humanly readable titles for the nodes
|
||||||
@@ -138,4 +157,5 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"TextInputBasic": "TextInputBasic",
|
"TextInputBasic": "TextInputBasic",
|
||||||
"TagsSelector": "TagsSelector",
|
"TagsSelector": "TagsSelector",
|
||||||
"TagsFormater": "TagsFormater",
|
"TagsFormater": "TagsFormater",
|
||||||
|
"LoraListNames": "LoraListNames",
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user