Merge branch 'ltdrdata:main' into main

This commit is contained in:
smthemex 2024-04-27 09:26:05 +08:00 committed by GitHub
commit 04c10f0038
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 1591 additions and 683 deletions

162
cm-cli.py
View File

@ -108,10 +108,11 @@ def restore_dependencies():
def restore_snapshot(snapshot_name): def restore_snapshot(snapshot_name):
global processed_install global processed_install
snapshot_path = os.path.join(core.comfyui_manager_path, 'snapshots', snapshot_name) if not os.path.exists(snapshot_name):
if not os.path.exists(snapshot_path): snapshot_path = os.path.join(core.comfyui_manager_path, 'snapshots', snapshot_name)
print(f"ERROR: `{snapshot_path}` is not exists.") if not os.path.exists(snapshot_path):
exit(-1) print(f"ERROR: `{snapshot_path}` is not exists.")
exit(-1)
try: try:
cloned_repos = [] cloned_repos = []
@ -250,7 +251,7 @@ process_args()
custom_node_map = load_custom_nodes() custom_node_map = load_custom_nodes()
def lookup_node_path(node_name): def lookup_node_path(node_name, robust=False):
# Currently, the node_name is used directly as the node_path, but in the future, I plan to allow nicknames. # Currently, the node_name is used directly as the node_path, but in the future, I plan to allow nicknames.
if '..' in node_name: if '..' in node_name:
@ -260,25 +261,36 @@ def lookup_node_path(node_name):
if node_name in custom_node_map: if node_name in custom_node_map:
node_path = os.path.join(custom_nodes_path, node_name) node_path = os.path.join(custom_nodes_path, node_name)
return node_path, custom_node_map[node_name] return node_path, custom_node_map[node_name]
elif robust:
node_path = os.path.join(custom_nodes_path, node_name)
return node_path, None
print(f"ERROR: invalid node name '{node_name}'") print(f"ERROR: invalid node name '{node_name}'")
exit(-1) exit(-1)
def install_node(node_name, is_all=False, cnt_msg=''): def install_node(node_name, is_all=False, cnt_msg=''):
node_path, node_item = lookup_node_path(node_name) if '://' in node_name:
# install via urls
if os.path.exists(node_path): res = core.gitclone_install([node_name])
if not is_all:
print(f"{cnt_msg} [ SKIPPED ] {node_name:50} => Already installed")
elif os.path.exists(node_path+'.disabled'):
enable_node(node_name)
else:
res = core.gitclone_install(node_item['files'], instant_execution=True, msg_prefix=f"[{cnt_msg}] ")
if not res: if not res:
print(f"ERROR: An error occurred while installing '{node_name}'.") print(f"ERROR: An error occurred while installing '{node_name}'.")
else: else:
print(f"{cnt_msg} [INSTALLED] {node_name:50}") print(f"{cnt_msg} [INSTALLED] {node_name:50}")
else:
node_path, node_item = lookup_node_path(node_name)
if os.path.exists(node_path):
if not is_all:
print(f"{cnt_msg} [ SKIPPED ] {node_name:50} => Already installed")
elif os.path.exists(node_path+'.disabled'):
enable_node(node_name)
else:
res = core.gitclone_install(node_item['files'], instant_execution=True, msg_prefix=f"[{cnt_msg}] ")
if not res:
print(f"ERROR: An error occurred while installing '{node_name}'.")
else:
print(f"{cnt_msg} [INSTALLED] {node_name:50}")
def reinstall_node(node_name, is_all=False, cnt_msg=''): def reinstall_node(node_name, is_all=False, cnt_msg=''):
@ -293,10 +305,13 @@ def reinstall_node(node_name, is_all=False, cnt_msg=''):
def fix_node(node_name, is_all=False, cnt_msg=''): def fix_node(node_name, is_all=False, cnt_msg=''):
node_path, node_item = lookup_node_path(node_name) node_path, node_item = lookup_node_path(node_name, robust=True)
files = node_item['files'] if node_item is not None else [node_path]
if os.path.exists(node_path): if os.path.exists(node_path):
print(f"{cnt_msg} [ FIXING ]: {node_name:50} => Disabled") print(f"{cnt_msg} [ FIXING ]: {node_name:50} => Disabled")
res = core.gitclone_fix(node_item['files'], instant_execution=True) res = core.gitclone_fix(files, instant_execution=True)
if not res: if not res:
print(f"ERROR: An error occurred while fixing '{node_name}'.") print(f"ERROR: An error occurred while fixing '{node_name}'.")
elif not is_all and os.path.exists(node_path+'.disabled'): elif not is_all and os.path.exists(node_path+'.disabled'):
@ -306,9 +321,12 @@ def fix_node(node_name, is_all=False, cnt_msg=''):
def uninstall_node(node_name, is_all=False, cnt_msg=''): def uninstall_node(node_name, is_all=False, cnt_msg=''):
node_path, node_item = lookup_node_path(node_name) node_path, node_item = lookup_node_path(node_name, robust=True)
files = node_item['files'] if node_item is not None else [node_path]
if os.path.exists(node_path) or os.path.exists(node_path+'.disabled'): if os.path.exists(node_path) or os.path.exists(node_path+'.disabled'):
res = core.gitclone_uninstall(node_item['files']) res = core.gitclone_uninstall(files)
if not res: if not res:
print(f"ERROR: An error occurred while uninstalling '{node_name}'.") print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
else: else:
@ -318,44 +336,63 @@ def uninstall_node(node_name, is_all=False, cnt_msg=''):
def update_node(node_name, is_all=False, cnt_msg=''): def update_node(node_name, is_all=False, cnt_msg=''):
node_path, node_item = lookup_node_path(node_name) node_path, node_item = lookup_node_path(node_name, robust=True)
res = core.gitclone_update(node_item['files'], skip_script=True, msg_prefix=f"[{cnt_msg}] ")
files = node_item['files'] if node_item is not None else [node_path]
res = core.gitclone_update(files, skip_script=True, msg_prefix=f"[{cnt_msg}] ")
post_install(node_path) post_install(node_path)
if not res: if not res:
print(f"ERROR: An error occurred while uninstalling '{node_name}'.") print(f"ERROR: An error occurred while uninstalling '{node_name}'.")
def update_comfyui():
res = core.update_path(comfy_path, instant_execution=True)
if res == 'fail':
print("Updating ComfyUI has failed.")
elif res == 'updated':
print("ComfyUI is updated.")
else:
print("ComfyUI is already up to date.")
def enable_node(node_name, is_all=False, cnt_msg=''): def enable_node(node_name, is_all=False, cnt_msg=''):
if node_name == 'ComfyUI-Manager': if node_name == 'ComfyUI-Manager':
return return
node_path, _ = lookup_node_path(node_name) node_path, node_item = lookup_node_path(node_name, robust=True)
if os.path.exists(node_path+'.disabled'): files = node_item['files'] if node_item is not None else [node_path]
current_name = node_path+'.disabled'
os.rename(current_name, node_path) for x in files:
print(f"{cnt_msg} [ENABLED] {node_name:50}") if os.path.exists(x+'.disabled'):
elif os.path.exists(node_path): current_name = x+'.disabled'
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Already enabled") os.rename(current_name, x)
elif not is_all: print(f"{cnt_msg} [ENABLED] {node_name:50}")
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Not installed") elif os.path.exists(x):
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Already enabled")
elif not is_all:
print(f"{cnt_msg} [SKIPPED] {node_name:50} => Not installed")
def disable_node(node_name, is_all=False, cnt_msg=''): def disable_node(node_name, is_all=False, cnt_msg=''):
if node_name == 'ComfyUI-Manager': if node_name == 'ComfyUI-Manager':
return return
node_path, _ = lookup_node_path(node_name) node_path, node_item = lookup_node_path(node_name, robust=True)
if os.path.exists(node_path): files = node_item['files'] if node_item is not None else [node_path]
current_name = node_path
new_name = node_path+'.disabled' for x in files:
os.rename(current_name, new_name) if os.path.exists(x):
print(f"{cnt_msg} [DISABLED] {node_name:50}") current_name = x
elif os.path.exists(node_path+'.disabled'): new_name = x+'.disabled'
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Already disabled") os.rename(current_name, new_name)
elif not is_all: print(f"{cnt_msg} [DISABLED] {node_name:50}")
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Not installed") elif os.path.exists(x+'.disabled'):
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Already disabled")
elif not is_all:
print(f"{cnt_msg} [ SKIPPED] {node_name:50} => Not installed")
def show_list(kind, simple=False): def show_list(kind, simple=False):
@ -384,6 +421,38 @@ def show_list(kind, simple=False):
else: else:
print(f"{prefix} {k:50}(author: {v['author']})") print(f"{prefix} {k:50}(author: {v['author']})")
# unregistered nodes
candidates = os.listdir(os.path.realpath(custom_nodes_path))
for k in candidates:
fullpath = os.path.join(custom_nodes_path, k)
if os.path.isfile(fullpath):
continue
if k in ['__pycache__']:
continue
states = set()
if k.endswith('.disabled'):
prefix = '[ DISABLED ] '
states.add('installed')
states.add('disabled')
states.add('all')
k = k[:-9]
else:
prefix = '[ ENABLED ] '
states.add('installed')
states.add('enabled')
states.add('all')
if k not in custom_node_map:
if kind in states:
if simple:
print(f"{k:50}")
else:
print(f"{prefix} {k:50}(author: N/A)")
def show_snapshot(simple_mode=False): def show_snapshot(simple_mode=False):
json_obj = core.get_current_snapshot() json_obj = core.get_current_snapshot()
@ -401,9 +470,9 @@ def show_snapshot(simple_mode=False):
def show_snapshot_list(simple_mode=False): def show_snapshot_list(simple_mode=False):
path = os.path.join(comfyui_manager_path, 'snapshots') snapshot_path = os.path.join(comfyui_manager_path, 'snapshots')
files = os.listdir(path) files = os.listdir(snapshot_path)
json_files = [x for x in files if x.endswith('.json')] json_files = [x for x in files if x.endswith('.json')]
for x in sorted(json_files): for x in sorted(json_files):
print(x) print(x)
@ -423,7 +492,9 @@ def for_each_nodes(act, allow_all=True):
is_all = False is_all = False
if allow_all and 'all' in nodes: if allow_all and 'all' in nodes:
is_all = True is_all = True
nodes = [x for x in custom_node_map.keys() if os.path.exists(os.path.join(custom_nodes_path, x)) or os.path.exists(os.path.join(custom_nodes_path, x)+'.disabled')] nodes = [x for x in custom_node_map.keys() if os.path.exists(os.path.join(custom_nodes_path, x)) or os.path.exists(os.path.join(custom_nodes_path, x) + '.disabled')]
nodes = [x for x in nodes if x.lower() not in ['comfy', 'comfyui', 'all']]
total = len(nodes) total = len(nodes)
i = 1 i = 1
@ -433,7 +504,7 @@ def for_each_nodes(act, allow_all=True):
except Exception as e: except Exception as e:
print(f"ERROR: {e}") print(f"ERROR: {e}")
traceback.print_exc() traceback.print_exc()
i+=1 i += 1
op = sys.argv[1] op = sys.argv[1]
@ -449,6 +520,11 @@ elif op == 'uninstall':
for_each_nodes(uninstall_node) for_each_nodes(uninstall_node)
elif op == 'update': elif op == 'update':
for x in nodes:
if x.lower() in ['comfyui', 'comfy', 'all']:
update_comfyui()
break
for_each_nodes(update_node, allow_all=True) for_each_nodes(update_node, allow_all=True)
elif op == 'disable': elif op == 'disable':

View File

