Update utils.py
This commit is contained in:
56
utils.py
56
utils.py
@@ -2,7 +2,6 @@ import json
|
||||
import time
|
||||
from pathlib import Path
|
||||
import streamlit as st
|
||||
import requests # <--- NEW DEPENDENCY
|
||||
|
||||
# Default structure for new files
|
||||
DEFAULTS = {
|
||||
@@ -105,58 +104,3 @@ def generate_templates(current_dir):
|
||||
|
||||
batch_data = {"batch_data": [DEFAULTS.copy(), DEFAULTS.copy()]}
|
||||
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