# combined_diffusers_loader.py from .utils import DiffusersUtils from .unet_loader import DiffusersUNETLoader from .clip_loader import DiffusersClipLoader from .vae_loader import DiffusersVAELoader from .base_loader import DiffusersLoaderBase import os class CombinedDiffusersLoader: @classmethod def INPUT_TYPES(cls): base_path = DiffusersUtils.get_base_path() model_directories = DiffusersUtils.get_model_directories(base_path) return { "required": { "sub_directory": (model_directories,), "clip_type": (["stable_diffusion", "stable_cascade", "sd3", "stable_audio", "sdxl", "flux"],), "transformer_parts": (["all", "part_1", "part_2", "part_3"],), "vae_type": (["default", "taesd", "taesdxl", "taesd3", "taef1"],), "weight_dtype": (["default", "fp8_e4m3fn", "fp8_e5m2"],) } } RETURN_TYPES = ("MODEL", "CLIP", "VAE") FUNCTION = "load_models" CATEGORY = "DiffusersLoader/Combined" @classmethod def load_models(cls, sub_directory, clip_type="stable_diffusion", transformer_parts="all", vae_type="default", weight_dtype="default"): base_path = DiffusersUtils.get_base_path() sub_dir_path = os.path.join(base_path, sub_directory) model_type = DiffusersLoaderBase.detect_model_type(sub_dir_path) print(f"Detected model type: {model_type}") unet_model = DiffusersUNETLoader.load_model(sub_directory, transformer_parts, weight_dtype) clip_model = DiffusersClipLoader.load_model(sub_directory, clip_type) vae_model = DiffusersVAELoader.load_model(sub_directory, vae_type) return unet_model, clip_model, vae_model # Ensure the node is registered properly NODE_CLASS_MAPPINGS = {"CombinedDiffusersLoader": CombinedDiffusersLoader} NODE_DISPLAY_NAME_MAPPINGS = {"CombinedDiffusersLoader": "Combined Diffusers Loader"}