| import os |
| import comfy.sd |
| from nodes import * |
| import folder_paths |
| import random |
| if __name__ == os.path.splitext(os.path.basename(__file__))[0] : |
| from ConsoleColor import print, console |
| from mypath import * |
| else: |
| from .ConsoleColor import print, console |
| from .mypath import * |
|
|
| class LoraLoaderTextRandom: |
| @classmethod |
| def INPUT_TYPES(s): |
| return { |
| "required": { |
| "model": ("MODEL",), |
| "clip": ("CLIP", ), |
| "lora_name": ("STRING", { |
| "multiline": False, |
| "default": (folder_paths.get_filename_list("loras"), ) |
| }), |
| "seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}), |
| |
| "strength_model_min": ("FLOAT", {"default": 0.50, "min": 0.0, "max": 10.0, "step": 0.01}), |
| "strength_model_max": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}), |
| "strength_clip_min": ("FLOAT", {"default": 0.50, "min": 0.0, "max": 10.0, "step": 0.01}), |
| "strength_clip_max": ("FLOAT", {"default": 1.50, "min": 0.0, "max": 10.0, "step": 0.01}), |
| } |
| } |
| RETURN_TYPES = ("MODEL", "CLIP") |
| FUNCTION = "load_lora" |
|
|
| CATEGORY = "loaders" |
|
|
| def load_lora(self, |
| model, |
| clip, |
| lora_name, |
| seed, |
| strength_model_min, |
| strength_model_max, |
| strength_clip_min, |
| strength_clip_max |
| ): |
| |
| strength_model=random.uniform(min(strength_model_min,strength_model_max),max(strength_model_min,strength_model_max)) |
| strength_clip=random.uniform(min(strength_clip_min,strength_clip_max),max(strength_clip_min,strength_clip_max)) |
|
|
| print(f"[{ccolor}]lora_name : [/{ccolor}]", lora_name) |
| if strength_model == 0 and strength_clip == 0: |
| print("[red]strength_model,strength_clip 0[/red] : ", lora_name) |
| return (model, clip) |
| |
| if lora_name is None or lora_name =="" : |
| print("[red]No lora_name[/red] : ", lora_name) |
| return (model, clip) |
| |
| lora_path = folder_paths.get_full_path("loras", lora_name) |
| if lora_path is None: |
| |
| lora_path=getFullPath(lora_name,"loras") |
| if lora_path is None: |
| print("[red]No lora_path of lora_name [/red] : ", lora_name) |
| return (model, clip) |
| |
| lora = None |
| if self.loaded_lora is not None: |
| if self.loaded_lora[0] == lora_path: |
| lora = self.loaded_lora[1] |
| else: |
| del self.loaded_lora |
|
|
| if lora is None: |
| lora = comfy.utils.load_torch_file(lora_path, safe_load=True) |
| self.loaded_lora = (lora_path, lora) |
| |
| |
| |
| try: |
| model_lora, clip_lora = comfy.sd.load_lora_for_models(model, clip, lora_path, strength_model, strength_clip) |
| return (model_lora, clip_lora) |
| except Exception as e: |
| console.print_exception() |
| return (model, clip) |
|
|
| |
| |
| |