@ -266,6 +266,7 @@
"author": "Derfuu", "author": "Derfuu",
"title": "Derfuu_ComfyUI_ModdedNodes", "title": "Derfuu_ComfyUI_ModdedNodes",
"reference": "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes", "reference": "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes",
"nodename_pattern": "^DF_",
"files": [ "files": [
"https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes" "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes"
], ],
@ -4867,6 +4868,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:VideoLaVITLoader, VideoLaVITT2V, VideoLaVITI2V, VideoLaVITI2VLong, VideoLaVITT2VLong, VideoLaVITI2I" "description": "Nodes:VideoLaVITLoader, VideoLaVITT2V, VideoLaVITI2V, VideoLaVITI2VLong, VideoLaVITT2VLong, VideoLaVITI2I"
}, },
{
"author": "chaojie",
"title": "ComfyUI-SimDA",
"reference": "https://github.com/chaojie/ComfyUI-SimDA",
"files": [
"https://github.com/chaojie/ComfyUI-SimDA"
],
"install_type": "git-clone",
"description": "Nodes:SimDATrain, SimDALoader, SimDARun, VHS_FILENAMES_STRING_SimDA"
},
{ {
"author": "alexopus", "author": "alexopus",
"title": "ComfyUI Image Saver", "title": "ComfyUI Image Saver",
@ -5299,6 +5310,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Extract Features With Unet, Additional Features With Attention" "description": "Nodes:Extract Features With Unet, Additional Features With Attention"
}, },
{
"author": "longgui0318",
"title": "comfyui-magic-clothing",
"reference": "https://github.com/longgui0318/comfyui-magic-clothing",
"files": [
"https://github.com/longgui0318/comfyui-magic-clothing"
],
"install_type": "git-clone",
"description": "The comfyui supported version of the [a/Magic Clothing](https://github.com/ShineChen1024/MagicClothing) project, not the diffusers version, allows direct integration with modules such as ipadapter"
},
{ {
"author": "DimaChaichan", "author": "DimaChaichan",
"title": "LAizypainter-Exporter-ComfyUI", "title": "LAizypainter-Exporter-ComfyUI",
@ -6689,6 +6710,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Jerry Davos Custom Nodes for Saving Latents in Directory (BatchLatentSave) , Importing Latent from directory (BatchLatentLoadFromDir) , List to string, string to list, get any file list from directory which give filepath, filename, move any files from any directory to any other directory, VHS Video combine file mover, rebatch list of strings, batch image load from any dir, load image batch from any directory and other custom nodes." "description": "Jerry Davos Custom Nodes for Saving Latents in Directory (BatchLatentSave) , Importing Latent from directory (BatchLatentLoadFromDir) , List to string, string to list, get any file list from directory which give filepath, filename, move any files from any directory to any other directory, VHS Video combine file mover, rebatch list of strings, batch image load from any dir, load image batch from any directory and other custom nodes."
}, },
{
"author": "daxcay",
"title": "ComfyUI-DRMN",
"reference": "https://github.com/daxcay/ComfyUI-DRMN",
"files": [
"https://github.com/daxcay/ComfyUI-DRMN"
],
"install_type": "git-clone",
"description": "Data Research And Manipulators Nodes for Model Trainers, Artists, Designers and Animators. Captions, Visualizer, Text Manipulator"
},
{ {
"author": "Seedsa", "author": "Seedsa",
"title": "ComfyUI Fooocus Nodes", "title": "ComfyUI Fooocus Nodes",
@ -6851,13 +6882,13 @@
}, },
{ {
"author": "shinich39", "author": "shinich39",
"title": "comfyui-text-pipe-39", "title": "comfyui-local-db",
"reference": "https://github.com/shinich39/comfyui-text-pipe-39", "reference": "https://github.com/shinich39/comfyui-local-db",
"files": [ "files": [
"https://github.com/shinich39/comfyui-text-pipe-39" "https://github.com/shinich39/comfyui-local-db"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Modify text by condition." "description": "Store text to Key-Values pair json."
}, },
{ {
"author": "wei30172", "author": "wei30172",
@ -7250,14 +7281,14 @@
"description": "SDFXBridgeForComfyUI is a custom node designed for seamless integration between ComfyUI and SDFX. This custom node allows users to make ComfyUI compatible with SDFX when running the ComfyUI instance on their local machines." "description": "SDFXBridgeForComfyUI is a custom node designed for seamless integration between ComfyUI and SDFX. This custom node allows users to make ComfyUI compatible with SDFX when running the ComfyUI instance on their local machines."
}, },
{ {
"author": "smthemex", "author": "smthemex",
"title": "ComfyUI_ChatGLM_API", "title": "ComfyUI_ChatGLM_API",
"reference": "https://github.com/smthemex/ComfyUI_ChatGLM_API", "reference": "https://github.com/smthemex/ComfyUI_ChatGLM_API",
"files": [ "files": [
"https://github.com/smthemex/ComfyUI_ChatGLM_API" "https://github.com/smthemex/ComfyUI_ChatGLM_API"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "You can call Chatglm's API in comfyUI to translate and describe pictures, and the API similar to OpenAI." "description": "You can call Chatglm's API in comfyUI to translate and describe pictures, and the API similar to OpenAI."
}, },
{ {
"author": "smthemex", "author": "smthemex",
@ -7267,17 +7298,7 @@
"https://github.com/smthemex/ComfyUI_ParlerTTS" "https://github.com/smthemex/ComfyUI_ParlerTTS"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "This is a simple ComfyUI custom TTS node based on [a/Parler_tts](https://huggingface.co/parler-tts)." "description": "You can call the ParlerTTS tool in comfyUI, which currently only supports English."
},
{
"author": "smthemex",
"title": "ComfyUI_Pic2Story",
"reference": "https://github.com/smthemex/ComfyUI_Pic2Story",
"files": [
"https://github.com/smthemex/ComfyUI_Pic2Story"
],
"install_type": "git-clone",
"description": "ComfyUI simple node based on BLIP method, with the function of 'Image to Txt'."
}, },
{ {
"author": "smthemex", "author": "smthemex",
@ -7297,7 +7318,7 @@
"https://github.com/smthemex/ComfyUI_Pipeline_Tool" "https://github.com/smthemex/ComfyUI_Pipeline_Tool"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Pipeline_Tool" "description": "A tool for novice users in Chinese Mainland to call the huggingface hub and download the huggingface models."
}, },
{ {
"author": "choey", "author": "choey",
@ -7489,6 +7510,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Load From S3, Save To S3." "description": "Nodes:Load From S3, Save To S3."
}, },
{
"author": "kealiu",
"title": "ComfyUI-ZeroShot-MTrans",
"reference": "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans",
"files": [
"https://github.com/kealiu/ComfyUI-ZeroShot-MTrans"
],
"install_type": "git-clone",
"description": "An unofficial ComfyUI custom node for [a/Zero-Shot Material Transfer from a Single Image](https://ttchengab.github.io/zest), Given an input image (e.g., a photo of an apple) and a single material exemplar image (e.g., a golden bowl), ZeST can transfer the gold material from the exemplar onto the apple with accurate lighting cues while making everything else consistent."
},
{ {
"author": "TashaSkyUp", "author": "TashaSkyUp",
"title": "ComfyUI_LiteLLM", "title": "ComfyUI_LiteLLM",
@ -7507,7 +7538,7 @@
"https://github.com/AonekoSS/ComfyUI-SimpleCounter" "https://github.com/AonekoSS/ComfyUI-SimpleCounter"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Simple Counter" "description": "Node: utils/Simple Counter\nThis node is a simple counter, when pressing 'Queue Prompt' resets the count."
}, },
{ {
"author": "heshengtao", "author": "heshengtao",
@ -7619,6 +7650,77 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Execution Time Analysis, Reroute Enhancement, Node collection for developers." "description": "Execution Time Analysis, Reroute Enhancement, Node collection for developers."
}, },
{
"author": "huchenlei",
"title": "ComfyUI-openpose-editor",
"reference": "https://github.com/huchenlei/ComfyUI-openpose-editor",
"files": [
"https://github.com/huchenlei/ComfyUI-openpose-editor"
],
"install_type": "git-clone",
"description": "Port of [a/https://github.com/huchenlei/sd-webui-openpose-editor](https://github.com/huchenlei/sd-webui-openpose-editor) in ComfyUI"
},
{
"author": "lquesada",
"title": "ComfyUI-Prompt-Combinator",
"reference": "https://github.com/lquesada/ComfyUI-Prompt-Combinator",
"files": [
"https://github.com/lquesada/ComfyUI-Prompt-Combinator"
],
"install_type": "git-clone",
"description": "'🔢 Prompt Combinator' is a node that generates all possible combinations of prompts from several lists of strings."
},
{
"author": "randjtw",
"title": "advance-aesthetic-score",
"reference": "https://github.com/randjtw/advance-aesthetic-score",
"files": [
"https://github.com/randjtw/advance-aesthetic-score"
],
"install_type": "git-clone",
"description": "Nodes:Advance Aesthetic Score"
},
{
"author": "FredBill1",
"title": "comfyui-fb-utils",
"reference": "https://github.com/FredBill1/comfyui-fb-utils",
"files": [
"https://github.com/FredBill1/comfyui-fb-utils"
],
"install_type": "git-clone",
"description": "Nodes:FBStringJoin, FBStringSplit, FBMultilineStringList, FBMultilineString"
},
{
"author": "jeffy5",
"title": "comfyui-fb-utils",
"reference": "https://github.com/jeffy5/comfyui-faceless-node",
"files": [
"https://github.com/jeffy5/comfyui-faceless-node"
],
"install_type": "git-clone",
"description": "Nodes:Load Video, Load Frames, Save Video, Face Swap, Face Restore, Face Swap (Video), Face Restore (Video)"
},
{
"author": "TaiTair",
"title": "Simswap Node for ComfyUI",
"reference": "https://github.com/TaiTair/comfyui-simswap",
"files": [
"https://github.com/TaiTair/comfyui-simswap"
],
"install_type": "git-clone",
"description": "A hacky implementation of Simswap based on [a/Comfyui ReActor Node 0.5.1](https://github.com/Gourieff/comfyui-reactor-node) and [a/Simswap](https://github.com/neuralchen/SimSwap)."
},
{
"author": "fofr",
"title": "Simswap Node for ComfyUI (ByteDance)",
"reference": "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler",
"files": [
"https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler"
],
"install_type": "git-clone",
"description": "Original author is ByteDance.\nComfyUI sampler for HyperSDXL UNet\nPorted from: [a/https://huggingface.co/ByteDance/Hyper-SD](https://huggingface.co/ByteDance/Hyper-SD)"
},

View File

@ -115,8 +115,8 @@ ComfyUI-Loopchain
### 4. Snapshot Management ### 4. Snapshot Management
* `python cm-cli.py save-snapshot`: Saves the current snapshot. * `python cm-cli.py save-snapshot`: Saves the current snapshot.
* `python cm-cli.py restore-snapshot <snapshot>`: Restores to the specified snapshot. * `python cm-cli.py restore-snapshot <snapshot>`: Restores to the specified snapshot.
* It is assumed that the snapshot files are located in ComfyUI-Manager/snapshots. * If a file exists at the snapshot path, it loads that snapshot.
(An update is planned to allow files from other paths in the future.) * If no file exists at the snapshot path, it implicitly assumes the snapshot is located in ComfyUI-Manager/snapshots.
### 5. CLI Only Mode ### 5. CLI Only Mode

View File

@ -117,8 +117,8 @@ ComfyUI-Loopchain
### 4. 스냅샷 관리 기능 ### 4. 스냅샷 관리 기능
* `python cm-cli.py save-snapshot`: 현재의 snapshot을 저장합니다. * `python cm-cli.py save-snapshot`: 현재의 snapshot을 저장합니다.
* `python cm-cli.py restore-snapshot <snapshot>`: 지정된 snapshot으로 복구합니다. * `python cm-cli.py restore-snapshot <snapshot>`: 지정된 snapshot으로 복구합니다.
* snapshot 파일은 ComfyUI-Manager/snapshots 에 있다고 가정합니다. * snapshot 경로에 파일이 존재하는 경우 해당 snapshot을 로드합니다.
(추후 다른 경로에 있는 파일을 허용 가능하도록 업데이트 예정입니다.) * snapshot 경로에 파일이 존재하지 않는 경우 묵시적으로, ComfyUI-Manager/snapshots 에 있다고 가정합니다.
### 5. CLI only mode ### 5. CLI only mode

View File

@ -219,6 +219,7 @@
"CombineAudioVideo", "CombineAudioVideo",
"LoadVideo", "LoadVideo",
"MuseTalk", "MuseTalk",
"MuseTalkRealTime",
"PreViewVideo" "PreViewVideo"
], ],
{ {
@ -358,6 +359,7 @@
"FloatToInt-badger", "FloatToInt-badger",
"FloatToString-badger", "FloatToString-badger",
"FrameToVideo-badger", "FrameToVideo-badger",
"GETRequset-badger",
"GarbageCollect-badger", "GarbageCollect-badger",
"GetColorFromBorder-badger", "GetColorFromBorder-badger",
"GetDirName-badger", "GetDirName-badger",
@ -607,6 +609,7 @@
"ComfyUIDeployExternalCheckpoint", "ComfyUIDeployExternalCheckpoint",
"ComfyUIDeployExternalImage", "ComfyUIDeployExternalImage",
"ComfyUIDeployExternalImageAlpha", "ComfyUIDeployExternalImageAlpha",
"ComfyUIDeployExternalImageBatch",
"ComfyUIDeployExternalLora", "ComfyUIDeployExternalLora",
"ComfyUIDeployExternalNumber", "ComfyUIDeployExternalNumber",
"ComfyUIDeployExternalNumberInt", "ComfyUIDeployExternalNumberInt",
@ -622,13 +625,13 @@
], ],
"https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [ "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [
[ [
"BTPromptSchedule",
"BTPromptSelector",
"EndQueue", "EndQueue",
"ImageTextOverlay", "ImageTextOverlay",
"Loop", "Loop",
"LoopEnd", "LoopEnd",
"LoopStart", "LoopStart"
"PromptSchedule",
"PromptSelector"
], ],
{ {
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@ -946,38 +949,13 @@
} }
], ],
"https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [
[ [],
"Absolute value",
"Ceil",
"Conditioning area scale by ratio",
"Cosines",
"Divide",
"Float",
"Floor",
"Get image size",
"Get latent size",
"Image scale by ratio",
"Image scale to side",
"Int to float",
"Integer",
"Latent Scale by ratio",
"Latent Scale to side",
"Logic node",
"Multiply",
"Power",
"Random",
"Sinus",
"Square root",
"String Concatenate",
"String Replace",
"Subtract",
"Sum",
"Tangent",
"Text",
"Text box",
"To text (Debug)"
],
{ {
"author": "Derfuu",
"description": "Pack of simple (or not) and modded nodes for scaling images/latents, editing numbers or text. Automate calculations depending on image sizes or any other thing you want. Or randomize any number in your workflow. Debug node included.",
"nickname": "Derfuu simple/modded Nodes",
"nodename_pattern": "^DF_",
"title": "Derfuu simple/modded Nodes",
"title_aux": "Derfuu_ComfyUI_ModdedNodes" "title_aux": "Derfuu_ComfyUI_ModdedNodes"
} }
], ],
@ -1122,9 +1100,11 @@
], ],
"https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [ "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [
[ [
"Aligned Scheduler",
"Get sigmas as float", "Get sigmas as float",
"Graph sigmas", "Graph sigmas",
"Manual scheduler", "Manual scheduler",
"Merge many sigmas by average",
"Merge sigmas by average", "Merge sigmas by average",
"Merge sigmas gradually", "Merge sigmas gradually",
"Multiply sigmas", "Multiply sigmas",
@ -2526,6 +2506,10 @@
"LandscapeDir", "LandscapeDir",
"MakeupStylesDir", "MakeupStylesDir",
"OptimalCrop", "OptimalCrop",
"PhotomontageA",
"PhotomontageB",
"PhotomontageC",
"PostSamplerCrop",
"SDXLEmptyLatent", "SDXLEmptyLatent",
"SaveWithMetaData", "SaveWithMetaData",
"SimplePrompts", "SimplePrompts",
@ -3412,6 +3396,8 @@
], ],
"https://github.com/Stability-AI/ComfyUI-SAI_API": [ "https://github.com/Stability-AI/ComfyUI-SAI_API": [
[ [
"Stability Control Skech",
"Stability Control Structure",
"Stability Creative Upscale", "Stability Creative Upscale",
"Stability Image Core", "Stability Image Core",
"Stability Inpainting", "Stability Inpainting",
@ -3831,6 +3817,22 @@
"title_aux": "tri3d-comfyui-nodes" "title_aux": "tri3d-comfyui-nodes"
} }
], ],
"https://github.com/TaiTair/comfyui-simswap": [
[
"Simswap",
"SimswapBuildFaceModel",
"SimswapFaceSwapOpt",
"SimswapImageDublicator",
"SimswapLoadFaceModel",
"SimswapMaskHelper",
"SimswapOptions",
"SimswapRestoreFace",
"SimswapSaveFaceModel"
],
{
"title_aux": "Simswap Node for ComfyUI"
}
],
"https://github.com/Taremin/comfyui-prompt-extranetworks": [ "https://github.com/Taremin/comfyui-prompt-extranetworks": [
[ [
"PromptExtraNetworks" "PromptExtraNetworks"
@ -3854,9 +3856,11 @@
"https://github.com/TeaCrab/ComfyUI-TeaNodes": [ "https://github.com/TeaCrab/ComfyUI-TeaNodes": [
[ [
"TC_ColorFill", "TC_ColorFill",
"TC_CropTo",
"TC_EqualizeCLAHE", "TC_EqualizeCLAHE",
"TC_ImageResize", "TC_ImageResize",
"TC_ImageScale", "TC_ImageScale",
"TC_KorniaGamma",
"TC_RandomColorFill", "TC_RandomColorFill",
"TC_SizeApproximation" "TC_SizeApproximation"
], ],
@ -3878,12 +3882,14 @@
], ],
"https://github.com/TencentQQGYLab/ComfyUI-ELLA": [ "https://github.com/TencentQQGYLab/ComfyUI-ELLA": [
[ [
"CombineClipEllaEmbeds",
"ConcatConditionEllaEmbeds", "ConcatConditionEllaEmbeds",
"ConditionToEllaEmbeds", "ConditionToEllaEmbeds",
"ELLALoader", "ELLALoader",
"EllaAdvancedApply",
"EllaApply", "EllaApply",
"EllaCombineEmbeds", "EllaCombineEmbeds",
"EllaEncode",
"SetEllaTimesteps",
"T5TextEncode #ELLA", "T5TextEncode #ELLA",
"T5TextEncoderLoader #ELLA" "T5TextEncoderLoader #ELLA"
], ],
@ -4987,6 +4993,18 @@
"title_aux": "StableCascadeResizer" "title_aux": "StableCascadeResizer"
} }
], ],
"https://github.com/ansonkao/comfyui-geometry": [
[
"TransformTemplateOntoFaceMask"
],
{
"author": "Anson Kao",
"description": "A small collection of custom nodes for use with ComfyUI, by Discopixel",
"nickname": "ComfyUI Discopixel",
"title": "ComfyUI Discopixel",
"title_aux": "comfyui-geometry"
}
],
"https://github.com/antrobot1234/antrobots-comfyUI-nodepack": [ "https://github.com/antrobot1234/antrobots-comfyUI-nodepack": [
[ [
"composite", "composite",
@ -5221,6 +5239,7 @@
[ [
"BlehBlockOps", "BlehBlockOps",
"BlehDeepShrink", "BlehDeepShrink",
"BlehDisableNoise",
"BlehDiscardPenultimateSigma", "BlehDiscardPenultimateSigma",
"BlehForceSeedSampler", "BlehForceSeedSampler",
"BlehHyperTile", "BlehHyperTile",
@ -5228,6 +5247,7 @@
"BlehLatentOps", "BlehLatentOps",
"BlehLatentScaleBy", "BlehLatentScaleBy",
"BlehModelPatchConditional", "BlehModelPatchConditional",
"BlehPlug",
"BlehRefinerAfter" "BlehRefinerAfter"
], ],
{ {
@ -5754,12 +5774,18 @@
], ],
"https://github.com/chaojie/ComfyUI-LaVIT": [ "https://github.com/chaojie/ComfyUI-LaVIT": [
[ [
"VHS_FILENAMES_STRING_LaVIT",
"VideoLaVITI2I", "VideoLaVITI2I",
"VideoLaVITI2V", "VideoLaVITI2V",
"VideoLaVITI2VLong", "VideoLaVITI2VLong",
"VideoLaVITLoader", "VideoLaVITLoader",
"VideoLaVITT2V", "VideoLaVITT2V",
"VideoLaVITT2VLong" "VideoLaVITT2VLong",
"VideoLaVITUnderstandingImage",
"VideoLaVITUnderstandingLoader",
"VideoLaVITUnderstandingVideo",
"VideoLaVITVideoDetokenizerLoader",
"VideoLaVITVideoReconstruction"
], ],
{ {
"title_aux": "ComfyUI-LaVIT" "title_aux": "ComfyUI-LaVIT"
@ -5907,6 +5933,17 @@
"title_aux": "ComfyUI-RAFT" "title_aux": "ComfyUI-RAFT"
} }
], ],
"https://github.com/chaojie/ComfyUI-SimDA": [
[
"SimDALoader",
"SimDARun",
"SimDATrain",
"VHS_FILENAMES_STRING_SimDA"
],
{
"title_aux": "ComfyUI-SimDA"
}
],
"https://github.com/chaojie/ComfyUI-Trajectory": [ "https://github.com/chaojie/ComfyUI-Trajectory": [
[ [
"Trajectory_Canvas_Tab" "Trajectory_Canvas_Tab"
@ -6702,6 +6739,7 @@
"MaskFlip+", "MaskFlip+",
"MaskFromBatch+", "MaskFromBatch+",
"MaskFromColor+", "MaskFromColor+",
"MaskFromList+",
"MaskFromRGBCMYBW+", "MaskFromRGBCMYBW+",
"MaskFromSegmentation+", "MaskFromSegmentation+",
"MaskPreview+", "MaskPreview+",
@ -6812,12 +6850,28 @@
"title_aux": "KSampler GPU" "title_aux": "KSampler GPU"
} }
], ],
"https://github.com/daxcay/ComfyUI-DRMN": [
[
"DRMN_CaptionVisualizer",
"DRMN_TXTFileSaver",
"DRMN_TagManipulatorByImageNames"
],
{
"author": "Daxton Caylor",
"description": "Data Research And Manipulators Nodes for Model Trainers, Artists, Designers and Animators.",
"nickname": "ComfyUI-DRMN",
"title": "ComfyUI-DRMN",
"title_aux": "ComfyUI-DRMN"
}
],
"https://github.com/daxcay/ComfyUI-JDCN": [ "https://github.com/daxcay/ComfyUI-JDCN": [
[ [
"JDCN_AnyFileList", "JDCN_AnyFileList",
"JDCN_AnyFileListHelper", "JDCN_AnyFileListHelper",
"JDCN_AnyFileListRandom", "JDCN_AnyFileListRandom",
"JDCN_AnyFileSelector", "JDCN_AnyFileSelector",
"JDCN_BatchCounter",
"JDCN_BatchImageLoadFromDir",
"JDCN_BatchImageLoadFromList", "JDCN_BatchImageLoadFromList",
"JDCN_BatchLatentLoadFromDir", "JDCN_BatchLatentLoadFromDir",
"JDCN_BatchLatentLoadFromList", "JDCN_BatchLatentLoadFromList",
@ -6959,6 +7013,18 @@
"title_aux": "ComfyUI-Vextra-Nodes" "title_aux": "ComfyUI-Vextra-Nodes"
} }
], ],
"https://github.com/discopixel-studio/comfyui-discopixel": [
[
"TransformTemplateOntoFaceMask"
],
{
"author": "Anson Kao",
"description": "A small collection of custom nodes for use with ComfyUI, by Discopixel",
"nickname": "ComfyUI Discopixel",
"title": "ComfyUI Discopixel",
"title_aux": "ComfyUI Discopixel Nodes"
}
],
"https://github.com/discus0434/comfyui-caching-embeddings": [ "https://github.com/discus0434/comfyui-caching-embeddings": [
[ [
"CachingCLIPTextEncode" "CachingCLIPTextEncode"
@ -7396,6 +7462,14 @@
"title_aux": "As_ComfyUI_CustomNodes" "title_aux": "As_ComfyUI_CustomNodes"
} }
], ],
"https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": [
[
"HyperSDXL1StepUnetScheduler"
],
{
"title_aux": "Simswap Node for ComfyUI (ByteDance)"
}
],
"https://github.com/forever22777/comfyui-self-guidance": [ "https://github.com/forever22777/comfyui-self-guidance": [
[ [
"CLIPConditioning", "CLIPConditioning",
@ -7457,7 +7531,9 @@
], ],
"https://github.com/frankchieng/ComfyUI_MagicClothing": [ "https://github.com/frankchieng/ComfyUI_MagicClothing": [
[ [
"MagicClothing_Generate" "MagicClothing_Animatediff",
"MagicClothing_Generate",
"MagicClothing_Inpainting"
], ],
{ {
"title_aux": "ComfyUI_MagicClothing" "title_aux": "ComfyUI_MagicClothing"
@ -7677,9 +7753,11 @@
"ACE_AudioLoad", "ACE_AudioLoad",
"ACE_AudioPlay", "ACE_AudioPlay",
"ACE_AudioSave", "ACE_AudioSave",
"ACE_Expression_Eval",
"ACE_Float", "ACE_Float",
"ACE_ImageColorFix", "ACE_ImageColorFix",
"ACE_ImageConstrain", "ACE_ImageConstrain",
"ACE_ImageGetSize",
"ACE_ImageLoadFromCloud", "ACE_ImageLoadFromCloud",
"ACE_ImageQA", "ACE_ImageQA",
"ACE_ImageRemoveBackground", "ACE_ImageRemoveBackground",
@ -7745,6 +7823,7 @@
"custom_persona", "custom_persona",
"ebd_tool", "ebd_tool",
"end_dialog", "end_dialog",
"end_workflow",
"file_combine", "file_combine",
"file_combine_plus", "file_combine_plus",
"google_tool", "google_tool",
@ -7752,6 +7831,7 @@
"load_file", "load_file",
"load_persona", "load_persona",
"start_dialog", "start_dialog",
"start_workflow",
"time_tool", "time_tool",
"tool_combine", "tool_combine",
"tool_combine_plus", "tool_combine_plus",
@ -8061,13 +8141,106 @@
"title_aux": "ComfyUI_rotate_image" "title_aux": "ComfyUI_rotate_image"
} }
], ],
"https://github.com/jamesWalker55/comfyui-p2ldgan": [
[
"P2LDGAN"
],
{
"title_aux": "ComfyUI - P2LDGAN Node"
}
],
"https://github.com/jamesWalker55/comfyui-various": [ "https://github.com/jamesWalker55/comfyui-various": [
[], [
"BatchLoadImage",
"BatchSaveImage",
"GroupInfoExtractFloat",
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
"JWImageExtractFromBatch",
"JWImageFlip",
"JWImageLevels",
"JWImageLoadRGB",
"JWImageLoadRGBA",
"JWImageLoadRGBIfExists",
"JWImageMix",
"JWImageResize",
"JWImageResizeByFactor",
"JWImageResizeByLongerSide",
"JWImageResizeByShorterSide",
"JWImageResizeToSquare",
"JWImageSaturation",
"JWImageSaveToPath",
"JWImageSequenceExtractFromBatch",
"JWImageStackChannels",
"JWInfoHashExtractFloat",
"JWInfoHashExtractInteger",
"JWInfoHashExtractString",
"JWInfoHashFromInfoHashList",
"JWInfoHashFromRangedInfo",
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
"JWMaskLikeImageSize",
"JWMaskResize",
"JWMaskSequenceApplyToLatent",
"JWMaskSequenceFromMask",
"JWMaskSequenceJoin",
"JWPrintFloat",
"JWPrintImage",
"JWPrintInteger",
"JWPrintLatent",
"JWPrintMask",
"JWPrintString",
"JWRangedInfoCalculateSubBatch",
"JWReferenceOnly",
"JWSaveImageSequence",
"JWStringListCLIPEncode",
"JWStringListFromString",
"JWStringListFromStrings",
"JWStringListJoin",
"JWStringListRepeat",
"JWStringListToFormatedString",
"JWStringListToString",
"JWUncropCrop",
"JWUncropNewRect",
"JWUncropUncrop",
"JamesLoadImageGroup",
"RAFTEstimate",
"RAFTFlowToImage",
"RAFTLoadFlowFromEXRChannels",
"RCReceiveFloat",
"RCReceiveFloatList",
"RCReceiveInt",
"RCReceiveIntList",
"RCReceiveLatent",
"RCSendLatent"
],
{ {
"nodename_pattern": "^JW", "nodename_pattern": "^JW",
"title_aux": "Various ComfyUI Nodes by Type" "title_aux": "Various ComfyUI Nodes by Type"
} }
], ],
"https://github.com/jeffy5/comfyui-faceless-node": [
[
"FacelessFaceRestore",
"FacelessFaceSwap",
"FacelessLoadFrames",
"FacelessLoadVideo",
"FacelessSaveVideo",
"FacelessVideoFaceRestore",
"FacelessVideoFaceSwap"
],
{
"title_aux": "comfyui-fb-utils"
}
],
"https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [
[ [
"StreamDiffusion_Loader", "StreamDiffusion_Loader",
@ -8207,6 +8380,12 @@
"SDT_FasterWhisperTranscribe", "SDT_FasterWhisperTranscribe",
"SDT_GriffinLim", "SDT_GriffinLim",
"SDT_JoinAudio", "SDT_JoinAudio",
"SDT_KotobaWhisperListSegments",
"SDT_KotobaWhisperLoaderLong",
"SDT_KotobaWhisperLoaderShort",
"SDT_KotobaWhisperSegmentProperty",
"SDT_KotobaWhisperTranscribeLong",
"SDT_KotobaWhisperTranscribeShort",
"SDT_LFCC", "SDT_LFCC",
"SDT_LoadAudio", "SDT_LoadAudio",
"SDT_LoadAudios", "SDT_LoadAudios",
@ -8294,6 +8473,14 @@
"title_aux": "ComfyUI Load and Save file to S3" "title_aux": "ComfyUI Load and Save file to S3"
} }
], ],
"https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": [
[
"ZeST: Grayout Subject"
],
{
"title_aux": "ComfyUI-ZeroShot-MTrans"
}
],
"https://github.com/kenjiqq/qq-nodes-comfyui": [ "https://github.com/kenjiqq/qq-nodes-comfyui": [
[ [
"Any List", "Any List",
@ -8401,6 +8588,8 @@
], ],
"https://github.com/kijai/ComfyUI-ELLA-wrapper": [ "https://github.com/kijai/ComfyUI-ELLA-wrapper": [
[ [
"diffusers_model_loader",
"diffusers_sampler",
"ella_model_loader", "ella_model_loader",
"ella_sampler", "ella_sampler",
"ella_t5_embeds" "ella_t5_embeds"
@ -8462,6 +8651,7 @@
"GrowMaskWithBlur", "GrowMaskWithBlur",
"INTConstant", "INTConstant",
"ImageAndMaskPreview", "ImageAndMaskPreview",
"ImageBatchMulti",
"ImageBatchRepeatInterleaving", "ImageBatchRepeatInterleaving",
"ImageBatchTestPattern", "ImageBatchTestPattern",
"ImageConcanate", "ImageConcanate",
@ -8470,6 +8660,7 @@
"ImageGridComposite3x3", "ImageGridComposite3x3",
"ImageNormalize_Neg1_To_1", "ImageNormalize_Neg1_To_1",
"ImagePadForOutpaintMasked", "ImagePadForOutpaintMasked",
"ImagePass",
"ImageTransformByNormalizedAmplitude", "ImageTransformByNormalizedAmplitude",
"ImageUpscaleWithModelBatched", "ImageUpscaleWithModelBatched",
"InjectNoiseToLatent", "InjectNoiseToLatent",
@ -8478,6 +8669,7 @@
"Intrinsic_lora_sampling", "Intrinsic_lora_sampling",
"JoinStrings", "JoinStrings",
"LoadResAdapterNormalization", "LoadResAdapterNormalization",
"MaskBatchMulti",
"MaskOrImageToWeight", "MaskOrImageToWeight",
"NormalizedAmplitudeToMask", "NormalizedAmplitudeToMask",
"OffsetMask", "OffsetMask",
@ -8910,6 +9102,18 @@
"title_aux": "comfyui-llm-assistant" "title_aux": "comfyui-llm-assistant"
} }
], ],
"https://github.com/longgui0318/comfyui-magic-clothing": [
[
"Add Magic Clothing Attention",
"Change Pixel Value Normalization",
"LOAD OMS",
"Load Magic Clothing Model",
"RUN OMS"
],
{
"title_aux": "comfyui-magic-clothing"
}
],
"https://github.com/longgui0318/comfyui-mask-util": [ "https://github.com/longgui0318/comfyui-mask-util": [
[ [
"Image Adaptive Crop M&R", "Image Adaptive Crop M&R",
@ -8929,11 +9133,9 @@
[ [
"Add Magic Clothing Attention", "Add Magic Clothing Attention",
"Change Pixel Value Normalization", "Change Pixel Value Normalization",
"InjectTensorHashLog",
"LOAD OMS", "LOAD OMS",
"Load Magic Clothing Model", "Load Magic Clothing Model",
"RUN OMS", "RUN OMS"
"VAE Mode Choose"
], ],
{ {
"title_aux": "comfyui-oms-diffusion" "title_aux": "comfyui-oms-diffusion"
@ -8947,6 +9149,15 @@
"title_aux": "Wildcards" "title_aux": "Wildcards"
} }
], ],
"https://github.com/lquesada/ComfyUI-Prompt-Combinator": [
[
"PromptCombinator",
"PromptCombinatorMerger"
],
{
"title_aux": "ComfyUI-Prompt-Combinator"
}
],
"https://github.com/lrzjason/ComfyUIJasonNode/raw/main/SDXLMixSampler.py": [ "https://github.com/lrzjason/ComfyUIJasonNode/raw/main/SDXLMixSampler.py": [
[ [
"SDXLMixSampler" "SDXLMixSampler"
@ -9983,6 +10194,14 @@
"title_aux": "A8R8 ComfyUI Nodes" "title_aux": "A8R8 ComfyUI Nodes"
} }
], ],
"https://github.com/randjtw/advance-aesthetic-score": [
[
"Adv_Scoring"
],
{
"title_aux": "advance-aesthetic-score"
}
],
"https://github.com/ratulrafsan/Comfyui-SAL-VTON": [ "https://github.com/ratulrafsan/Comfyui-SAL-VTON": [
[ [
"SALVTON_Apply", "SALVTON_Apply",
@ -10444,15 +10663,20 @@
"AV_CheckpointMerge", "AV_CheckpointMerge",
"AV_CheckpointModelsToParametersPipe", "AV_CheckpointModelsToParametersPipe",
"AV_CheckpointSave", "AV_CheckpointSave",
"AV_ClaudeApi",
"AV_ControlNetEfficientLoader", "AV_ControlNetEfficientLoader",
"AV_ControlNetEfficientLoaderAdvanced", "AV_ControlNetEfficientLoaderAdvanced",
"AV_ControlNetEfficientStacker", "AV_ControlNetEfficientStacker",
"AV_ControlNetEfficientStackerSimple", "AV_ControlNetEfficientStackerSimple",
"AV_ControlNetLoader", "AV_ControlNetLoader",
"AV_ControlNetPreprocessor", "AV_ControlNetPreprocessor",
"AV_LLMApiConfig",
"AV_LLMChat",
"AV_LLMMessage",
"AV_LoraListLoader", "AV_LoraListLoader",
"AV_LoraListStacker", "AV_LoraListStacker",
"AV_LoraLoader", "AV_LoraLoader",
"AV_OpenAIApi",
"AV_ParametersPipeToCheckpointModels", "AV_ParametersPipeToCheckpointModels",
"AV_ParametersPipeToPrompts", "AV_ParametersPipeToPrompts",
"AV_PromptsToParametersPipe", "AV_PromptsToParametersPipe",
@ -10462,6 +10686,7 @@
"BLIPCaption", "BLIPCaption",
"BLIPLoader", "BLIPLoader",
"BooleanPrimitive", "BooleanPrimitive",
"CheckpointNameSelector",
"ColorBlend", "ColorBlend",
"ColorCorrect", "ColorCorrect",
"DeepDanbooruCaption", "DeepDanbooruCaption",
@ -10537,7 +10762,6 @@
], ],
"https://github.com/smthemex/ComfyUI_ParlerTTS": [ "https://github.com/smthemex/ComfyUI_ParlerTTS": [
[ [
"ModelDownload",
"PromptToAudio" "PromptToAudio"
], ],
{ {
@ -10632,6 +10856,7 @@
"LatentStats", "LatentStats",
"NormalMapSimple", "NormalMapSimple",
"OffsetLatentImage", "OffsetLatentImage",
"PrintSigmas",
"RelightSimple", "RelightSimple",
"RemapRange", "RemapRange",
"ShuffleChannels", "ShuffleChannels",
@ -10775,7 +11000,8 @@
], ],
"https://github.com/sugarkwork/comfyui_tag_fillter": [ "https://github.com/sugarkwork/comfyui_tag_fillter": [
[ [
"TagFilter" "TagFilter",
"TagRemover"
], ],
{ {
"title_aux": "comfyui_tag_filter" "title_aux": "comfyui_tag_filter"
@ -11129,6 +11355,16 @@
"title_aux": "SDXL Prompt Styler" "title_aux": "SDXL Prompt Styler"
} }
], ],
"https://github.com/ty0x2333/ComfyUI-Dev-Utils": [
[
"TY_ExecutionTime",
"TY_UploadAnything",
"TY_UrlDownload"
],
{
"title_aux": "ComfyUI-Dev-Utils"
}
],
"https://github.com/uarefans/ComfyUI-Fans": [ "https://github.com/uarefans/ComfyUI-Fans": [
[ [
"Fans Prompt Styler Negative", "Fans Prompt Styler Negative",
@ -11496,6 +11732,7 @@
"easy boolean", "easy boolean",
"easy cascadeKSampler", "easy cascadeKSampler",
"easy cascadeLoader", "easy cascadeLoader",
"easy ckptNames",
"easy cleanGpuUsed", "easy cleanGpuUsed",
"easy clearCacheAll", "easy clearCacheAll",
"easy clearCacheKey", "easy clearCacheKey",
@ -11503,6 +11740,7 @@
"easy compare", "easy compare",
"easy controlnetLoader", "easy controlnetLoader",
"easy controlnetLoaderADV", "easy controlnetLoaderADV",
"easy controlnetNames",
"easy convertAnything", "easy convertAnything",
"easy detailerFix", "easy detailerFix",
"easy dynamiCrafterLoader", "easy dynamiCrafterLoader",
@ -11513,9 +11751,11 @@
"easy fullkSampler", "easy fullkSampler",
"easy globalSeed", "easy globalSeed",
"easy hiresFix", "easy hiresFix",
"easy humanParsing", "easy humanSegmentation",
"easy if", "easy if",
"easy imageChooser", "easy imageChooser",
"easy imageColorMatch",
"easy imageCount",
"easy imageInsetCrop", "easy imageInsetCrop",
"easy imageInterrogator", "easy imageInterrogator",
"easy imagePixelPerfect", "easy imagePixelPerfect",
@ -11530,7 +11770,9 @@
"easy imageSizeBySide", "easy imageSizeBySide",
"easy imageSplitList", "easy imageSplitList",
"easy imageSwitch", "easy imageSwitch",
"easy imageToBase64",
"easy imageToMask", "easy imageToMask",
"easy imagesSplitImage",
"easy injectNoiseToLatent", "easy injectNoiseToLatent",
"easy instantIDApply", "easy instantIDApply",
"easy instantIDApplyADV", "easy instantIDApplyADV",
@ -11552,6 +11794,7 @@
"easy kSamplerTiled", "easy kSamplerTiled",
"easy latentCompositeMaskedWithCond", "easy latentCompositeMaskedWithCond",
"easy latentNoisy", "easy latentNoisy",
"easy loadImageBase64",
"easy loraStack", "easy loraStack",
"easy negative", "easy negative",
"easy pipeBatchIndex", "easy pipeBatchIndex",
@ -11587,9 +11830,11 @@
"easy showTensorShape", "easy showTensorShape",
"easy stableDiffusion3API", "easy stableDiffusion3API",
"easy string", "easy string",
"easy styleAlignedBatchAlign",
"easy stylesSelector", "easy stylesSelector",
"easy sv3dLoader", "easy sv3dLoader",
"easy svdLoader", "easy svdLoader",
"easy textSwitch",
"easy ultralyticsDetectorPipe", "easy ultralyticsDetectorPipe",
"easy unSampler", "easy unSampler",
"easy wildcards", "easy wildcards",
@ -11697,7 +11942,7 @@
], ],
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [ "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
[ [
"DepthAnythingTensorrtNode" "DepthAnythingTensorrt"
], ],
{ {
"title_aux": "ComfyUI Depth Anything TensorRT" "title_aux": "ComfyUI Depth Anything TensorRT"
@ -11809,6 +12054,7 @@
[ [
"ConcatText", "ConcatText",
"ImageBatchOneOrMore", "ImageBatchOneOrMore",
"ImageConcanate",
"IntAndIntAddOffsetLiteral", "IntAndIntAddOffsetLiteral",
"LoadImageWithSwitch", "LoadImageWithSwitch",
"ModifyTextGender" "ModifyTextGender"

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ sys.path.append(glob_path)
import cm_global import cm_global
from manager_util import * from manager_util import *
version = [2, 22, 1] version = [2, 23, 1]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '') version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
@ -809,6 +809,51 @@ def gitclone_update(files, instant_execution=False, skip_script=False, msg_prefi
return True return True
def update_path(repo_path, instant_execution=False):
if not os.path.exists(os.path.join(repo_path, '.git')):
return "fail"
# version check
repo = git.Repo(repo_path)
if repo.head.is_detached:
switch_to_default_branch(repo)
current_branch = repo.active_branch
branch_name = current_branch.name
if current_branch.tracking_branch() is None:
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
remote_name = 'origin'
else:
remote_name = current_branch.tracking_branch().remote_name
remote = repo.remote(name=remote_name)
try:
remote.fetch()
except Exception as e:
if 'detected dubious' in str(e):
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
safedir_path = comfy_path.replace('\\', '/')
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
try:
remote.fetch()
except Exception:
print(f"\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n"
f"-----------------------------------------------------------------------------------------\n"
f'git config --global --add safe.directory "{safedir_path}"\n'
f"-----------------------------------------------------------------------------------------\n")
commit_hash = repo.head.commit.hexsha
remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha
if commit_hash != remote_commit_hash:
git_pull(repo_path)
execute_install_script("ComfyUI", repo_path, instant_execution=instant_execution)
return "updated"
else:
return "skipped"
def lookup_customnode_by_url(data, target): def lookup_customnode_by_url(data, target):
for x in data['custom_nodes']: for x in data['custom_nodes']:
if target in x['files']: if target in x['files']:

View File

@ -442,12 +442,10 @@ async def fetch_customnode_list(request):
json_obj = await populate_github_stats(json_obj, "github-stats.json") json_obj = await populate_github_stats(json_obj, "github-stats.json")
def is_ignored_notice(code): def is_ignored_notice(code):
global version
if code is not None and code.startswith('#NOTICE_'): if code is not None and code.startswith('#NOTICE_'):
try: try:
notice_version = [int(x) for x in code[8:].split('.')] notice_version = [int(x) for x in code[8:].split('.')]
return notice_version[0] < version[0] or (notice_version[0] == version[0] and notice_version[1] <= version[1]) return notice_version[0] < core.version[0] or (notice_version[0] == core.version[0] and notice_version[1] <= core.version[1])
except Exception: except Exception:
return False return False
else: else:
@ -864,50 +862,13 @@ async def update_comfyui(request):
try: try:
repo_path = os.path.dirname(folder_paths.__file__) repo_path = os.path.dirname(folder_paths.__file__)
res = core.update_path(repo_path)
if not os.path.exists(os.path.join(repo_path, '.git')): if res == "fail":
print(f"ComfyUI update fail: The installed ComfyUI does not have a Git repository.") print(f"ComfyUI update fail: The installed ComfyUI does not have a Git repository.")
return web.Response(status=400) return web.Response(status=400)
elif res == "updated":
# version check
repo = git.Repo(repo_path)
if repo.head.is_detached:
core.switch_to_default_branch(repo)
current_branch = repo.active_branch
branch_name = current_branch.name
if current_branch.tracking_branch() is None:
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
remote_name = 'origin'
else:
remote_name = current_branch.tracking_branch().remote_name
remote = repo.remote(name=remote_name)
try:
remote.fetch()
except Exception as e:
if 'detected dubious' in str(e):
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
safedir_path = core.comfy_path.replace('\\', '/')
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
try:
remote.fetch()
except Exception:
print(f"\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n"
f"-----------------------------------------------------------------------------------------\n"
f'git config --global --add safe.directory "{safedir_path}"\n'
f"-----------------------------------------------------------------------------------------\n")
commit_hash = repo.head.commit.hexsha
remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha
if commit_hash != remote_commit_hash:
core.git_pull(repo_path)
core.execute_install_script("ComfyUI", repo_path)
return web.Response(status=201) return web.Response(status=201)
else: else: # skipped
return web.Response(status=200) return web.Response(status=200)
except Exception as e: except Exception as e:
print(f"ComfyUI update fail: {e}", file=sys.stderr) print(f"ComfyUI update fail: {e}", file=sys.stderr)

View File

@ -925,7 +925,7 @@ class ManagerMenuDialog extends ComfyDialog {
}); });
let dbl_click_policy_combo = document.createElement("select"); let dbl_click_policy_combo = document.createElement("select");
dbl_click_policy_combo.setAttribute("title", "When loading the workflow, configure which version of the component to use."); dbl_click_policy_combo.setAttribute("title", "Sets the behavior when you double-click the title area of a node.");
dbl_click_policy_combo.className = "cm-menu-combo"; dbl_click_policy_combo.className = "cm-menu-combo";
dbl_click_policy_combo.appendChild($el('option', { value: 'none', text: 'Double-Click: None' }, [])); dbl_click_policy_combo.appendChild($el('option', { value: 'none', text: 'Double-Click: None' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-all', text: 'Double-Click: Copy All Connections' }, [])); dbl_click_policy_combo.appendChild($el('option', { value: 'copy-all', text: 'Double-Click: Copy All Connections' }, []));

View File

@ -481,10 +481,6 @@ export class OpenArtShareDialog extends ComfyDialog {
if (this.uploadImagesInput.files.length === 0) { if (this.uploadImagesInput.files.length === 0) {
throw new Error("No thumbnail uploaded"); throw new Error("No thumbnail uploaded");
} }
if (this.uploadImagesInput.files.length === 0) {
throw new Error("No thumbnail uploaded");
}
} }
} }

View File

@ -1778,7 +1778,17 @@
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors" "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors"
}, },
{ {
"name": "ip-adapter_sd15_light.safetensors", "name": "ip-adapter_sd15_light_v11.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/h94/IP-Adapter",
"filename": "ip-adapter_sd15_light_v11.bin",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin"
},
{
"name": "ip-adapter_sd15_light.safetensors [DEPRECATED]",
"type": "IP-Adapter", "type": "IP-Adapter",
"base": "SD1.5", "base": "SD1.5",
"save_path": "ipadapter", "save_path": "ipadapter",
@ -1787,16 +1797,6 @@
"filename": "ip-adapter_sd15_light.safetensors", "filename": "ip-adapter_sd15_light.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors" "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors"
}, },
{
"name": "ip-adapter_sd15_vit-G.safetensors",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/h94/IP-Adapter",
"filename": "ip-adapter_sd15_vit-G.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors"
},
{ {
"name": "ip-adapter-plus_sd15.safetensors", "name": "ip-adapter-plus_sd15.safetensors",
"type": "IP-Adapter", "type": "IP-Adapter",
@ -1827,6 +1827,16 @@
"filename": "ip-adapter-full-face_sd15.safetensors", "filename": "ip-adapter-full-face_sd15.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors" "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors"
}, },
{
"name": "ip-adapter_sd15_vit-G.safetensors",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/h94/IP-Adapter",
"filename": "ip-adapter_sd15_vit-G.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors"
},
{ {
"name": "ip-adapter-faceid_sd15.bin", "name": "ip-adapter-faceid_sd15.bin",
"type": "IP-Adapter", "type": "IP-Adapter",
@ -1838,7 +1848,17 @@
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin"
}, },
{ {
"name": "ip-adapter-faceid-plus_sd15.bin", "name": "ip-adapter-faceid-plusv2_sd15.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Plus V2 Model (SD1.5) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-plusv2_sd15.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin"
},
{
"name": "ip-adapter-faceid-plus_sd15.bin [DEPRECATED]",
"type": "IP-Adapter", "type": "IP-Adapter",
"base": "SD1.5", "base": "SD1.5",
"save_path": "ipadapter", "save_path": "ipadapter",
@ -1848,7 +1868,17 @@
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin"
}, },
{ {
"name": "ip-adapter-faceid-portrait_sd15.bin", "name": "ip-adapter-faceid-portrait-v11_sd15.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait V11 Model (SD1.5) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait-v11_sd15.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin"
},
{
"name": "ip-adapter-faceid-portrait_sd15.bin [DEPRECATED]",
"type": "IP-Adapter", "type": "IP-Adapter",
"base": "SD1.5", "base": "SD1.5",
"save_path": "ipadapter", "save_path": "ipadapter",
@ -1877,6 +1907,26 @@
"filename": "ip-adapter-faceid-plusv2_sdxl.bin", "filename": "ip-adapter-faceid-plusv2_sdxl.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin"
}, },
{
"name": "ip-adapter-faceid-portrait_sdxl.bin",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait Model (SDXL) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait_sdxl.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin"
},
{
"name": "ip-adapter-faceid-portrait_sdxl_unnorm.bin",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait Model (SDXL/unnorm) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait_sdxl_unnorm.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl_unnorm.bin"
},
{ {
"name": "ip-adapter-faceid_sd15_lora.safetensors", "name": "ip-adapter-faceid_sd15_lora.safetensors",
"type": "lora", "type": "lora",
@ -1888,7 +1938,7 @@
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors"
}, },
{ {
"name": "ip-adapter-faceid-plus_sd15_lora.safetensors", "name": "ip-adapter-faceid-plus_sd15_lora.safetensors [DEPRECATED]",
"type": "lora", "type": "lora",
"base": "SD1.5", "base": "SD1.5",
"save_path": "loras/ipadapter", "save_path": "loras/ipadapter",
@ -1897,16 +1947,6 @@
"filename": "ip-adapter-faceid-plus_sd15_lora.safetensors", "filename": "ip-adapter-faceid-plus_sd15_lora.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors"
}, },
{
"name": "ip-adapter-faceid-plusv2_sd15.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID-Plus V2 Model (SD1.5) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-plusv2_sd15.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin"
},
{ {
"name": "ip-adapter-faceid-plusv2_sd15_lora.safetensors", "name": "ip-adapter-faceid-plusv2_sd15_lora.safetensors",
"type": "lora", "type": "lora",
@ -1937,6 +1977,7 @@
"filename": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors", "filename": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors" "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors"
}, },
{ {
"name": "ip-adapter_sdxl.safetensors", "name": "ip-adapter_sdxl.safetensors",
"type": "IP-Adapter", "type": "IP-Adapter",
@ -1978,6 +2019,27 @@
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors" "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors"
}, },
{
"name": "ip_plus_composition_sd15.safetensors",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/ostris/ip-composition-adapter",
"filename": "ip_plus_composition_sd15.safetensors",
"url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors"
},
{
"name": "ip_plus_composition_sdxl.safetensors",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/ostris/ip-composition-adapter",
"filename": "ip_plus_composition_sdxl.safetensors",
"url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors"
},
{ {
"name": "pfg-novel-n10.pt", "name": "pfg-novel-n10.pt",
"type": "PFG", "type": "PFG",

View File

@ -11,6 +11,16 @@
{
"author": "Video3DGenResearch",
"title": "ComfyUI Batch Input Node",
"reference": "https://github.com/Video3DGenResearch/comfyui-batch-input-node",
"files": [
"https://github.com/Video3DGenResearch/comfyui-batch-input-node"
],
"install_type": "git-clone",
"description": "Nodes:BatchInputText"
},
{ {
"author": "kijai", "author": "kijai",
"title": "ComfyUI nodes to use DeepSeek-VL", "title": "ComfyUI nodes to use DeepSeek-VL",
@ -181,16 +191,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Aspect Size. Drift Johnsons Custom nodes for ComfyUI" "description": "Nodes:Aspect Size. Drift Johnsons Custom nodes for ComfyUI"
}, },
{
"author": "birnam",
"title": "Gen Data Tester",
"reference": "https://github.com/birnam/ComfyUI-GenData-Pack",
"files": [
"https://github.com/birnam/ComfyUI-GenData-Pack"
],
"install_type": "git-clone",
"description": "This answers the itch for being able to easily paste CivitAI.com generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints."
},
{ {
"author": "stavsap", "author": "stavsap",
"title": "ComfyUI Ollama [WIP]", "title": "ComfyUI Ollama [WIP]",
@ -571,16 +571,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "I was looking for a node to put in place to ensure my prompt etc where going as expected before the rest of the flow executed. To end the session, I just return the input image as None (see expected error). Recommend using it alongside PreviewImage, then output to the rest of the flow and Save Image." "description": "I was looking for a node to put in place to ensure my prompt etc where going as expected before the rest of the flow executed. To end the session, I just return the input image as None (see expected error). Recommend using it alongside PreviewImage, then output to the rest of the flow and Save Image."
}, },
{
"author": "11cafe",
"title": "11cafe/ComfyUI Model Manager [WIP]",
"reference": "https://github.com/11cafe/model-manager-comfyui",
"files": [
"https://github.com/11cafe/model-manager-comfyui"
],
"install_type": "git-clone",
"description": "This answers the itch for being able to easily paste [a/CivitAI.com](CivitAI.com) generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints."
},
{ {
"author": "birnam", "author": "birnam",
"title": "Gen Data Tester [WIP]", "title": "Gen Data Tester [WIP]",
@ -589,11 +579,11 @@
"https://github.com/birnam/ComfyUI-GenData-Pack" "https://github.com/birnam/ComfyUI-GenData-Pack"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "This answers the itch for being able to easily paste [a/CivitAI.com](CivitAI.com) generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints." "description": "This answers the itch for being able to easily paste [a/CivitAI.com](https://civitai.com/) generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints."
}, },
{ {
"author": "ZHO-ZHO-ZHO", "author": "ZHO-ZHO-ZHO",
"title": "ComfyUI-AnyTextWIP", "title": "ComfyUI-AnyText [WIP]",
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText", "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText",
"files": [ "files": [
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText" "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText"

View File

@ -10,6 +10,16 @@
}, },
{
"author": "shinich39",
"title": "comfyui-text-pipe-39 [DEPRECATED]",
"reference": "https://github.com/shinich39/comfyui-text-pipe-39",
"files": [
"https://github.com/shinich39/comfyui-text-pipe-39"
],
"install_type": "git-clone",
"description": "Modify text by condition."
},
{ {
"author": "Big Idea Technology", "author": "Big Idea Technology",
"title": "Image Text Overlay Node for ComfyUI [DEPRECATED]", "title": "Image Text Overlay Node for ComfyUI [DEPRECATED]",

View File

@ -11,7 +11,127 @@
{
"author": "daxcay",
"title": "ComfyUI-DRMN",
"reference": "https://github.com/daxcay/ComfyUI-DRMN",
"files": [
"https://github.com/daxcay/ComfyUI-DRMN"
],
"install_type": "git-clone",
"description": "Data Research And Manipulators Nodes for Model Trainers, Artists, Designers and Animators. Captions, Visualizer, Text Manipulator"
},
{
"author": "kealiu",
"title": "ComfyUI-ZeroShot-MTrans",
"reference": "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans",
"files": [
"https://github.com/kealiu/ComfyUI-ZeroShot-MTrans"
],
"install_type": "git-clone",
"description": "An unofficial ComfyUI custom node for [a/Zero-Shot Material Transfer from a Single Image](https://ttchengab.github.io/zest), Given an input image (e.g., a photo of an apple) and a single material exemplar image (e.g., a golden bowl), ZeST can transfer the gold material from the exemplar onto the apple with accurate lighting cues while making everything else consistent."
},
{
"author": "fofr",
"title": "Simswap Node for ComfyUI (ByteDance)",
"reference": "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler",
"files": [
"https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler"
],
"install_type": "git-clone",
"description": "Original author is ByteDance.\nComfyUI sampler for HyperSDXL UNet\nPorted from: [a/https://huggingface.co/ByteDance/Hyper-SD](https://huggingface.co/ByteDance/Hyper-SD)"
},
{
"author": "TaiTair",
"title": "Simswap Node for ComfyUI",
"reference": "https://github.com/TaiTair/comfyui-simswap",
"files": [
"https://github.com/TaiTair/comfyui-simswap"
],
"install_type": "git-clone",
"description": "A hacky implementation of Simswap based on [a/Comfyui ReActor Node 0.5.1](https://github.com/Gourieff/comfyui-reactor-node) and [a/Simswap](https://github.com/neuralchen/SimSwap)."
},
{
"author": "jeffy5",
"title": "comfyui-fb-utils",
"reference": "https://github.com/jeffy5/comfyui-faceless-node",
"files": [
"https://github.com/jeffy5/comfyui-faceless-node"
],
"install_type": "git-clone",
"description": "Nodes:Load Video, Load Frames, Save Video, Face Swap, Face Restore, Face Swap (Video), Face Restore (Video)"
},
{
"author": "chaojie",
"title": "ComfyUI-SimDA",
"reference": "https://github.com/chaojie/ComfyUI-SimDA",
"files": [
"https://github.com/chaojie/ComfyUI-SimDA"
],
"install_type": "git-clone",
"description": "Nodes:SimDATrain, SimDALoader, SimDARun, VHS_FILENAMES_STRING_SimDA"
},
{
"author": "randjtw",
"title": "advance-aesthetic-score",
"reference": "https://github.com/randjtw/advance-aesthetic-score",
"files": [
"https://github.com/randjtw/advance-aesthetic-score"
],
"install_type": "git-clone",
"description": "Nodes:Advance Aesthetic Score"
},
{
"author": "shinich39",
"title": "comfyui-local-db",
"reference": "https://github.com/shinich39/comfyui-local-db",
"files": [
"https://github.com/shinich39/comfyui-local-db"
],
"install_type": "git-clone",
"description": "Store text to Key-Values pair json."
},
{
"author": "FredBill1",
"title": "comfyui-fb-utils",
"reference": "https://github.com/FredBill1/comfyui-fb-utils",
"files": [
"https://github.com/FredBill1/comfyui-fb-utils"
],
"install_type": "git-clone",
"description": "Nodes:FBStringJoin, FBStringSplit, FBMultilineStringList, FBMultilineString"
},
{
"author": "lquesada",
"title": "ComfyUI-Prompt-Combinator",
"reference": "https://github.com/lquesada/ComfyUI-Prompt-Combinator",
"files": [
"https://github.com/lquesada/ComfyUI-Prompt-Combinator"
],
"install_type": "git-clone",
"description": "'🔢 Prompt Combinator' is a node that generates all possible combinations of prompts from several lists of strings."
},
{
"author": "huchenlei",
"title": "ComfyUI-openpose-editor",
"reference": "https://github.com/huchenlei/ComfyUI-openpose-editor",
"files": [
"https://github.com/huchenlei/ComfyUI-openpose-editor"
],
"install_type": "git-clone",
"description": "Port of [a/https://github.com/huchenlei/sd-webui-openpose-editor](https://github.com/huchenlei/sd-webui-openpose-editor) in ComfyUI"
},
{
"author": "longgui0318",
"title": "comfyui-magic-clothing",
"reference": "https://github.com/longgui0318/comfyui-magic-clothing",
"files": [
"https://github.com/longgui0318/comfyui-magic-clothing"
],
"install_type": "git-clone",
"description": "The comfyui supported version of the [a/Magic Clothing](https://github.com/ShineChen1024/MagicClothing) project, not the diffusers version, allows direct integration with modules such as ipadapter"
},
{ {
"author": "ty0x2333", "author": "ty0x2333",
"title": "ComfyUI-Dev-Utils", "title": "ComfyUI-Dev-Utils",
@ -40,7 +160,7 @@
"https://github.com/smthemex/ComfyUI_Pipeline_Tool" "https://github.com/smthemex/ComfyUI_Pipeline_Tool"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Pipeline_Tool" "description": "A tool for novice users in Chinese Mainland to call the huggingface hub and download the huggingface models."
}, },
{ {
"author": "blueraincoatli", "author": "blueraincoatli",
@ -460,7 +580,7 @@
"https://github.com/smthemex/ComfyUI_ParlerTTS" "https://github.com/smthemex/ComfyUI_ParlerTTS"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "This is a simple ComfyUI custom TTS node based on [a/Parler_tts](https://huggingface.co/parler-tts)." "description": "You can call the ParlerTTS tool in comfyUI, which currently only supports English."
}, },
{ {
"author": "unwdef", "author": "unwdef",
@ -671,36 +791,6 @@
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "This repository simply caches the CLIP embeddings and subtly accelerates the inference process by bypassing unnecessary computations." "description": "This repository simply caches the CLIP embeddings and subtly accelerates the inference process by bypassing unnecessary computations."
},
{
"author": "tsogzark",
"title": "ComfyUI-load-image-from-url",
"reference": "https://github.com/tsogzark/ComfyUI-load-image-from-url",
"files": [
"https://github.com/tsogzark/ComfyUI-load-image-from-url"
],
"install_type": "git-clone",
"description": "A simple node to load image from local path or http url.\nYou can find this node from 'image' category."
},
{
"author": "SeaArtLab",
"title": "ComfyUI-Long-CLIP",
"reference": "https://github.com/SeaArtLab/ComfyUI-Long-CLIP",
"files": [
"https://github.com/SeaArtLab/ComfyUI-Long-CLIP"
],
"install_type": "git-clone",
"description": "This project implements the comfyui for long-clip, currently supporting the replacement of clip-l. For SD1.5, the SeaArtLongClip module can be used to replace the original clip in the model, expanding the token length from 77 to 248."
},
{
"author": "chaojie",
"title": "ComfyUI-Open-Sora-Plan",
"reference": "https://github.com/chaojie/ComfyUI-Open-Sora-Plan",
"files": [
"https://github.com/chaojie/ComfyUI-Open-Sora-Plan"
],
"install_type": "git-clone",
"description": "ComfyUI-Open-Sora-Plan"
} }
] ]
} }

View File

@ -219,6 +219,7 @@
"CombineAudioVideo", "CombineAudioVideo",
"LoadVideo", "LoadVideo",
"MuseTalk", "MuseTalk",
"MuseTalkRealTime",
"PreViewVideo" "PreViewVideo"
], ],
{ {
@ -358,6 +359,7 @@
"FloatToInt-badger", "FloatToInt-badger",
"FloatToString-badger", "FloatToString-badger",
"FrameToVideo-badger", "FrameToVideo-badger",
"GETRequset-badger",
"GarbageCollect-badger", "GarbageCollect-badger",
"GetColorFromBorder-badger", "GetColorFromBorder-badger",
"GetDirName-badger", "GetDirName-badger",
@ -607,6 +609,7 @@
"ComfyUIDeployExternalCheckpoint", "ComfyUIDeployExternalCheckpoint",
"ComfyUIDeployExternalImage", "ComfyUIDeployExternalImage",
"ComfyUIDeployExternalImageAlpha", "ComfyUIDeployExternalImageAlpha",
"ComfyUIDeployExternalImageBatch",
"ComfyUIDeployExternalLora", "ComfyUIDeployExternalLora",
"ComfyUIDeployExternalNumber", "ComfyUIDeployExternalNumber",
"ComfyUIDeployExternalNumberInt", "ComfyUIDeployExternalNumberInt",
@ -622,13 +625,13 @@
], ],
"https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [ "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": [
[ [
"BTPromptSchedule",
"BTPromptSelector",
"EndQueue", "EndQueue",
"ImageTextOverlay", "ImageTextOverlay",
"Loop", "Loop",
"LoopEnd", "LoopEnd",
"LoopStart", "LoopStart"
"PromptSchedule",
"PromptSelector"
], ],
{ {
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@ -946,38 +949,13 @@
} }
], ],
"https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [
[ [],
"Absolute value",
"Ceil",
"Conditioning area scale by ratio",
"Cosines",
"Divide",
"Float",
"Floor",
"Get image size",
"Get latent size",
"Image scale by ratio",
"Image scale to side",
"Int to float",
"Integer",
"Latent Scale by ratio",
"Latent Scale to side",
"Logic node",
"Multiply",
"Power",
"Random",
"Sinus",
"Square root",
"String Concatenate",
"String Replace",
"Subtract",
"Sum",
"Tangent",
"Text",
"Text box",
"To text (Debug)"
],
{ {
"author": "Derfuu",
"description": "Pack of simple (or not) and modded nodes for scaling images/latents, editing numbers or text. Automate calculations depending on image sizes or any other thing you want. Or randomize any number in your workflow. Debug node included.",
"nickname": "Derfuu simple/modded Nodes",
"nodename_pattern": "^DF_",
"title": "Derfuu simple/modded Nodes",
"title_aux": "Derfuu_ComfyUI_ModdedNodes" "title_aux": "Derfuu_ComfyUI_ModdedNodes"
} }
], ],
@ -1122,9 +1100,11 @@
], ],
"https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [ "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": [
[ [
"Aligned Scheduler",
"Get sigmas as float", "Get sigmas as float",
"Graph sigmas", "Graph sigmas",
"Manual scheduler", "Manual scheduler",
"Merge many sigmas by average",
"Merge sigmas by average", "Merge sigmas by average",
"Merge sigmas gradually", "Merge sigmas gradually",
"Multiply sigmas", "Multiply sigmas",
@ -2526,6 +2506,10 @@
"LandscapeDir", "LandscapeDir",
"MakeupStylesDir", "MakeupStylesDir",
"OptimalCrop", "OptimalCrop",
"PhotomontageA",
"PhotomontageB",
"PhotomontageC",
"PostSamplerCrop",
"SDXLEmptyLatent", "SDXLEmptyLatent",
"SaveWithMetaData", "SaveWithMetaData",
"SimplePrompts", "SimplePrompts",
@ -3412,6 +3396,8 @@
], ],
"https://github.com/Stability-AI/ComfyUI-SAI_API": [ "https://github.com/Stability-AI/ComfyUI-SAI_API": [
[ [
"Stability Control Skech",
"Stability Control Structure",
"Stability Creative Upscale", "Stability Creative Upscale",
"Stability Image Core", "Stability Image Core",
"Stability Inpainting", "Stability Inpainting",
@ -3831,6 +3817,22 @@
"title_aux": "tri3d-comfyui-nodes" "title_aux": "tri3d-comfyui-nodes"
} }
], ],
"https://github.com/TaiTair/comfyui-simswap": [
[
"Simswap",
"SimswapBuildFaceModel",
"SimswapFaceSwapOpt",
"SimswapImageDublicator",
"SimswapLoadFaceModel",
"SimswapMaskHelper",
"SimswapOptions",
"SimswapRestoreFace",
"SimswapSaveFaceModel"
],
{
"title_aux": "Simswap Node for ComfyUI"
}
],
"https://github.com/Taremin/comfyui-prompt-extranetworks": [ "https://github.com/Taremin/comfyui-prompt-extranetworks": [
[ [
"PromptExtraNetworks" "PromptExtraNetworks"
@ -3854,9 +3856,11 @@
"https://github.com/TeaCrab/ComfyUI-TeaNodes": [ "https://github.com/TeaCrab/ComfyUI-TeaNodes": [
[ [
"TC_ColorFill", "TC_ColorFill",
"TC_CropTo",
"TC_EqualizeCLAHE", "TC_EqualizeCLAHE",
"TC_ImageResize", "TC_ImageResize",
"TC_ImageScale", "TC_ImageScale",
"TC_KorniaGamma",
"TC_RandomColorFill", "TC_RandomColorFill",
"TC_SizeApproximation" "TC_SizeApproximation"
], ],
@ -3878,12 +3882,14 @@
], ],
"https://github.com/TencentQQGYLab/ComfyUI-ELLA": [ "https://github.com/TencentQQGYLab/ComfyUI-ELLA": [
[ [
"CombineClipEllaEmbeds",
"ConcatConditionEllaEmbeds", "ConcatConditionEllaEmbeds",
"ConditionToEllaEmbeds", "ConditionToEllaEmbeds",
"ELLALoader", "ELLALoader",
"EllaAdvancedApply",
"EllaApply", "EllaApply",
"EllaCombineEmbeds", "EllaCombineEmbeds",
"EllaEncode",
"SetEllaTimesteps",
"T5TextEncode #ELLA", "T5TextEncode #ELLA",
"T5TextEncoderLoader #ELLA" "T5TextEncoderLoader #ELLA"
], ],
@ -4987,6 +4993,18 @@
"title_aux": "StableCascadeResizer" "title_aux": "StableCascadeResizer"
} }
], ],
"https://github.com/ansonkao/comfyui-geometry": [
[
"TransformTemplateOntoFaceMask"
],
{
"author": "Anson Kao",
"description": "A small collection of custom nodes for use with ComfyUI, by Discopixel",
"nickname": "ComfyUI Discopixel",
"title": "ComfyUI Discopixel",
"title_aux": "comfyui-geometry"
}
],
"https://github.com/antrobot1234/antrobots-comfyUI-nodepack": [ "https://github.com/antrobot1234/antrobots-comfyUI-nodepack": [
[ [
"composite", "composite",
@ -5221,6 +5239,7 @@
[ [
"BlehBlockOps", "BlehBlockOps",
"BlehDeepShrink", "BlehDeepShrink",
"BlehDisableNoise",
"BlehDiscardPenultimateSigma", "BlehDiscardPenultimateSigma",
"BlehForceSeedSampler", "BlehForceSeedSampler",
"BlehHyperTile", "BlehHyperTile",
@ -5228,6 +5247,7 @@
"BlehLatentOps", "BlehLatentOps",
"BlehLatentScaleBy", "BlehLatentScaleBy",
"BlehModelPatchConditional", "BlehModelPatchConditional",
"BlehPlug",
"BlehRefinerAfter" "BlehRefinerAfter"
], ],
{ {
@ -5754,12 +5774,18 @@
], ],
"https://github.com/chaojie/ComfyUI-LaVIT": [ "https://github.com/chaojie/ComfyUI-LaVIT": [
[ [
"VHS_FILENAMES_STRING_LaVIT",
"VideoLaVITI2I", "VideoLaVITI2I",
"VideoLaVITI2V", "VideoLaVITI2V",
"VideoLaVITI2VLong", "VideoLaVITI2VLong",
"VideoLaVITLoader", "VideoLaVITLoader",
"VideoLaVITT2V", "VideoLaVITT2V",
"VideoLaVITT2VLong" "VideoLaVITT2VLong",
"VideoLaVITUnderstandingImage",
"VideoLaVITUnderstandingLoader",
"VideoLaVITUnderstandingVideo",
"VideoLaVITVideoDetokenizerLoader",
"VideoLaVITVideoReconstruction"
], ],
{ {
"title_aux": "ComfyUI-LaVIT" "title_aux": "ComfyUI-LaVIT"
@ -5907,6 +5933,17 @@
"title_aux": "ComfyUI-RAFT" "title_aux": "ComfyUI-RAFT"
} }
], ],
"https://github.com/chaojie/ComfyUI-SimDA": [
[
"SimDALoader",
"SimDARun",
"SimDATrain",
"VHS_FILENAMES_STRING_SimDA"
],
{
"title_aux": "ComfyUI-SimDA"
}
],
"https://github.com/chaojie/ComfyUI-Trajectory": [ "https://github.com/chaojie/ComfyUI-Trajectory": [
[ [
"Trajectory_Canvas_Tab" "Trajectory_Canvas_Tab"
@ -6702,6 +6739,7 @@
"MaskFlip+", "MaskFlip+",
"MaskFromBatch+", "MaskFromBatch+",
"MaskFromColor+", "MaskFromColor+",
"MaskFromList+",
"MaskFromRGBCMYBW+", "MaskFromRGBCMYBW+",
"MaskFromSegmentation+", "MaskFromSegmentation+",
"MaskPreview+", "MaskPreview+",
@ -6812,12 +6850,28 @@
"title_aux": "KSampler GPU" "title_aux": "KSampler GPU"
} }
], ],
"https://github.com/daxcay/ComfyUI-DRMN": [
[
"DRMN_CaptionVisualizer",
"DRMN_TXTFileSaver",
"DRMN_TagManipulatorByImageNames"
],
{
"author": "Daxton Caylor",
"description": "Data Research And Manipulators Nodes for Model Trainers, Artists, Designers and Animators.",
"nickname": "ComfyUI-DRMN",
"title": "ComfyUI-DRMN",
"title_aux": "ComfyUI-DRMN"
}
],
"https://github.com/daxcay/ComfyUI-JDCN": [ "https://github.com/daxcay/ComfyUI-JDCN": [
[ [
"JDCN_AnyFileList", "JDCN_AnyFileList",
"JDCN_AnyFileListHelper", "JDCN_AnyFileListHelper",
"JDCN_AnyFileListRandom", "JDCN_AnyFileListRandom",
"JDCN_AnyFileSelector", "JDCN_AnyFileSelector",
"JDCN_BatchCounter",
"JDCN_BatchImageLoadFromDir",
"JDCN_BatchImageLoadFromList", "JDCN_BatchImageLoadFromList",
"JDCN_BatchLatentLoadFromDir", "JDCN_BatchLatentLoadFromDir",
"JDCN_BatchLatentLoadFromList", "JDCN_BatchLatentLoadFromList",
@ -6959,6 +7013,18 @@
"title_aux": "ComfyUI-Vextra-Nodes" "title_aux": "ComfyUI-Vextra-Nodes"
} }
], ],
"https://github.com/discopixel-studio/comfyui-discopixel": [
[
"TransformTemplateOntoFaceMask"
],
{
"author": "Anson Kao",
"description": "A small collection of custom nodes for use with ComfyUI, by Discopixel",
"nickname": "ComfyUI Discopixel",
"title": "ComfyUI Discopixel",
"title_aux": "ComfyUI Discopixel Nodes"
}
],
"https://github.com/discus0434/comfyui-caching-embeddings": [ "https://github.com/discus0434/comfyui-caching-embeddings": [
[ [
"CachingCLIPTextEncode" "CachingCLIPTextEncode"
@ -7396,6 +7462,14 @@
"title_aux": "As_ComfyUI_CustomNodes" "title_aux": "As_ComfyUI_CustomNodes"
} }
], ],
"https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": [
[
"HyperSDXL1StepUnetScheduler"
],
{
"title_aux": "Simswap Node for ComfyUI (ByteDance)"
}
],
"https://github.com/forever22777/comfyui-self-guidance": [ "https://github.com/forever22777/comfyui-self-guidance": [
[ [
"CLIPConditioning", "CLIPConditioning",
@ -7457,7 +7531,9 @@
], ],
"https://github.com/frankchieng/ComfyUI_MagicClothing": [ "https://github.com/frankchieng/ComfyUI_MagicClothing": [
[ [
"MagicClothing_Generate" "MagicClothing_Animatediff",
"MagicClothing_Generate",
"MagicClothing_Inpainting"
], ],
{ {
"title_aux": "ComfyUI_MagicClothing" "title_aux": "ComfyUI_MagicClothing"
@ -7677,9 +7753,11 @@
"ACE_AudioLoad", "ACE_AudioLoad",
"ACE_AudioPlay", "ACE_AudioPlay",
"ACE_AudioSave", "ACE_AudioSave",
"ACE_Expression_Eval",
"ACE_Float", "ACE_Float",
"ACE_ImageColorFix", "ACE_ImageColorFix",
"ACE_ImageConstrain", "ACE_ImageConstrain",
"ACE_ImageGetSize",
"ACE_ImageLoadFromCloud", "ACE_ImageLoadFromCloud",
"ACE_ImageQA", "ACE_ImageQA",
"ACE_ImageRemoveBackground", "ACE_ImageRemoveBackground",
@ -7745,6 +7823,7 @@
"custom_persona", "custom_persona",
"ebd_tool", "ebd_tool",
"end_dialog", "end_dialog",
"end_workflow",
"file_combine", "file_combine",
"file_combine_plus", "file_combine_plus",
"google_tool", "google_tool",
@ -7752,6 +7831,7 @@
"load_file", "load_file",
"load_persona", "load_persona",
"start_dialog", "start_dialog",
"start_workflow",
"time_tool", "time_tool",
"tool_combine", "tool_combine",
"tool_combine_plus", "tool_combine_plus",
@ -8061,13 +8141,106 @@
"title_aux": "ComfyUI_rotate_image" "title_aux": "ComfyUI_rotate_image"
} }
], ],
"https://github.com/jamesWalker55/comfyui-p2ldgan": [
[
"P2LDGAN"
],
{
"title_aux": "ComfyUI - P2LDGAN Node"
}
],
"https://github.com/jamesWalker55/comfyui-various": [ "https://github.com/jamesWalker55/comfyui-various": [
[], [
"BatchLoadImage",
"BatchSaveImage",
"GroupInfoExtractFloat",
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
"JWImageExtractFromBatch",
"JWImageFlip",
"JWImageLevels",
"JWImageLoadRGB",
"JWImageLoadRGBA",
"JWImageLoadRGBIfExists",
"JWImageMix",
"JWImageResize",
"JWImageResizeByFactor",
"JWImageResizeByLongerSide",
"JWImageResizeByShorterSide",
"JWImageResizeToSquare",
"JWImageSaturation",
"JWImageSaveToPath",
"JWImageSequenceExtractFromBatch",
"JWImageStackChannels",
"JWInfoHashExtractFloat",
"JWInfoHashExtractInteger",
"JWInfoHashExtractString",
"JWInfoHashFromInfoHashList",
"JWInfoHashFromRangedInfo",
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
"JWMaskLikeImageSize",
"JWMaskResize",
"JWMaskSequenceApplyToLatent",
"JWMaskSequenceFromMask",
"JWMaskSequenceJoin",
"JWPrintFloat",
"JWPrintImage",
"JWPrintInteger",
"JWPrintLatent",
"JWPrintMask",
"JWPrintString",
"JWRangedInfoCalculateSubBatch",
"JWReferenceOnly",
"JWSaveImageSequence",
"JWStringListCLIPEncode",
"JWStringListFromString",
"JWStringListFromStrings",
"JWStringListJoin",
"JWStringListRepeat",
"JWStringListToFormatedString",
"JWStringListToString",
"JWUncropCrop",
"JWUncropNewRect",
"JWUncropUncrop",
"JamesLoadImageGroup",
"RAFTEstimate",
"RAFTFlowToImage",
"RAFTLoadFlowFromEXRChannels",
"RCReceiveFloat",
"RCReceiveFloatList",
"RCReceiveInt",
"RCReceiveIntList",
"RCReceiveLatent",
"RCSendLatent"
],
{ {
"nodename_pattern": "^JW", "nodename_pattern": "^JW",
"title_aux": "Various ComfyUI Nodes by Type" "title_aux": "Various ComfyUI Nodes by Type"
} }
], ],
"https://github.com/jeffy5/comfyui-faceless-node": [
[
"FacelessFaceRestore",
"FacelessFaceSwap",
"FacelessLoadFrames",
"FacelessLoadVideo",
"FacelessSaveVideo",
"FacelessVideoFaceRestore",
"FacelessVideoFaceSwap"
],
{
"title_aux": "comfyui-fb-utils"
}
],
"https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [
[ [
"StreamDiffusion_Loader", "StreamDiffusion_Loader",
@ -8207,6 +8380,12 @@
"SDT_FasterWhisperTranscribe", "SDT_FasterWhisperTranscribe",
"SDT_GriffinLim", "SDT_GriffinLim",
"SDT_JoinAudio", "SDT_JoinAudio",
"SDT_KotobaWhisperListSegments",
"SDT_KotobaWhisperLoaderLong",
"SDT_KotobaWhisperLoaderShort",
"SDT_KotobaWhisperSegmentProperty",
"SDT_KotobaWhisperTranscribeLong",
"SDT_KotobaWhisperTranscribeShort",
"SDT_LFCC", "SDT_LFCC",
"SDT_LoadAudio", "SDT_LoadAudio",
"SDT_LoadAudios", "SDT_LoadAudios",
@ -8294,6 +8473,14 @@
"title_aux": "ComfyUI Load and Save file to S3" "title_aux": "ComfyUI Load and Save file to S3"
} }
], ],
"https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": [
[
"ZeST: Grayout Subject"
],
{
"title_aux": "ComfyUI-ZeroShot-MTrans"
}
],
"https://github.com/kenjiqq/qq-nodes-comfyui": [ "https://github.com/kenjiqq/qq-nodes-comfyui": [
[ [
"Any List", "Any List",
@ -8401,6 +8588,8 @@
], ],
"https://github.com/kijai/ComfyUI-ELLA-wrapper": [ "https://github.com/kijai/ComfyUI-ELLA-wrapper": [
[ [
"diffusers_model_loader",
"diffusers_sampler",
"ella_model_loader", "ella_model_loader",
"ella_sampler", "ella_sampler",
"ella_t5_embeds" "ella_t5_embeds"
@ -8462,6 +8651,7 @@
"GrowMaskWithBlur", "GrowMaskWithBlur",
"INTConstant", "INTConstant",
"ImageAndMaskPreview", "ImageAndMaskPreview",
"ImageBatchMulti",
"ImageBatchRepeatInterleaving", "ImageBatchRepeatInterleaving",
"ImageBatchTestPattern", "ImageBatchTestPattern",
"ImageConcanate", "ImageConcanate",
@ -8470,6 +8660,7 @@
"ImageGridComposite3x3", "ImageGridComposite3x3",
"ImageNormalize_Neg1_To_1", "ImageNormalize_Neg1_To_1",
"ImagePadForOutpaintMasked", "ImagePadForOutpaintMasked",
"ImagePass",
"ImageTransformByNormalizedAmplitude", "ImageTransformByNormalizedAmplitude",
"ImageUpscaleWithModelBatched", "ImageUpscaleWithModelBatched",
"InjectNoiseToLatent", "InjectNoiseToLatent",
@ -8478,6 +8669,7 @@
"Intrinsic_lora_sampling", "Intrinsic_lora_sampling",
"JoinStrings", "JoinStrings",
"LoadResAdapterNormalization", "LoadResAdapterNormalization",
"MaskBatchMulti",
"MaskOrImageToWeight", "MaskOrImageToWeight",
"NormalizedAmplitudeToMask", "NormalizedAmplitudeToMask",
"OffsetMask", "OffsetMask",
@ -8910,6 +9102,18 @@
"title_aux": "comfyui-llm-assistant" "title_aux": "comfyui-llm-assistant"
} }
], ],
"https://github.com/longgui0318/comfyui-magic-clothing": [
[
"Add Magic Clothing Attention",
"Change Pixel Value Normalization",
"LOAD OMS",
"Load Magic Clothing Model",
"RUN OMS"
],
{
"title_aux": "comfyui-magic-clothing"
}
],
"https://github.com/longgui0318/comfyui-mask-util": [ "https://github.com/longgui0318/comfyui-mask-util": [
[ [
"Image Adaptive Crop M&R", "Image Adaptive Crop M&R",
@ -8929,11 +9133,9 @@
[ [
"Add Magic Clothing Attention", "Add Magic Clothing Attention",
"Change Pixel Value Normalization", "Change Pixel Value Normalization",
"InjectTensorHashLog",
"LOAD OMS", "LOAD OMS",
"Load Magic Clothing Model", "Load Magic Clothing Model",
"RUN OMS", "RUN OMS"
"VAE Mode Choose"
], ],
{ {
"title_aux": "comfyui-oms-diffusion" "title_aux": "comfyui-oms-diffusion"
@ -8947,6 +9149,15 @@
"title_aux": "Wildcards" "title_aux": "Wildcards"
} }
], ],
"https://github.com/lquesada/ComfyUI-Prompt-Combinator": [
[
"PromptCombinator",
"PromptCombinatorMerger"
],
{
"title_aux": "ComfyUI-Prompt-Combinator"
}
],
"https://github.com/lrzjason/ComfyUIJasonNode/raw/main/SDXLMixSampler.py": [ "https://github.com/lrzjason/ComfyUIJasonNode/raw/main/SDXLMixSampler.py": [
[ [
"SDXLMixSampler" "SDXLMixSampler"
@ -9983,6 +10194,14 @@
"title_aux": "A8R8 ComfyUI Nodes" "title_aux": "A8R8 ComfyUI Nodes"
} }
], ],
"https://github.com/randjtw/advance-aesthetic-score": [
[
"Adv_Scoring"
],
{
"title_aux": "advance-aesthetic-score"
}
],
"https://github.com/ratulrafsan/Comfyui-SAL-VTON": [ "https://github.com/ratulrafsan/Comfyui-SAL-VTON": [
[ [
"SALVTON_Apply", "SALVTON_Apply",
@ -10444,15 +10663,20 @@
"AV_CheckpointMerge", "AV_CheckpointMerge",
"AV_CheckpointModelsToParametersPipe", "AV_CheckpointModelsToParametersPipe",
"AV_CheckpointSave", "AV_CheckpointSave",
"AV_ClaudeApi",
"AV_ControlNetEfficientLoader", "AV_ControlNetEfficientLoader",
"AV_ControlNetEfficientLoaderAdvanced", "AV_ControlNetEfficientLoaderAdvanced",
"AV_ControlNetEfficientStacker", "AV_ControlNetEfficientStacker",
"AV_ControlNetEfficientStackerSimple", "AV_ControlNetEfficientStackerSimple",
"AV_ControlNetLoader", "AV_ControlNetLoader",
"AV_ControlNetPreprocessor", "AV_ControlNetPreprocessor",
"AV_LLMApiConfig",
"AV_LLMChat",
"AV_LLMMessage",
"AV_LoraListLoader", "AV_LoraListLoader",
"AV_LoraListStacker", "AV_LoraListStacker",
"AV_LoraLoader", "AV_LoraLoader",
"AV_OpenAIApi",
"AV_ParametersPipeToCheckpointModels", "AV_ParametersPipeToCheckpointModels",
"AV_ParametersPipeToPrompts", "AV_ParametersPipeToPrompts",
"AV_PromptsToParametersPipe", "AV_PromptsToParametersPipe",
@ -10462,6 +10686,7 @@
"BLIPCaption", "BLIPCaption",
"BLIPLoader", "BLIPLoader",
"BooleanPrimitive", "BooleanPrimitive",
"CheckpointNameSelector",
"ColorBlend", "ColorBlend",
"ColorCorrect", "ColorCorrect",
"DeepDanbooruCaption", "DeepDanbooruCaption",
@ -10537,7 +10762,6 @@
], ],
"https://github.com/smthemex/ComfyUI_ParlerTTS": [ "https://github.com/smthemex/ComfyUI_ParlerTTS": [
[ [
"ModelDownload",
"PromptToAudio" "PromptToAudio"
], ],
{ {
@ -10632,6 +10856,7 @@
"LatentStats", "LatentStats",
"NormalMapSimple", "NormalMapSimple",
"OffsetLatentImage", "OffsetLatentImage",
"PrintSigmas",
"RelightSimple", "RelightSimple",
"RemapRange", "RemapRange",
"ShuffleChannels", "ShuffleChannels",
@ -10775,7 +11000,8 @@
], ],
"https://github.com/sugarkwork/comfyui_tag_fillter": [ "https://github.com/sugarkwork/comfyui_tag_fillter": [
[ [
"TagFilter" "TagFilter",
"TagRemover"
], ],
{ {
"title_aux": "comfyui_tag_filter" "title_aux": "comfyui_tag_filter"
@ -11129,6 +11355,16 @@
"title_aux": "SDXL Prompt Styler" "title_aux": "SDXL Prompt Styler"
} }
], ],
"https://github.com/ty0x2333/ComfyUI-Dev-Utils": [
[
"TY_ExecutionTime",
"TY_UploadAnything",
"TY_UrlDownload"
],
{
"title_aux": "ComfyUI-Dev-Utils"
}
],
"https://github.com/uarefans/ComfyUI-Fans": [ "https://github.com/uarefans/ComfyUI-Fans": [
[ [
"Fans Prompt Styler Negative", "Fans Prompt Styler Negative",
@ -11496,6 +11732,7 @@
"easy boolean", "easy boolean",
"easy cascadeKSampler", "easy cascadeKSampler",
"easy cascadeLoader", "easy cascadeLoader",
"easy ckptNames",
"easy cleanGpuUsed", "easy cleanGpuUsed",
"easy clearCacheAll", "easy clearCacheAll",
"easy clearCacheKey", "easy clearCacheKey",
@ -11503,6 +11740,7 @@
"easy compare", "easy compare",
"easy controlnetLoader", "easy controlnetLoader",
"easy controlnetLoaderADV", "easy controlnetLoaderADV",
"easy controlnetNames",
"easy convertAnything", "easy convertAnything",
"easy detailerFix", "easy detailerFix",
"easy dynamiCrafterLoader", "easy dynamiCrafterLoader",
@ -11513,9 +11751,11 @@
"easy fullkSampler", "easy fullkSampler",
"easy globalSeed", "easy globalSeed",
"easy hiresFix", "easy hiresFix",
"easy humanParsing", "easy humanSegmentation",
"easy if", "easy if",
"easy imageChooser", "easy imageChooser",
"easy imageColorMatch",
"easy imageCount",
"easy imageInsetCrop", "easy imageInsetCrop",
"easy imageInterrogator", "easy imageInterrogator",
"easy imagePixelPerfect", "easy imagePixelPerfect",
@ -11530,7 +11770,9 @@
"easy imageSizeBySide", "easy imageSizeBySide",
"easy imageSplitList", "easy imageSplitList",
"easy imageSwitch", "easy imageSwitch",
"easy imageToBase64",
"easy imageToMask", "easy imageToMask",
"easy imagesSplitImage",
"easy injectNoiseToLatent", "easy injectNoiseToLatent",
"easy instantIDApply", "easy instantIDApply",
"easy instantIDApplyADV", "easy instantIDApplyADV",
@ -11552,6 +11794,7 @@
"easy kSamplerTiled", "easy kSamplerTiled",
"easy latentCompositeMaskedWithCond", "easy latentCompositeMaskedWithCond",
"easy latentNoisy", "easy latentNoisy",
"easy loadImageBase64",
"easy loraStack", "easy loraStack",
"easy negative", "easy negative",
"easy pipeBatchIndex", "easy pipeBatchIndex",
@ -11587,9 +11830,11 @@
"easy showTensorShape", "easy showTensorShape",
"easy stableDiffusion3API", "easy stableDiffusion3API",
"easy string", "easy string",
"easy styleAlignedBatchAlign",
"easy stylesSelector", "easy stylesSelector",
"easy sv3dLoader", "easy sv3dLoader",
"easy svdLoader", "easy svdLoader",
"easy textSwitch",
"easy ultralyticsDetectorPipe", "easy ultralyticsDetectorPipe",
"easy unSampler", "easy unSampler",
"easy wildcards", "easy wildcards",
@ -11697,7 +11942,7 @@
], ],
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [ "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
[ [
"DepthAnythingTensorrtNode" "DepthAnythingTensorrt"
], ],
{ {
"title_aux": "ComfyUI Depth Anything TensorRT" "title_aux": "ComfyUI Depth Anything TensorRT"
@ -11809,6 +12054,7 @@
[ [
"ConcatText", "ConcatText",
"ImageBatchOneOrMore", "ImageBatchOneOrMore",
"ImageConcanate",
"IntAndIntAddOffsetLiteral", "IntAndIntAddOffsetLiteral",
"LoadImageWithSwitch", "LoadImageWithSwitch",
"ModifyTextGender" "ModifyTextGender"

View File

@ -1,5 +1,67 @@
{ {
"models": [ "models": [
{
"name": "ip_plus_composition_sd15.safetensors",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/ostris/ip-composition-adapter",
"filename": "ip_plus_composition_sd15.safetensors",
"url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors"
},
{
"name": "ip_plus_composition_sdxl.safetensors",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/ostris/ip-composition-adapter",
"filename": "ip_plus_composition_sdxl.safetensors",
"url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors"
},
{
"name": "ip-adapter-faceid-portrait-v11_sd15.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait V11 Model (SD1.5) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait-v11_sd15.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin"
},
{
"name": "ip-adapter-faceid-portrait_sdxl.bin",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait Model (SDXL) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait_sdxl.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin"
},
{
"name": "ip-adapter-faceid-portrait_sdxl_unnorm.bin",
"type": "IP-Adapter",
"base": "SDXL",
"save_path": "ipadapter",
"description": "IP-Adapter-FaceID Portrait Model (SDXL/unnorm) [ipadapter]",
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
"filename": "ip-adapter-faceid-portrait_sdxl_unnorm.bin",
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl_unnorm.bin"
},
{
"name": "ip-adapter_sd15_light_v11.bin",
"type": "IP-Adapter",
"base": "SD1.5",
"save_path": "ipadapter",
"description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.",
"reference": "https://huggingface.co/h94/IP-Adapter",
"filename": "ip-adapter_sd15_light_v11.bin",
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin"
},
{ {
"name": "Kijai/SUPIR-v0F_fp16.safetensors (pruned)", "name": "Kijai/SUPIR-v0F_fp16.safetensors (pruned)",
"type": "checkpoints", "type": "checkpoints",
@ -630,37 +692,6 @@
"reference": "https://huggingface.co/segmind/Segmind-VegaRT", "reference": "https://huggingface.co/segmind/Segmind-VegaRT",
"filename": "pytorch_lora_weights.safetensors", "filename": "pytorch_lora_weights.safetensors",
"url": "https://huggingface.co/segmind/Segmind-VegaRT/resolve/main/pytorch_lora_weights.safetensors" "url": "https://huggingface.co/segmind/Segmind-VegaRT/resolve/main/pytorch_lora_weights.safetensors"
},
{
"name": "stabilityai/Stable Zero123",
"type": "zero123",
"base": "zero123",
"save_path": "checkpoints/zero123",
"description": "Stable Zero123 is a model for view-conditioned image generation based on [a/Zero123](https://github.com/cvlab-columbia/zero123).",
"reference": "https://huggingface.co/stabilityai/stable-zero123",
"filename": "stable_zero123.ckpt",
"url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt"
},
{
"name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
"type": "animatediff",
"base": "SD1.x",
"save_path": "animatediff_models",
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
"reference": "https://huggingface.co/Lightricks/LongAnimateDiff",
"filename": "lt_long_mm_32_frames.ckpt",
"url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_32_frames.ckpt"
},
{
"name": "LongAnimatediff/lt_long_mm_16_64_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
"type": "animatediff",
"base": "SD1.x",
"save_path": "animatediff_models",
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
"reference": "https://huggingface.co/Lightricks/LongAnimateDiff",
"filename": "lt_long_mm_16_64_frames.ckpt",
"url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames.ckpt"
} }
] ]
} }

View File

@ -88,6 +88,11 @@ def scan_in_file(filename, is_builtin=False):
for key in keys: for key in keys:
nodes.add(key.strip()) nodes.add(key.strip())
pattern4 = r'@register_node\("(.+)",\s*\".+"\)'
keys = re.findall(pattern4, code)
for key in keys:
nodes.add(key.strip())
matches = regex.findall(code) matches = regex.findall(code)
for match in matches: for match in matches:
dict_text = match dict_text = match