Download SwarmLoraLoader.py from Goodis/SwarmComfyCommon: direct link, hf CLI and curl.
- Browser
- Download file 2.18 kB
-
https://huggingface.co/Goodis/SwarmComfyCommon/resolve/main/SwarmLoraLoader.py
- Command line
-
hf download hf://Goodis/SwarmComfyCommon/SwarmLoraLoader.py
-
curl -L -o SwarmLoraLoader.py https://huggingface.co/Goodis/SwarmComfyCommon/resolve/main/SwarmLoraLoader.py
2.18 kB
| import comfy | |
| import folder_paths | |
| class SwarmLoraLoader: | |
| def __init__(self): | |
| self.loaded_lora = None | |
| def INPUT_TYPES(s): | |
| return { | |
| "required": { | |
| "model": ("MODEL", ), | |
| "clip": ("CLIP", ), | |
| "lora_names": ("STRING", {"multiline": True, "tooltip": "Comma separated list of lora names to load."}), | |
| "lora_weights": ("STRING", {"multiline": True, "tooltip": "Comma separated list of lora weights to apply to each lora. Must match the number of loras."}), | |
| } | |
| } | |
| CATEGORY = "SwarmUI/models" | |
| RETURN_TYPES = ("MODEL", "CLIP") | |
| FUNCTION = "load_loras" | |
| DESCRIPTION = "Like a regular LoRA Loader, but designed to take a dynamic list of loras and weights, to allow easier integration with SwarmUI custom workflows." | |
| def load_loras(self, model, clip, lora_names, lora_weights): | |
| if lora_names.strip() == "": | |
| return (model, clip) | |
| lora_names = lora_names.split(",") | |
| lora_weights = lora_weights.split(",") | |
| lora_weights = [float(x.strip()) for x in lora_weights] | |
| for i in range(len(lora_names)): | |
| lora_name = lora_names[i].strip() | |
| weight = lora_weights[i] | |
| if weight == 0: | |
| continue | |
| # This section copied directly from default comfy LoraLoader | |
| lora_path = folder_paths.get_full_path("loras", lora_name) | |
| lora = None | |
| if self.loaded_lora is not None: | |
| if self.loaded_lora[0] == lora_path: | |
| lora = self.loaded_lora[1] | |
| else: | |
| temp = self.loaded_lora | |
| self.loaded_lora = None | |
| del temp | |
| if lora is None: | |
| lora = comfy.utils.load_torch_file(lora_path, safe_load=True) | |
| self.loaded_lora = (lora_path, lora) | |
| model, clip = comfy.sd.load_lora_for_models(model, clip, lora, weight, weight) | |
| return (model, clip) | |
| NODE_CLASS_MAPPINGS = { | |
| "SwarmLoraLoader": SwarmLoraLoader, | |
| } | |