Add embedding nodes

This commit is contained in:
silveroxides
2025-11-09 06:57:23 +01:00
parent 78b3198c14
commit 0d035ef072
6 changed files with 94 additions and 15 deletions
+34 -5
View File
@@ -3,26 +3,55 @@ from .nodes import *
NODE_CLASS_MAPPINGS = {
"UNetMetaKeys": UNetMetaKeys,
"CLIPMetaKeys": CLIPMetaKeys,
"LoRAMetaKeys": LoRAMetaKeys,
"CheckpointMetaKeys": CheckpointMetaKeys,
"EmbeddingMetaKeys": EmbeddingMetaKeys,
"UNetRenameKeys": UNetRenameKeys,
"CLIPRenameKeys": CLIPRenameKeys,
"LoRARenameKeys": LoRARenameKeys,
"CheckpointRenameKeys": CheckpointRenameKeys,
"EmbeddingRenameKeys": EmbeddingRenameKeys,
"UNetPruneKeys": UNetPruneKeys,
"CLIPPruneKeys": CLIPPruneKeys,
"LoRAPruneKeys": LoRAPruneKeys,
"CheckpointPruneKeys": CheckpointPruneKeys,
"CheckpointTwoMerger": CheckpointTwoMerger,
"EmbeddingPruneKeys": EmbeddingPruneKeys,
"UNetTwoMerger": UNetTwoMerger,
"CLIPTwoMerger": CLIPTwoMerger,
"LoRATwoMerger": LoRATwoMerger,
"CheckpointThreeMerger": CheckpointThreeMerger,
"CheckpointTwoMerger": CheckpointTwoMerger,
"EmbeddingTwoMerger": EmbeddingTwoMerger,
"UNetThreeMerger": UNetThreeMerger,
"CLIPThreeMerger": CLIPThreeMerger,
"LoRAThreeMerger": LoRAThreeMerger,
"CheckpointThreeMerger": CheckpointThreeMerger,
"EmbeddingThreeMerger": EmbeddingThreeMerger,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"UNetMetaKeys": "Get UNet Meta Keys",
"UNetMetaKeys": "Get UNet Metadata & Keys",
"CLIPMetaKeys": "Get CLIP Metadata & Keys",
"LoRAMetaKeys": "Get LoRA Metadata & Keys",
"CheckpointMetaKeys": "Get Checkpoint Metadata & Keys",
"EmbeddingMetaKeys": "Get Embedding Metadata & Keys",
"UNetRenameKeys": "UNetRenameKeys",
"CLIPRenameKeys": "CLIPRenameKeys",
"LoRARenameKeys": "LoRARenameKeys",
"CheckpointRenameKeys": "CheckpointRenameKeys",
"EmbeddingRenameKeys": "EmbeddingRenameKeys",
"UNetPruneKeys": "UNetPruneKeys",
"CLIPPruneKeys": "CLIPPruneKeys",
"LoRAPruneKeys": "LoRAPruneKeys",
"CheckpointPruneKeys": "Prune Checkpoint Keys",
"CheckpointTwoMerger": "Merge Checkpoints (2 Models)",
"EmbeddingPruneKeys": "Prune Embedding Keys",
"UNetTwoMerger": "Merge UNets (2 Models)",
"CLIPTwoMerger": "Merge CLIPs (2 Models)",
"LoRATwoMerger": "Merge LoRAs (2 Models)",
"CheckpointThreeMerger": "Merge Checkpoints (3 Models)",
"CheckpointTwoMerger": "Merge Checkpoints (2 Models)",
"EmbeddingTwoMerger": "Merge Embeddings (2 Models)",
"UNetThreeMerger": "Merge UNets (3 Models)",
"CLIPThreeMerger": "Merge CLIPs (3 Models)",
"LoRAThreeMerger": "Merge LoRAs (3 Models)",
"CheckpointThreeMerger": "Merge Checkpoints (3 Models)",
"EmbeddingThreeMerger": "Merge Embeddings (3 Models)",
}
+5 -5
View File
@@ -4,9 +4,9 @@ from .prunekeys import *
from .merger import *
__all__ = [
"UNetMetaKeys", "CLIPMetaKeys", "LoRAMetaKeys", "CheckpointMetaKeys",
"UNetRenameKeys", "CLIPRenameKeys", "LoRARenameKeys", "CheckpointRenameKeys",
"UNetPruneKeys", "CLIPPruneKeys", "LoRAPruneKeys", "CheckpointPruneKeys",
"CheckpointTwoMerger", "UNetTwoMerger", "CLIPTwoMerger", "LoRATwoMerger",
"CheckpointThreeMerger", "UNetThreeMerger", "CLIPThreeMerger", "LoRAThreeMerger",
"UNetMetaKeys", "CLIPMetaKeys", "LoRAMetaKeys", "CheckpointMetaKeys", "EmbeddingMetaKeys",
"UNetRenameKeys", "CLIPRenameKeys", "LoRARenameKeys", "CheckpointRenameKeys", "EmbeddingRenameKeys",
"UNetPruneKeys", "CLIPPruneKeys", "LoRAPruneKeys", "CheckpointPruneKeys", "EmbeddingPruneKeys",
"CheckpointTwoMerger", "UNetTwoMerger", "CLIPTwoMerger", "LoRATwoMerger", "EmbeddingTwoMerger",
"CheckpointThreeMerger", "UNetThreeMerger", "CLIPThreeMerger", "LoRAThreeMerger", "EmbeddingThreeMerger",
]
+10 -2
View File
@@ -140,6 +140,10 @@ class LoRATwoMerger(BaseTwoMerger):
MODEL_TYPE = "loras"
@classmethod
def INPUT_TYPES(s): return _create_two_model_inputs(s.MODEL_TYPE)
class EmbeddingTwoMerger(BaseTwoMerger):
MODEL_TYPE = "embeddings"
@classmethod
def INPUT_TYPES(s): return _create_two_model_inputs(s.MODEL_TYPE)
# --- Concrete 3-Model Nodes ---
class CheckpointThreeMerger(BaseThreeMerger):
@@ -158,8 +162,12 @@ class LoRAThreeMerger(BaseThreeMerger):
MODEL_TYPE = "loras"
@classmethod
def INPUT_TYPES(s): return _create_three_model_inputs(s.MODEL_TYPE)
class EmbeddingThreeMerger(BaseThreeMerger):
MODEL_TYPE = "embeddings"
@classmethod
def INPUT_TYPES(s): return _create_three_model_inputs(s.MODEL_TYPE)
__all__ = [
"CheckpointTwoMerger", "UNetTwoMerger", "CLIPTwoMerger", "LoRATwoMerger",
"CheckpointThreeMerger", "UNetThreeMerger", "CLIPThreeMerger", "LoRAThreeMerger"
"CheckpointTwoMerger", "UNetTwoMerger", "CLIPTwoMerger", "LoRATwoMerger", "EmbeddingTwoMerger",
"CheckpointThreeMerger", "UNetThreeMerger", "CLIPThreeMerger", "LoRAThreeMerger", "EmbeddingThreeMerger"
]
+13 -1
View File
@@ -83,4 +83,16 @@ class CheckpointMetaKeys(BaseMetaKeys):
def get_metakeys(self, ckpt_name):
return self._get_metakeys(ckpt_name, "checkpoints")
__all__ = ("UNetMetaKeys", "CLIPMetaKeys", "LoRAMetaKeys", "CheckpointMetaKeys")
class EmbeddingMetaKeys(BaseMetaKeys):
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"embedding": (folder_paths.get_filename_list("embeddings"), ),
}
}
def get_metakeys(self, embedding):
return self._get_metakeys(embedding, "embeddings")
__all__ = ("UNetMetaKeys", "CLIPMetaKeys", "LoRAMetaKeys", "CheckpointMetaKeys", "EmbeddingMetaKeys")
+16 -1
View File
@@ -109,4 +109,19 @@ class CheckpointPruneKeys(BasePruneKeys):
}
def prune_keys(self, ckpt_name, keys_to_prune, use_regex, output_filename):
return self._prune_keys(ckpt_name, "checkpoints", keys_to_prune, use_regex, output_filename)
return self._prune_keys(ckpt_name, "checkpoints", keys_to_prune, use_regex, output_filename)
class EmbeddingPruneKeys(BasePruneKeys):
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"embedding": (folder_paths.get_filename_list("embeddings"), ),
"keys_to_prune": ("STRING", {"multiline": True, "default": ""}),
"use_regex": ("BOOLEAN", {"default": False}),
"output_filename": ("STRING", {"default": "pruned_embedding"}),
}
}
def prune_keys(self, embedding, keys_to_prune, use_regex, output_filename):
return self._prune_keys(embedding, "embeddings", keys_to_prune, use_regex, output_filename)
+16 -1
View File
@@ -104,4 +104,19 @@ class CheckpointRenameKeys(BaseRenameKeys):
}
def rename_keys(self, ckpt_name, old_keys, new_keys, output_filename):
return self._rename_keys(ckpt_name, "checkpoints", old_keys, new_keys, output_filename)
return self._rename_keys(ckpt_name, "checkpoints", old_keys, new_keys, output_filename)
class EmbeddingRenameKeys(BaseRenameKeys):
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"embedding": (folder_paths.get_filename_list("embeddings"), ),
"old_keys": ("STRING", {"multiline": True, "default": ""}),
"new_keys": ("STRING", {"multiline": True, "default": ""}),
"output_filename": ("STRING", {"default": "renamed_embedding"}),
}
}
def rename_keys(self, embedding, old_keys, new_keys, output_filename):
return self._rename_keys(embedding, "embeddings", old_keys, new_keys, output_filename)