Files
nkchocoai-ComfyUI-SaveImage…/py/defs/ext/efficiency_nodes.py
T

108 lines
4.0 KiB
Python

# https://github.com/jags111/efficiency-nodes-comfyui
from ..meta import MetaField
from ..formatters import calc_model_hash, calc_lora_hash, convert_skip_clip
def get_lora_model_name_stack(node_id, obj, prompt, extra_data, outputs, input_data):
return get_lora_data_stack(input_data, "lora_name")
def get_lora_model_hash_stack(node_id, obj, prompt, extra_data, outputs, input_data):
return [
calc_lora_hash(model_name, input_data)
for model_name in get_lora_data_stack(input_data, "lora_name")
]
def get_lora_strength_model_stack(
node_id, obj, prompt, extra_data, outputs, input_data
):
if input_data[0]["input_mode"][0] == "advanced":
return get_lora_data_stack(input_data, "model_str")
return get_lora_data_stack(input_data, "lora_wt")
def get_lora_strength_clip_stack(node_id, obj, prompt, extra_data, outputs, input_data):
if input_data[0]["input_mode"][0] == "advanced":
return get_lora_data_stack(input_data, "clip_str")
return get_lora_data_stack(input_data, "lora_wt")
def get_lora_data_stack(input_data, attribute):
lora_count = input_data[0]["lora_count"][0]
return [
v[0]
for k, v in input_data[0].items()
if k.startswith(attribute) and v[0] != "None"
][:lora_count]
SAMPLERS = {
"KSampler (Efficient)": {
"positive": "positive",
"negative": "negative",
},
"KSampler Adv. (Efficient)": {
"positive": "positive",
"negative": "negative",
},
"KSampler SDXL (Eff.)": {
"positive": "positive",
"negative": "negative",
},
}
CAPTURE_FIELD_LIST = {
"Efficient Loader": {
MetaField.MODEL_NAME: {"field_name": "ckpt_name"},
MetaField.MODEL_HASH: {"field_name": "ckpt_name", "format": calc_model_hash},
MetaField.CLIP_SKIP: {"field_name": "clip_skip", "format": convert_skip_clip},
MetaField.POSITIVE_PROMPT: {"field_name": "positive"},
MetaField.NEGATIVE_PROMPT: {"field_name": "negative"},
MetaField.IMAGE_WIDTH: {"field_name": "empty_latent_width"},
MetaField.IMAGE_HEIGHT: {"field_name": "empty_latent_height"},
},
"Eff. Loader SDXL": {
MetaField.MODEL_NAME: {"field_name": "base_ckpt_name"},
MetaField.MODEL_HASH: {
"field_name": "base_ckpt_name",
"format": calc_model_hash,
},
MetaField.CLIP_SKIP: {
"field_name": "base_clip_skip",
"format": convert_skip_clip,
},
MetaField.POSITIVE_PROMPT: {"field_name": "positive"},
MetaField.NEGATIVE_PROMPT: {"field_name": "negative"},
MetaField.IMAGE_WIDTH: {"field_name": "empty_latent_width"},
MetaField.IMAGE_HEIGHT: {"field_name": "empty_latent_height"},
},
"KSampler (Efficient)": {
MetaField.SEED: {"field_name": "seed"},
MetaField.STEPS: {"field_name": "steps"},
MetaField.CFG: {"field_name": "cfg"},
MetaField.SAMPLER_NAME: {"field_name": "sampler_name"},
MetaField.SCHEDULER: {"field_name": "scheduler"},
},
"KSampler Adv. (Efficient)": {
MetaField.SEED: {"field_name": "noise_seed"},
MetaField.STEPS: {"field_name": "steps"},
MetaField.CFG: {"field_name": "cfg"},
MetaField.SAMPLER_NAME: {"field_name": "sampler_name"},
MetaField.SCHEDULER: {"field_name": "scheduler"},
},
"KSampler SDXL (Eff.)": {
MetaField.SEED: {"field_name": "noise_seed"},
MetaField.STEPS: {"field_name": "steps"},
MetaField.CFG: {"field_name": "cfg"},
MetaField.SAMPLER_NAME: {"field_name": "sampler_name"},
MetaField.SCHEDULER: {"field_name": "scheduler"},
},
"LoRA Stacker": {
MetaField.LORA_MODEL_NAME: {"selector": get_lora_model_name_stack},
MetaField.LORA_MODEL_HASH: {"selector": get_lora_model_hash_stack},
MetaField.LORA_STRENGTH_MODEL: {"selector": get_lora_strength_model_stack},
MetaField.LORA_STRENGTH_CLIP: {"selector": get_lora_strength_clip_stack},
},
}