|
|
import sys
|
|
|
import os
|
|
|
|
|
|
from io import StringIO
|
|
|
|
|
|
import traceback
|
|
|
|
|
|
from aiohttp import web
|
|
|
|
|
|
ext_dir = os.path.dirname(__file__)
|
|
|
sys.path.append(ext_dir)
|
|
|
|
|
|
try:
|
|
|
import black
|
|
|
except ImportError:
|
|
|
print("Unable to import requirements for ComfyUI-SaveAsScript.")
|
|
|
print("Installing...")
|
|
|
|
|
|
import importlib
|
|
|
|
|
|
spec = importlib.util.spec_from_file_location(
|
|
|
"impact_install", os.path.join(os.path.dirname(__file__), "install.py")
|
|
|
)
|
|
|
impact_install = importlib.util.module_from_spec(spec)
|
|
|
spec.loader.exec_module(impact_install)
|
|
|
|
|
|
print("Successfully installed. Hopefully, at least.")
|
|
|
|
|
|
|
|
|
os.environ["RUNNING_IN_COMFYUI"] = "TRUE"
|
|
|
|
|
|
from comfyui_to_python import ComfyUItoPython
|
|
|
|
|
|
sys.path.append(os.path.dirname(os.path.dirname(ext_dir)))
|
|
|
|
|
|
import server
|
|
|
|
|
|
WEB_DIRECTORY = "js"
|
|
|
NODE_CLASS_MAPPINGS = {}
|
|
|
|
|
|
|
|
|
@server.PromptServer.instance.routes.post("/saveasscript")
|
|
|
async def save_as_script(request):
|
|
|
try:
|
|
|
data = await request.json()
|
|
|
name = data["name"]
|
|
|
workflow = data["workflow"]
|
|
|
|
|
|
sio = StringIO()
|
|
|
ComfyUItoPython(workflow=workflow, output_file=sio)
|
|
|
|
|
|
sio.seek(0)
|
|
|
data = sio.read()
|
|
|
|
|
|
return web.Response(text=data, status=200)
|
|
|
except Exception as e:
|
|
|
traceback.print_exc()
|
|
|
return web.Response(text=str(e), status=500)
|
|
|
|