Files
Setmaster-ComfyUI-ModelPulse/py/model_types.py
T
Setmaster fb28135b82 Add file size display for models
- Show model file sizes (GB/MB) in the sidebar next to last used time
- Use ComfyUI's folder_paths for reliable model path resolution
- Support all configured model locations including extra_model_paths
- Handle GGUF models that can be in unet or clip folders
- Update README with new features
2026-01-15 12:27:04 -05:00

119 lines
3.4 KiB
Python

"""
ModelPulse - Model Type Definitions
Maps ComfyUI loader node types to their model categories and input keys.
"""
# Standard ComfyUI model loaders
# Format: "NodeClassName": ("category", "input_key" or ["input_key1", "input_key2"])
MODEL_LOADERS: dict[str, tuple[str, str | list[str]]] = {
# Checkpoint loaders
"CheckpointLoaderSimple": ("checkpoint", "ckpt_name"),
"CheckpointLoader": ("checkpoint", "ckpt_name"),
# LoRA loaders
"LoraLoader": ("lora", "lora_name"),
"LoraLoaderModelOnly": ("lora", "lora_name"),
# VAE loaders
"VAELoader": ("vae", "vae_name"),
# ControlNet loaders
"ControlNetLoader": ("controlnet", "control_net_name"),
# CLIP loaders
"CLIPLoader": ("clip", "clip_name"),
"DualCLIPLoader": ("clip", ["clip_name1", "clip_name2"]),
# UNET loaders
"UNETLoader": ("unet", "unet_name"),
# Upscaler loaders
"UpscaleModelLoader": ("upscaler", "model_name"),
# Style model loaders
"StyleModelLoader": ("style_model", "style_model_name"),
# GLIGEN loaders
"GLIGENLoader": ("gligen", "gligen_name"),
# GGUF loaders (ComfyUI-GGUF by city96)
"UnetLoaderGGUF": ("gguf", "unet_name"),
"UnetLoaderGGUFAdvanced": ("gguf", "unet_name"),
"CLIPLoaderGGUF": ("gguf", "clip_name"),
"DualCLIPLoaderGGUF": ("gguf", ["clip_name1", "clip_name2"]),
"TripleCLIPLoaderGGUF": ("gguf", ["clip_name1", "clip_name2", "clip_name3"]),
"QuadrupleCLIPLoaderGGUF": ("gguf", ["clip_name1", "clip_name2", "clip_name3", "clip_name4"]),
}
# Patterns for detecting custom node loaders (Impact Pack, Efficiency Nodes, etc.)
# These are checked if the node class name isn't in MODEL_LOADERS
LOADER_PATTERNS: list[tuple[str, str, list[str]]] = [
# (pattern_in_class_name, category, possible_input_keys)
("Checkpoint", "checkpoint", ["ckpt_name", "checkpoint", "model_name"]),
("Lora", "lora", ["lora_name", "lora"]),
("VAE", "vae", ["vae_name", "vae"]),
("ControlNet", "controlnet", ["control_net_name", "controlnet", "control_net"]),
("CLIP", "clip", ["clip_name", "clip"]),
("UNET", "unet", ["unet_name", "unet"]),
("Upscale", "upscaler", ["model_name", "upscale_model"]),
]
# Model categories for display purposes
MODEL_CATEGORIES: dict[str, dict[str, str]] = {
"checkpoint": {
"name": "Checkpoints",
"icon": "pi-box",
},
"lora": {
"name": "LoRAs",
"icon": "pi-sparkles",
},
"vae": {
"name": "VAEs",
"icon": "pi-cog",
},
"controlnet": {
"name": "ControlNets",
"icon": "pi-sitemap",
},
"clip": {
"name": "CLIP Models",
"icon": "pi-comments",
},
"unet": {
"name": "UNETs",
"icon": "pi-server",
},
"upscaler": {
"name": "Upscalers",
"icon": "pi-expand",
},
"style_model": {
"name": "Style Models",
"icon": "pi-palette",
},
"gligen": {
"name": "GLIGEN",
"icon": "pi-th-large",
},
"gguf": {
"name": "GGUF",
"icon": "pi-database",
},
}
# Map categories to ComfyUI model folder names
CATEGORY_FOLDERS: dict[str, str] = {
"checkpoint": "checkpoints",
"lora": "loras",
"vae": "vae",
"controlnet": "controlnet",
"clip": "clip",
"unet": "unet",
"upscaler": "upscale_models",
"style_model": "style_models",
"gligen": "gligen",
"gguf": "unet", # GGUF models are stored in unet folder
}