Files
mang01010-MangoNodePack/MangoModelData.py
T
2025-10-03 17:00:54 +02:00

59 lines
2.1 KiB
Python

import os
import json
class MangoModelData:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
# Checkpoint name passed from KSamplerMango (may include subfolder)
"ckpt_name": ("STRING", {"tooltip": "Checkpoint name"}),
}
}
RETURN_TYPES = ("STRING",)
FUNCTION = "export_model_data"
CATEGORY = "Mango Node Pack/Metadata"
def export_model_data(self, ckpt_name):
# Determine path to JSON file containing manual model usage tips
data_path = os.path.join(os.path.dirname(__file__), 'model_data.json')
# Check for existence
if not os.path.isfile(data_path):
return (f"[ModelData] ERROR: file not found: {data_path}",)
# Load JSON
try:
with open(data_path, 'r', encoding='utf-8') as f:
db = json.load(f)
except Exception as e:
return (f"[ModelData] ERROR: failed to load JSON ({type(e).__name__}): {e}",)
# Validate JSON structure
if not isinstance(db, dict) or not db:
return ("[ModelData] ERROR: model_data.json is empty or not a JSON object",)
# Extract the filename portion
base_name = os.path.basename(ckpt_name)
# Lookup strategy: full key, basename, then case-insensitive basename
model_entry = db.get(ckpt_name)
if model_entry is None:
model_entry = db.get(base_name)
if model_entry is None:
lower_base = base_name.lower()
for key, val in db.items():
if os.path.basename(key).lower() == lower_base:
model_entry = val
break
# If still not found, list available keys in the error
if model_entry is None:
available = ", ".join(db.keys())
return (f"[ModelData] no entry for '{base_name}'. Available keys: {available}",)
# Format and return the JSON snippet using the base filename
snippet = json.dumps({base_name: model_entry}, indent=2)
return (snippet,)