Refactor JSON loader classes and add batch support
This commit is contained in:
@@ -14,8 +14,9 @@ def read_json_data(json_path):
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# 1. DEDICATED LORA NODE (Existing)
|
# 1. STANDARD NODES (Single File)
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
class JSONLoaderLoRA:
|
class JSONLoaderLoRA:
|
||||||
@classmethod
|
@classmethod
|
||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
@@ -41,10 +42,6 @@ class JSONLoaderLoRA:
|
|||||||
str(data.get("lora 3 low", ""))
|
str(data.get("lora 3 low", ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
# ==========================================
|
|
||||||
# 2. MAIN NODES (Existing)
|
|
||||||
# ==========================================
|
|
||||||
|
|
||||||
class JSONLoaderStandard:
|
class JSONLoaderStandard:
|
||||||
@classmethod
|
@classmethod
|
||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
@@ -135,9 +132,48 @@ class JSONLoaderVACE:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# 3. NEW BATCH NODES
|
# 3. BATCH NODES (Sequence Support)
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
|
# --- NEW: BATCH LORA ---
|
||||||
|
class JSONLoaderBatchLoRA:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"json_path": ("STRING", {"default": "", "multiline": False}),
|
||||||
|
"sequence_number": ("INT", {"default": 1, "min": 1, "max": 9999})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING")
|
||||||
|
RETURN_NAMES = (
|
||||||
|
"lora_1_high", "lora_1_low",
|
||||||
|
"lora_2_high", "lora_2_low",
|
||||||
|
"lora_3_high", "lora_3_low"
|
||||||
|
)
|
||||||
|
FUNCTION = "load_batch_loras"
|
||||||
|
CATEGORY = "utils/json"
|
||||||
|
|
||||||
|
def load_batch_loras(self, json_path, sequence_number):
|
||||||
|
data = read_json_data(json_path)
|
||||||
|
|
||||||
|
# Batch Logic
|
||||||
|
target_data = data
|
||||||
|
if "batch_data" in data and isinstance(data["batch_data"], list) and len(data["batch_data"]) > 0:
|
||||||
|
idx = sequence_number - 1
|
||||||
|
idx = idx % len(data["batch_data"])
|
||||||
|
target_data = data["batch_data"][idx]
|
||||||
|
|
||||||
|
return (
|
||||||
|
str(target_data.get("lora 1 high", "")),
|
||||||
|
str(target_data.get("lora 1 low", "")),
|
||||||
|
str(target_data.get("lora 2 high", "")),
|
||||||
|
str(target_data.get("lora 2 low", "")),
|
||||||
|
str(target_data.get("lora 3 high", "")),
|
||||||
|
str(target_data.get("lora 3 low", ""))
|
||||||
|
)
|
||||||
|
|
||||||
class JSONLoaderBatchI2V:
|
class JSONLoaderBatchI2V:
|
||||||
@classmethod
|
@classmethod
|
||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
@@ -163,13 +199,9 @@ class JSONLoaderBatchI2V:
|
|||||||
|
|
||||||
def load_batch_i2v(self, json_path, sequence_number):
|
def load_batch_i2v(self, json_path, sequence_number):
|
||||||
data = read_json_data(json_path)
|
data = read_json_data(json_path)
|
||||||
|
|
||||||
# Batch Logic: Select specific sequence
|
|
||||||
target_data = data
|
target_data = data
|
||||||
if "batch_data" in data and isinstance(data["batch_data"], list) and len(data["batch_data"]) > 0:
|
if "batch_data" in data and isinstance(data["batch_data"], list) and len(data["batch_data"]) > 0:
|
||||||
# Adjust 1-based index to 0-based
|
|
||||||
idx = sequence_number - 1
|
idx = sequence_number - 1
|
||||||
# Modulo for looping (safely handles index > length)
|
|
||||||
idx = idx % len(data["batch_data"])
|
idx = idx % len(data["batch_data"])
|
||||||
target_data = data["batch_data"][idx]
|
target_data = data["batch_data"][idx]
|
||||||
|
|
||||||
@@ -221,8 +253,6 @@ class JSONLoaderBatchVACE:
|
|||||||
|
|
||||||
def load_batch_vace(self, json_path, sequence_number):
|
def load_batch_vace(self, json_path, sequence_number):
|
||||||
data = read_json_data(json_path)
|
data = read_json_data(json_path)
|
||||||
|
|
||||||
# Batch Logic
|
|
||||||
target_data = data
|
target_data = data
|
||||||
if "batch_data" in data and isinstance(data["batch_data"], list) and len(data["batch_data"]) > 0:
|
if "batch_data" in data and isinstance(data["batch_data"], list) and len(data["batch_data"]) > 0:
|
||||||
idx = sequence_number - 1
|
idx = sequence_number - 1
|
||||||
@@ -261,6 +291,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"JSONLoaderLoRA": JSONLoaderLoRA,
|
"JSONLoaderLoRA": JSONLoaderLoRA,
|
||||||
"JSONLoaderStandard": JSONLoaderStandard,
|
"JSONLoaderStandard": JSONLoaderStandard,
|
||||||
"JSONLoaderVACE": JSONLoaderVACE,
|
"JSONLoaderVACE": JSONLoaderVACE,
|
||||||
|
"JSONLoaderBatchLoRA": JSONLoaderBatchLoRA,
|
||||||
"JSONLoaderBatchI2V": JSONLoaderBatchI2V,
|
"JSONLoaderBatchI2V": JSONLoaderBatchI2V,
|
||||||
"JSONLoaderBatchVACE": JSONLoaderBatchVACE
|
"JSONLoaderBatchVACE": JSONLoaderBatchVACE
|
||||||
}
|
}
|
||||||
@@ -269,6 +300,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"JSONLoaderLoRA": "JSON Loader (LoRAs Only)",
|
"JSONLoaderLoRA": "JSON Loader (LoRAs Only)",
|
||||||
"JSONLoaderStandard": "JSON Loader (Standard/I2V)",
|
"JSONLoaderStandard": "JSON Loader (Standard/I2V)",
|
||||||
"JSONLoaderVACE": "JSON Loader (VACE Full)",
|
"JSONLoaderVACE": "JSON Loader (VACE Full)",
|
||||||
|
"JSONLoaderBatchLoRA": "JSON Batch Loader (LoRAs)",
|
||||||
"JSONLoaderBatchI2V": "JSON Batch Loader (I2V)",
|
"JSONLoaderBatchI2V": "JSON Batch Loader (I2V)",
|
||||||
"JSONLoaderBatchVACE": "JSON Batch Loader (VACE)"
|
"JSONLoaderBatchVACE": "JSON Batch Loader (VACE)"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user