Files
MoonGoblinDev-Civicomfy/__init__.py
T
2025-04-02 00:54:01 +07:00

107 lines
4.7 KiB
Python

# ================================================
# File: __init__.py
# ================================================
# Civicomfy/__init__.py
import os
# Define paths relative to this __init__.py file
EXTENSION_ROOT = os.path.dirname(os.path.realpath(__file__))
WEB_PATH = os.path.join(EXTENSION_ROOT, "web")
JS_PATH = os.path.join(WEB_PATH, "js")
CSS_PATH = os.path.join(JS_PATH, "css")
JS_FILENAME = "civitaiDownloader.js"
CSS_FILENAME = "civitaiDownloader.css"
JS_FILE_PATH = os.path.join(JS_PATH, JS_FILENAME)
CSS_FILE_PATH = os.path.join(JS_PATH, CSS_FILENAME)
# --- Import Core Components ---
# Import configurations and utility functions first
# Ensure config and helpers don't have side effects unsuitable for just checking files
try:
from .config import WEB_DIRECTORY as config_WEB_DIRECTORY, PLACEHOLDER_IMAGE_PATH
from .utils.helpers import create_placeholder_image
# Import downloader manager (creates the instance)
from .downloader import manager as download_manager
# Import server routes (registers the routes)
from .server import routes
imports_successful = True
print("[Civicomfy] Core modules imported successfully.")
except ImportError as e:
imports_successful = False
print("*"*80)
print(f"[Civicomfy] ERROR: Failed to import core modules: {e}")
print("Please ensure the file structure is correct and all required files exist.")
print("Extension will likely not function correctly.")
print("*"*80)
except Exception as e:
imports_successful = False
# Catch other potential init errors during import
import traceback
print("*"*80)
print(f"[Civicomfy] ERROR: An unexpected error occurred during module import:")
traceback.print_exc()
print("Extension will likely not function correctly.")
print("*"*80)
# --- Check for Frontend Files ---
frontend_files_ok = True
if not os.path.exists(CSS_FILE_PATH):
print("*"*80)
print(f"[Civicomfy] WARNING: Frontend CSS file not found!")
print(f" Expected at: {CSS_FILE_PATH}")
print(" The downloader UI may not display correctly.")
print(f" Please ensure '{CSS_FILENAME}' is placed in the '{os.path.basename(CSS_PATH)}' directory inside 'web'.") # Updated path hint
print("*"*80)
frontend_files_ok = False
if not os.path.exists(JS_FILE_PATH):
print("*"*80)
print(f"[Civicomfy] WARNING: Frontend JavaScript file not found!")
print(f" Expected at: {JS_FILE_PATH}")
print(" The downloader UI functionality will be missing.")
print(f" Please ensure '{JS_FILENAME}' is placed in the '{os.path.basename(JS_PATH)}' directory inside 'web'.") # Updated path hint
print("*"*80)
frontend_files_ok = False
# --- ComfyUI Registration ---
if imports_successful:
# Standard ComfyUI extension variables
# No custom nodes defined in this extension
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
# Define the web directory for ComfyUI to serve
# The key is the path component in the URL: /extensions/Civicomfy/...
# The value is the directory path relative to this __init__.py file
WEB_DIRECTORY = "./web" # This tells ComfyUI to serve the ./web folder relative to this file
# --- Startup Messages ---
print("-" * 30)
print("--- Civicomfy Custom Extension Loaded ---")
print(f"- Serving frontend files from: {os.path.abspath(WEB_PATH)} (Relative: {WEB_DIRECTORY})")
# Download manager and routes are initialized/registered upon import
print(f"- Download Manager Initialized: {'Yes' if 'download_manager' in locals() else 'No! Import failed.'}")
print(f"- API Endpoints Registered: {'Yes' if 'routes' in locals() else 'No! Import failed.'}")
if frontend_files_ok:
print("- Frontend files found.")
else:
print("- WARNING: Frontend files missing (see warnings above). UI may not work.")
print("- Look for 'Civicomfy' button in the ComfyUI menu.")
print("-" * 30)
# Create placeholder image if needed (can run even if other things failed)
try:
create_placeholder_image(PLACEHOLDER_IMAGE_PATH)
except NameError:
# Handle case where PLACEHOLDER_IMAGE_PATH itself failed to import
print("[Civicomfy] Warning: Could not create placeholder image due to failed config import.")
except Exception as e:
print(f"[Civicomfy] Error trying to create placeholder image: {e}")
else:
# If imports failed, don't register anything with ComfyUI
print("[Civicomfy] Initialization failed due to import errors. Extension inactive.")
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
WEB_DIRECTORY = None # Do not serve web directory if backend failed