Merge branch 'main' into feat/cnr

This commit is contained in:
Dr.Lt.Data
2024-12-18 09:08:15 +09:00
22 changed files with 11534 additions and 5273 deletions

View File

@@ -16,6 +16,7 @@ from server import PromptServer
import manager_core as core
import manager_util
import cm_global
from datetime import datetime
print(f"### Loading: ComfyUI-Manager ({core.version_str})")
@@ -192,7 +193,7 @@ def print_comfyui_version():
try:
if core.comfy_ui_commit_datetime.date() < core.comfy_ui_required_commit_datetime.date():
print(f"\n\n## [WARN] ComfyUI-Manager: Your ComfyUI version ({core.comfy_ui_revision})[{core.comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version. ##\n\n")
print(f"\n\n## [WARN] ComfyUI-Manager: Your ComfyUI version ({core.get_comfyui_tag()})[{core.comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version. ##\n\n")
except:
pass
@@ -211,10 +212,11 @@ def print_comfyui_version():
# <--
if current_branch == "master":
if comfyui_tag:
print(f"### ComfyUI Version: {comfyui_tag} | Released on '{core.comfy_ui_commit_datetime.date()}'")
else:
version_tag = core.get_comfyui_tag()
if version_tag is None:
print(f"### ComfyUI Revision: {core.comfy_ui_revision} [{comfy_ui_hash[:8]}] | Released on '{core.comfy_ui_commit_datetime.date()}'")
else:
print(f"### ComfyUI Version: {core.get_comfyui_tag()} | Released on '{core.comfy_ui_commit_datetime.date()}'")
else:
print(f"### ComfyUI Revision: {core.comfy_ui_revision} on '{current_branch}' [{comfy_ui_hash[:8]}] | Released on '{core.comfy_ui_commit_datetime.date()}'")
except:
@@ -248,23 +250,45 @@ import urllib.request
def get_model_dir(data):
if 'download_model_base' in folder_paths.folder_names_and_paths:
models_base = folder_paths.folder_names_and_paths['download_model_base'][0][0]
else:
models_base = folder_paths.models_dir
def resolve_custom_node(save_path):
save_path = save_path[13:] # remove 'custom_nodes/'
repo_name = save_path.replace('\\','/').split('/')[0] # get custom node repo name
repo_path = core.lookup_installed_custom_nodes(repo_name)
if repo_path is not None and repo_path[0]:
# Returns the retargeted path based on the actually installed repository
return os.path.join(os.path.dirname(repo_path[1]), save_path)
else:
return None
if data['save_path'] != 'default':
if '..' in data['save_path'] or data['save_path'].startswith('/'):
print(f"[WARN] '{data['save_path']}' is not allowed path. So it will be saved into 'models/etc'.")
base_model = os.path.join(folder_paths.models_dir, "etc")
base_model = os.path.join(models_base, "etc")
else:
if data['save_path'].startswith("custom_nodes"):
base_model = os.path.join(core.comfy_path, data['save_path'])
base_model = resolve_custom_node(data['save_path'])
if base_model is None:
print(f"[ComfyUI-Manager] The target custom node for model download is not installed: {data['save_path']}")
return None
else:
base_model = os.path.join(folder_paths.models_dir, data['save_path'])
base_model = os.path.join(models_base, data['save_path'])
else:
model_type = data['type']
if model_type == "checkpoints" or model_type == "checkpoint":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "unclip":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "clip":
base_model = folder_paths.folder_names_and_paths["clip"][0][0]
elif model_type == "clip" or model_type == "text_encoders":
if folder_paths.folder_names_and_paths.get("text_encoders"):
base_model = folder_paths.folder_names_and_paths["text_encoders"][0][0]
else:
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
base_model = folder_paths.folder_names_and_paths["clip"][0][0] # outdated version
elif model_type == "VAE":
base_model = folder_paths.folder_names_and_paths["vae"][0][0]
elif model_type == "lora":
@@ -290,14 +314,17 @@ def get_model_dir(data):
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version
else:
base_model = os.path.join(folder_paths.models_dir, "etc")
base_model = os.path.join(models_base, "etc")
return base_model
def get_model_path(data):
base_model = get_model_dir(data)
return os.path.join(base_model, data['filename'])
if base_model is None:
return None
else:
return os.path.join(base_model, data['filename'])
def check_state_of_git_node_pack(node_packs, do_fetch=False, do_update_check=True, do_update=False):
@@ -1228,17 +1255,21 @@ async def get_notice(request):
if match:
markdown_content = match.group(1)
if comfyui_tag:
markdown_content += f"<HR>ComfyUI: {comfyui_tag}<BR>Commit Date: {core.comfy_ui_commit_datetime.date()}"
else:
version_tag = core.get_comfyui_tag()
if version_tag is None:
markdown_content += f"<HR>ComfyUI: {core.comfy_ui_revision}[{comfy_ui_hash[:6]}]({core.comfy_ui_commit_datetime.date()})"
else:
markdown_content += (f"<HR>ComfyUI: {version_tag}<BR>"
f"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;({core.comfy_ui_commit_datetime.date()})")
# markdown_content += f"<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;()"
markdown_content += f"<BR>Manager: {core.version_str}"
markdown_content = add_target_blank(markdown_content)
try:
if core.comfy_ui_required_commit_datetime.date() > core.comfy_ui_commit_datetime.date():
if core.comfy_ui_commit_datetime == datetime(1900, 1, 1, 0, 0, 0):
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI isn\'t git repo.</P>' + markdown_content
elif core.comfy_ui_required_commit_datetime.date() > core.comfy_ui_commit_datetime.date():
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI is too OUTDATED!!!</P>' + markdown_content
except:
pass
@@ -1269,6 +1300,11 @@ def restart(self):
exit(0)
print(f"\nRestarting... [Legacy Mode]\n\n")
sys_argv = sys.argv.copy()
if '--windows-standalone-build' in sys_argv:
sys_argv.remove('--windows-standalone-build')
if sys.platform.startswith('win32'):
return os.execv(sys.executable, ['"' + sys.executable + '"', '"' + sys.argv[0] + '"'] + sys.argv[1:])
else:
@@ -1332,13 +1368,6 @@ async def load_components(request):
return web.Response(status=400)
args.enable_cors_header = "*"
if hasattr(PromptServer.instance, "app"):
app = PromptServer.instance.app
cors_middleware = server.create_cors_middleware(args.enable_cors_header)
app.middlewares.append(cors_middleware)
def sanitize(data):
return data.replace("<", "&lt;").replace(">", "&gt;")