Update utils.py
This commit is contained in:
56
utils.py
56
utils.py
@@ -2,7 +2,6 @@ import json
|
|||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
import requests # <--- NEW DEPENDENCY
|
|
||||||
|
|
||||||
# Default structure for new files
|
# Default structure for new files
|
||||||
DEFAULTS = {
|
DEFAULTS = {
|
||||||
@@ -105,58 +104,3 @@ def generate_templates(current_dir):
|
|||||||
|
|
||||||
batch_data = {"batch_data": [DEFAULTS.copy(), DEFAULTS.copy()]}
|
batch_data = {"batch_data": [DEFAULTS.copy(), DEFAULTS.copy()]}
|
||||||
save_json(current_dir / "template_batch.json", batch_data)
|
save_json(current_dir / "template_batch.json", batch_data)
|
||||||
|
|
||||||
# --- NEW: COMFY METADATA FETCHER ---
|
|
||||||
def fetch_comfy_metadata(base_url):
|
|
||||||
"""Queries ComfyUI for available Models, VAEs, and LoRAs."""
|
|
||||||
url = base_url.rstrip("/")
|
|
||||||
meta = {"checkpoints": [], "loras": [], "vaes": []}
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Get Node Info to find input lists
|
|
||||||
res = requests.get(f"{url}/object_info", timeout=2)
|
|
||||||
if res.status_code == 200:
|
|
||||||
data = res.json()
|
|
||||||
|
|
||||||
# Checkpoints
|
|
||||||
if "CheckpointLoaderSimple" in data:
|
|
||||||
meta["checkpoints"] = data["CheckpointLoaderSimple"]["input"]["required"]["ckpt_name"][0]
|
|
||||||
|
|
||||||
# LoRAs
|
|
||||||
if "LoraLoader" in data:
|
|
||||||
meta["loras"] = data["LoraLoader"]["input"]["required"]["lora_name"][0]
|
|
||||||
|
|
||||||
# VAEs
|
|
||||||
if "VAELoader" in data:
|
|
||||||
meta["vaes"] = data["VAELoader"]["input"]["required"]["vae_name"][0]
|
|
||||||
|
|
||||||
return meta
|
|
||||||
except Exception:
|
|
||||||
# Fail silently so the app still works offline
|
|
||||||
return meta
|
|
||||||
|
|
||||||
# --- NEW: SMART INPUT WIDGET ---
|
|
||||||
def render_smart_input(label, key, value, options, help_text=None):
|
|
||||||
"""
|
|
||||||
Renders a Selectbox if options are available, otherwise a Text Input.
|
|
||||||
Handles the case where the current 'value' might not be in the 'options' list.
|
|
||||||
"""
|
|
||||||
if options and len(options) > 0:
|
|
||||||
# If current value is not in the list (e.g. new file added), add it temporarily
|
|
||||||
safe_options = options.copy()
|
|
||||||
if value and value not in safe_options:
|
|
||||||
safe_options.insert(0, value)
|
|
||||||
elif not value and safe_options:
|
|
||||||
# Default to first if empty
|
|
||||||
value = safe_options[0]
|
|
||||||
|
|
||||||
# Try to find index
|
|
||||||
try:
|
|
||||||
idx = safe_options.index(value)
|
|
||||||
except ValueError:
|
|
||||||
idx = 0
|
|
||||||
|
|
||||||
return st.selectbox(label, safe_options, index=idx, key=key, help=help_text)
|
|
||||||
else:
|
|
||||||
# Fallback to text input if Comfy is offline or list empty
|
|
||||||
return st.text_input(label, value=value, key=key, help=help_text)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user