100 lines
4.2 KiB
Python
100 lines
4.2 KiB
Python
import re
|
|
from .src.dynamic_lora_loader import generate_lora_node_class
|
|
from .src.sn0w import ConfigReader, Logger
|
|
|
|
from .src.find_resolution import FindResolutionNode
|
|
from .src.lora_selector import LoraSelectorNode
|
|
from .src.lora_tester_xl import LoraTestXLNode
|
|
from .src.lora_tester import LoraTestNode
|
|
from .src.character_select import CharacterSelectNode
|
|
from .src.prompt_combine import CombineStringNode
|
|
from .src.simple_sampler_xl import SimpleSamplerXlNode
|
|
from .src.simple_sampler import SimpleSamplerNode
|
|
from .src.lora_stacker import LoraStackerNode
|
|
from .src.load_lora_xl import LoraLoraXLNode
|
|
from .src.load_lora_15 import LoraLora15Node
|
|
from .src.load_lora_character import LoadLoraCharacterNode
|
|
from .src.get_font_size import GetFontSizeNode
|
|
from .src.get_all_styles import GetStylesNode
|
|
from .src.prompt_selector import PromptSelectNode
|
|
from .src.load_lora_concept import LoadLoraConceptNode
|
|
from .src.perlin_noise import FilmGrain
|
|
from .src.upscale_with_model_by import UpscaleImageBy
|
|
from .src.custom_hires import CustomHires
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"Find SDXL Resolution": FindResolutionNode,
|
|
"Lora Selector": LoraSelectorNode,
|
|
"Lora Tester XL": LoraTestXLNode,
|
|
"Lora Tester": LoraTestNode,
|
|
"Character Selector": CharacterSelectNode,
|
|
"Prompt Combine": CombineStringNode,
|
|
"Simple Sampler XL": SimpleSamplerXlNode,
|
|
"Simple Sampler": SimpleSamplerNode,
|
|
"Lora Stacker": LoraStackerNode,
|
|
"Load Lora XL": LoraLoraXLNode,
|
|
"Load Lora 1.5": LoraLora15Node,
|
|
"Load Lora Character": LoadLoraCharacterNode,
|
|
"Get Font Size": GetFontSizeNode,
|
|
"Get All Styles": GetStylesNode,
|
|
"Prompt Selector": PromptSelectNode,
|
|
"Load Lora Concept": LoadLoraConceptNode,
|
|
"Colored Film Grain": FilmGrain,
|
|
"Upscale Image With Model By": UpscaleImageBy,
|
|
"Sn0w Custom Hires": CustomHires,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"Find SDXL Resolution": "Find SDXL Resolution",
|
|
"Lora Selector": "Lora Selector",
|
|
"Lora Tester XL": "Lora Tester XL",
|
|
"Lora Tester": "Lora Tester",
|
|
"Character Selector": "Character Selector",
|
|
"Prompt Combine": "Prompt Combine",
|
|
"Simple Sampler XL": "Simple Sampler XL",
|
|
"Simple Sampler": "Simple Sampler",
|
|
"Lora Stacker": "Lora Stacker",
|
|
"Load Lora XL": "Load Lora XL",
|
|
"Load Lora 1.5": "Load Lora 1.5",
|
|
"Load Lora Character": "Load Lora Character",
|
|
"Get Font Size": "Get Font Size",
|
|
"Get All Styles": "Get All Styles",
|
|
"Prompt Selector": "Prompt Selector",
|
|
"Load Lora Concept": "Load Lora Concept",
|
|
"Colored Film Grain": "Colored Film Grain",
|
|
"Upscale Image With Model By": "Upscale Image With Model By",
|
|
"Sn0w Custom Hires": "Sn0w Custom Hires",
|
|
}
|
|
|
|
current_unique_id = 0 # Global variable to track the unique ID
|
|
logger = Logger()
|
|
|
|
def parse_custom_lora_loaders(custom_lora_loaders):
|
|
required_folders_with_names = []
|
|
for name, folders_str in custom_lora_loaders.items():
|
|
# Treat every value as a comma-separated list
|
|
folders = [folder.strip() for folder in folders_str.split(',')]
|
|
required_folders_with_names.append((name, folders))
|
|
return required_folders_with_names
|
|
|
|
|
|
def generate_and_register_lora_node(lora_type, setting):
|
|
global current_unique_id # Use the global variable to keep track of IDs
|
|
|
|
custom_lora_loaders = ConfigReader.get_setting(setting, None)
|
|
if custom_lora_loaders is not None:
|
|
required_folders_with_names = parse_custom_lora_loaders(custom_lora_loaders)
|
|
|
|
for name, folders in required_folders_with_names:
|
|
current_unique_id += 1 # Increment the unique ID for each new class
|
|
unique_id_with_name = str(f"{name}_{current_unique_id}")
|
|
|
|
logger.log(f"Adding custom lora loader: {folders}, {unique_id_with_name}", "ALL")
|
|
DynamicLoraNode = generate_lora_node_class(lora_type, folders)
|
|
|
|
# Update NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS for each generated class
|
|
NODE_CLASS_MAPPINGS[unique_id_with_name] = DynamicLoraNode
|
|
NODE_DISPLAY_NAME_MAPPINGS[unique_id_with_name] = f"{name}"
|
|
|
|
generate_and_register_lora_node("loras_xl", "custom_lora_loaders_xl")
|
|
generate_and_register_lora_node("loras_15", "custom_lora_loaders") |