mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-01-29 23:40:16 +08:00
Merge branch 'main' into feat/component-manager
This commit is contained in:
commit
45db3eed1c
24
README.md
24
README.md
@ -16,7 +16,7 @@
|
||||
|
||||
To install ComfyUI-Manager in addition to an existing installation of ComfyUI, you can follow the following steps:
|
||||
|
||||
1. cd custom_nodes
|
||||
1. goto `ComfyUI/custom_nodes` dir in terminal(cmd)
|
||||
2. `git clone https://github.com/ltdrdata/ComfyUI-Manager.git`
|
||||
3. Restart ComfyUI
|
||||
|
||||
@ -63,6 +63,7 @@ This repository provides Colab notebooks that allow you to install and use Comfy
|
||||
* Support for automatically installing dependencies of custom nodes upon restarting Colab notebooks.
|
||||
|
||||
## Changes
|
||||
* **2.4** Copy the connections of the nearest node by double-clicking.
|
||||
* **2.2.3** Support Components System
|
||||
* **0.29** Add `Update all` feature
|
||||
* **0.25** support db channel
|
||||
@ -253,6 +254,24 @@ NODE_CLASS_MAPPINGS.update({
|
||||

|
||||
|
||||
|
||||
## Additional Feature
|
||||
* Logging to file feature
|
||||
* This feature is enabled by default and can be disabled by setting `file_logging = False` in the `config.ini`.
|
||||
|
||||
* Fix node(recreate): When right-clicking on a node and selecting `Fix node (recreate)`, you can recreate the node. The widget's values are reset, while the connections maintain those with the same names.
|
||||
* It is used to correct errors in nodes of old workflows created before, which are incompatible with the version changes of custom nodes.
|
||||
|
||||
* Double-Click Node Title: You can set the double click behavior of nodes in the ComfyUI-Manager menu.
|
||||
* `Copy All Connections`, `Copy Input Connections`: Double-clicking a node copies the connections of the nearest node.
|
||||
* This action targets the nearest node within a straight-line distance of 1000 pixels from the center of the node.
|
||||
* In the case of `Copy All Connections`, it duplicates existing outputs, but since it does not allow duplicate connections, the existing output connections of the original node are disconnected.
|
||||
* This feature copies only the input and output that match the names.
|
||||
|
||||
* `Possible Input Connections`: It connects all outputs that match the closest type within the specified range.
|
||||
* This connection links to the closest outputs among the nodes located on the left side of the target node.
|
||||
|
||||
* `Possible(left) + Copy(right)`: When you Double-Click on the left half of the title, it operates as `Possible Input Connections`, and when you Double-Click on the right half, it operates as `Copy All Connections`.
|
||||
|
||||
## Troubleshooting
|
||||
* If your `git.exe` is installed in a specific location other than system git, please install ComfyUI-Manager and run ComfyUI. Then, specify the path including the file name in `git_exe = ` in the ComfyUI-Manager/config.ini file that is generated.
|
||||
* If updating ComfyUI-Manager itself fails, please go to the **ComfyUI-Manager** directory and execute the command `git update-ref refs/remotes/origin/main a361cc1 && git fetch --all && git pull`.
|
||||
@ -260,6 +279,8 @@ NODE_CLASS_MAPPINGS.update({
|
||||
For the portable version, use `..\..\..\python_embeded\python.exe update-fix.py`.
|
||||
* For cases where nodes like `PreviewTextNode` from `ComfyUI_Custom_Nodes_AlekPet` are only supported as front-end nodes, we currently do not provide missing nodes for them.
|
||||
* Currently, `vid2vid` is not being updated, causing compatibility issues.
|
||||
* If you encounter the error message `Overlapped Object has pending operation at deallocation on Comfyui Manager load` under Windows
|
||||
* Edit `config.ini` file: add `windows_selector_event_loop_policy = True`
|
||||
|
||||
|
||||
## TODO: Unconventional form of custom node list
|
||||
@ -269,6 +290,7 @@ NODE_CLASS_MAPPINGS.update({
|
||||
* https://github.com/MockbaTheBorg/Nodes
|
||||
* https://github.com/StartHua/Comfyui_GPT_Story
|
||||
* https://github.com/NielsGercama/comfyui_customsampling
|
||||
* https://github.com/wrightdaniel2017/ComfyUI-VideoLipSync
|
||||
|
||||
|
||||
## Roadmap
|
||||
|
||||
151
__init__.py
151
__init__.py
@ -7,7 +7,6 @@ import folder_paths
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
import datetime
|
||||
import locale
|
||||
import subprocess # don't remove this
|
||||
from tqdm.auto import tqdm
|
||||
@ -17,6 +16,8 @@ import http.client
|
||||
import re
|
||||
import nodes
|
||||
import hashlib
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
try:
|
||||
import cm_global
|
||||
@ -28,7 +29,7 @@ except:
|
||||
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version is outdated. Please update to the latest version.")
|
||||
|
||||
|
||||
version = [2, 2, 5]
|
||||
version = [2, 7, 2]
|
||||
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
||||
print(f"### Loading: ComfyUI-Manager ({version_str})")
|
||||
|
||||
@ -102,9 +103,11 @@ sys.path.append('../..')
|
||||
|
||||
from torchvision.datasets.utils import download_url
|
||||
|
||||
comfy_ui_required_revision = 1917
|
||||
comfy_ui_required_revision = 1930
|
||||
comfy_ui_required_commit_datetime = datetime(2024, 1, 24, 0, 0, 0)
|
||||
|
||||
comfy_ui_revision = "Unknown"
|
||||
comfy_ui_commit_date = ""
|
||||
comfy_ui_commit_datetime = datetime(1900, 1, 1, 0, 0, 0)
|
||||
|
||||
comfy_path = os.path.dirname(folder_paths.__file__)
|
||||
custom_nodes_path = os.path.join(comfy_path, 'custom_nodes')
|
||||
@ -170,8 +173,11 @@ def write_config():
|
||||
'channel_url': get_config()['channel_url'],
|
||||
'share_option': get_config()['share_option'],
|
||||
'bypass_ssl': get_config()['bypass_ssl'],
|
||||
"file_logging": get_config()['file_logging'],
|
||||
'default_ui': get_config()['default_ui'],
|
||||
'component_policy': get_config()['component_policy'],
|
||||
'double_click_policy': get_config()['double_click_policy'],
|
||||
'windows_selector_event_loop_policy': get_config()['windows_selector_event_loop_policy'],
|
||||
}
|
||||
with open(config_path, 'w') as configfile:
|
||||
config.write(configfile)
|
||||
@ -190,8 +196,11 @@ def read_config():
|
||||
'channel_url': default_conf['channel_url'] if 'channel_url' in default_conf else 'https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main',
|
||||
'share_option': default_conf['share_option'] if 'share_option' in default_conf else 'all',
|
||||
'bypass_ssl': default_conf['bypass_ssl'] if 'bypass_ssl' in default_conf else False,
|
||||
'file_logging': default_conf['file_logging'] if 'file_logging' in default_conf else True,
|
||||
'default_ui': default_conf['default_ui'] if 'default_ui' in default_conf else 'none',
|
||||
'component_policy': default_conf['component_policy'] if 'component_policy' in default_conf else 'workflow',
|
||||
'double_click_policy': default_conf['double_click_policy'] if 'double_click_policy' in default_conf else 'copy-all',
|
||||
'windows_selector_event_loop_policy': default_conf['windows_selector_event_loop_policy'] if 'windows_selector_event_loop_policy' in default_conf else False,
|
||||
}
|
||||
|
||||
except Exception:
|
||||
@ -202,8 +211,11 @@ def read_config():
|
||||
'channel_url': 'https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main',
|
||||
'share_option': 'all',
|
||||
'bypass_ssl': False,
|
||||
'file_logging': True,
|
||||
'default_ui': 'none',
|
||||
'component_policy': 'workflow'
|
||||
'component_policy': 'workflow',
|
||||
'double_click_policy': 'copy-all',
|
||||
'windows_selector_event_loop_policy': False
|
||||
}
|
||||
|
||||
|
||||
@ -255,15 +267,12 @@ def set_component_policy(mode):
|
||||
get_config()['component_policy'] = mode
|
||||
|
||||
|
||||
def set_double_click_policy(mode):
|
||||
get_config()['double_click_policy'] = mode
|
||||
|
||||
|
||||
def try_install_script(url, repo_path, install_cmd):
|
||||
int_comfyui_revision = 0
|
||||
|
||||
if type(comfy_ui_revision) == int:
|
||||
int_comfyui_revision = comfy_ui_revision
|
||||
elif comfy_ui_revision.isdigit():
|
||||
int_comfyui_revision = int(comfy_ui_revision)
|
||||
|
||||
if platform.system() == "Windows" and int_comfyui_revision >= comfy_ui_required_revision:
|
||||
if platform.system() == "Windows" and comfy_ui_commit_datetime.date() >= comfy_ui_required_commit_datetime.date():
|
||||
if not os.path.exists(startup_script_path):
|
||||
os.makedirs(startup_script_path)
|
||||
|
||||
@ -279,9 +288,9 @@ def try_install_script(url, repo_path, install_cmd):
|
||||
|
||||
if platform.system() == "Windows":
|
||||
try:
|
||||
if int(comfy_ui_revision) < comfy_ui_required_revision:
|
||||
if comfy_ui_commit_datetime.date() < comfy_ui_required_commit_datetime.date():
|
||||
print("\n\n###################################################################")
|
||||
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision}) is too old. Please update to the latest version.")
|
||||
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision})[{comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version.")
|
||||
print(f"[WARN] The extension installation feature may not work properly in the current installed ComfyUI version on Windows environment.")
|
||||
print("###################################################################\n\n")
|
||||
except:
|
||||
@ -295,26 +304,29 @@ def try_install_script(url, repo_path, install_cmd):
|
||||
|
||||
def print_comfyui_version():
|
||||
global comfy_ui_revision
|
||||
global comfy_ui_commit_date
|
||||
global comfy_ui_commit_datetime
|
||||
global comfy_ui_hash
|
||||
|
||||
is_detached = False
|
||||
try:
|
||||
repo = git.Repo(os.path.dirname(folder_paths.__file__))
|
||||
|
||||
comfy_ui_revision = len(list(repo.iter_commits('HEAD')))
|
||||
current_branch = repo.active_branch.name
|
||||
comfy_ui_hash = repo.head.commit.hexsha
|
||||
|
||||
comfy_ui_hash = repo.head.commit.hexsha
|
||||
cm_global.variables['comfyui.revision'] = comfy_ui_revision
|
||||
|
||||
comfy_ui_commit_datetime = repo.head.commit.committed_datetime
|
||||
cm_global.variables['comfyui.commit_datetime'] = comfy_ui_commit_datetime
|
||||
|
||||
is_detached = repo.head.is_detached
|
||||
current_branch = repo.active_branch.name
|
||||
|
||||
try:
|
||||
if int(comfy_ui_revision) < comfy_ui_required_revision:
|
||||
print(f"\n\n## [WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision}) is too old. Please update to the latest version. ##\n\n")
|
||||
if comfy_ui_commit_datetime.date() < comfy_ui_required_commit_datetime.date():
|
||||
print(f"\n\n## [WARN] ComfyUI-Manager: Your ComfyUI version ({comfy_ui_revision})[{comfy_ui_commit_datetime.date()}] is too old. Please update to the latest version. ##\n\n")
|
||||
except:
|
||||
pass
|
||||
|
||||
comfy_ui_commit_date = repo.head.commit.committed_datetime.date()
|
||||
|
||||
# process on_revision_detected -->
|
||||
if 'cm.on_revision_detected_handler' in cm_global.variables:
|
||||
for k, f in cm_global.variables['cm.on_revision_detected_handler']:
|
||||
@ -330,11 +342,14 @@ def print_comfyui_version():
|
||||
# <--
|
||||
|
||||
if current_branch == "master":
|
||||
print(f"### ComfyUI Revision: {comfy_ui_revision} [{comfy_ui_hash[:8]}] | Released on '{comfy_ui_commit_date}'")
|
||||
print(f"### ComfyUI Revision: {comfy_ui_revision} [{comfy_ui_hash[:8]}] | Released on '{comfy_ui_commit_datetime.date()}'")
|
||||
else:
|
||||
print(f"### ComfyUI Revision: {comfy_ui_revision} on '{current_branch}' [{comfy_ui_hash[:8]}] | Released on '{comfy_ui_commit_date}'")
|
||||
print(f"### ComfyUI Revision: {comfy_ui_revision} on '{current_branch}' [{comfy_ui_hash[:8]}] | Released on '{comfy_ui_commit_datetime.date()}'")
|
||||
except:
|
||||
print("### ComfyUI Revision: UNKNOWN (The currently installed ComfyUI is not a Git repository)")
|
||||
if is_detached:
|
||||
print(f"### ComfyUI Revision: {comfy_ui_revision} [{comfy_ui_hash[:8]}] *DETACHED | Released on '{comfy_ui_commit_datetime.date()}'")
|
||||
else:
|
||||
print("### ComfyUI Revision: UNKNOWN (The currently installed ComfyUI is not a Git repository)")
|
||||
|
||||
|
||||
print_comfyui_version()
|
||||
@ -523,8 +538,10 @@ def git_pull(path):
|
||||
return True
|
||||
|
||||
|
||||
async def get_data(uri):
|
||||
print(f"FETCH DATA from: {uri}")
|
||||
async def get_data(uri, silent=False):
|
||||
if not silent:
|
||||
print(f"FETCH DATA from: {uri}")
|
||||
|
||||
if uri.startswith("http"):
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.get(uri) as resp:
|
||||
@ -592,7 +609,7 @@ def is_file_created_within_one_day(file_path):
|
||||
return False
|
||||
|
||||
file_creation_time = os.path.getctime(file_path)
|
||||
current_time = datetime.datetime.now().timestamp()
|
||||
current_time = datetime.now().timestamp()
|
||||
time_difference = current_time - file_creation_time
|
||||
|
||||
return time_difference <= 86400
|
||||
@ -1074,14 +1091,14 @@ def get_current_snapshot():
|
||||
|
||||
|
||||
def save_snapshot_with_postfix(postfix):
|
||||
now = datetime.datetime.now()
|
||||
now = datetime.now()
|
||||
|
||||
date_time_format = now.strftime("%Y-%m-%d_%H-%M-%S")
|
||||
file_name = f"{date_time_format}_{postfix}"
|
||||
date_time_format = now.strftime("%Y-%m-%d_%H-%M-%S")
|
||||
file_name = f"{date_time_format}_{postfix}"
|
||||
|
||||
path = os.path.join(os.path.dirname(__file__), 'snapshots', f"{file_name}.json")
|
||||
with open(path, "w") as json_file:
|
||||
json.dump(get_current_snapshot(), json_file, indent=4)
|
||||
path = os.path.join(os.path.dirname(__file__), 'snapshots', f"{file_name}.json")
|
||||
with open(path, "w") as json_file:
|
||||
json.dump(get_current_snapshot(), json_file, indent=4)
|
||||
|
||||
|
||||
@server.PromptServer.instance.routes.get("/snapshot/get_current")
|
||||
@ -1785,6 +1802,17 @@ async def component_policy(request):
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@server.PromptServer.instance.routes.get("/manager/dbl_click/policy")
|
||||
async def dbl_click_policy(request):
|
||||
if "value" in request.rel_url.query:
|
||||
set_double_click_policy(request.rel_url.query['value'])
|
||||
write_config()
|
||||
else:
|
||||
return web.Response(text=get_config()['double_click_policy'], status=200)
|
||||
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@server.PromptServer.instance.routes.get("/manager/channel_url_list")
|
||||
async def channel_url_list(request):
|
||||
channels = get_channel_dict()
|
||||
@ -1814,37 +1842,32 @@ async def get_notice(request):
|
||||
url = "github.com"
|
||||
path = "/ltdrdata/ltdrdata.github.io/wiki/News"
|
||||
|
||||
conn = http.client.HTTPSConnection(url)
|
||||
conn.request("GET", path)
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.get(f"https://{url}{path}") as response:
|
||||
if response.status == 200:
|
||||
# html_content = response.read().decode('utf-8')
|
||||
html_content = await response.text()
|
||||
|
||||
response = conn.getresponse()
|
||||
pattern = re.compile(r'<div class="markdown-body">([\s\S]*?)</div>')
|
||||
match = pattern.search(html_content)
|
||||
|
||||
try:
|
||||
if response.status == 200:
|
||||
html_content = response.read().decode('utf-8')
|
||||
if match:
|
||||
markdown_content = match.group(1)
|
||||
markdown_content += f"<HR>ComfyUI: {comfy_ui_revision}[{comfy_ui_hash[:6]}]({comfy_ui_commit_datetime.date()})"
|
||||
# markdown_content += f"<BR> ()"
|
||||
markdown_content += f"<BR>Manager: {version_str}"
|
||||
|
||||
pattern = re.compile(r'<div class="markdown-body">([\s\S]*?)</div>')
|
||||
match = pattern.search(html_content)
|
||||
try:
|
||||
if comfy_ui_required_commit_datetime.date() > comfy_ui_commit_datetime.date():
|
||||
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI is too OUTDATED!!!</P>' + markdown_content
|
||||
except:
|
||||
pass
|
||||
|
||||
if match:
|
||||
markdown_content = match.group(1)
|
||||
markdown_content += f"<HR>ComfyUI: {comfy_ui_revision}[{comfy_ui_hash[:6]}]({comfy_ui_commit_date})"
|
||||
# markdown_content += f"<BR> ()"
|
||||
markdown_content += f"<BR>Manager: {version_str}"
|
||||
|
||||
try:
|
||||
if comfy_ui_required_revision > int(comfy_ui_revision):
|
||||
markdown_content = f'<P style="text-align: center; color:red; background-color:white; font-weight:bold">Your ComfyUI is too OUTDATED!!!</P>' + markdown_content
|
||||
except:
|
||||
pass
|
||||
|
||||
return web.Response(text=markdown_content, status=200)
|
||||
return web.Response(text=markdown_content, status=200)
|
||||
else:
|
||||
return web.Response(text="Unable to retrieve Notice", status=200)
|
||||
else:
|
||||
return web.Response(text="Unable to retrieve Notice", status=200)
|
||||
else:
|
||||
return web.Response(text="Unable to retrieve Notice", status=200)
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
@server.PromptServer.instance.routes.get("/manager/reboot")
|
||||
@ -2355,7 +2378,7 @@ async def default_cache_update():
|
||||
cache_uri = str(simple_hash(uri)) + '_' + filename
|
||||
cache_uri = os.path.join(cache_dir, cache_uri)
|
||||
|
||||
json_obj = await get_data(uri)
|
||||
json_obj = await get_data(uri, True)
|
||||
|
||||
with cache_lock:
|
||||
with open(cache_uri, "w", encoding='utf-8') as file:
|
||||
@ -2369,9 +2392,15 @@ async def default_cache_update():
|
||||
|
||||
await asyncio.gather(a, b, c, d)
|
||||
|
||||
|
||||
threading.Thread(target=lambda: asyncio.run(default_cache_update())).start()
|
||||
|
||||
|
||||
if not os.path.exists(config_path):
|
||||
get_config()
|
||||
write_config()
|
||||
|
||||
|
||||
WEB_DIRECTORY = "js"
|
||||
NODE_CLASS_MAPPINGS = {}
|
||||
__all__ = ['NODE_CLASS_MAPPINGS']
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -18,12 +18,13 @@ import { ModelInstaller } from "./model-downloader.js";
|
||||
import { manager_instance, setManagerInstance, install_via_git_url, install_pip, rebootAPI, free_models } from "./common.js";
|
||||
import { ComponentBuilderDialog, load_components, set_component_policy, getPureName } from "./component-builder.js";
|
||||
import { ComponentsManager } from "./components-manager.js";
|
||||
import { set_double_click_policy } from "./node_fixer.js";
|
||||
|
||||
var docStyle = document.createElement('style');
|
||||
docStyle.innerHTML = `
|
||||
#cm-manager-dialog {
|
||||
width: 1000px;
|
||||
height: 495px;
|
||||
height: 520px;
|
||||
box-sizing: content-box;
|
||||
z-index: 10000;
|
||||
}
|
||||
@ -137,7 +138,7 @@ docStyle.innerHTML = `
|
||||
|
||||
.cm-notice-board {
|
||||
width: 290px;
|
||||
height: 230px;
|
||||
height: 270px;
|
||||
overflow: auto;
|
||||
color: var(--input-text);
|
||||
border: 1px solid var(--descrip-text);
|
||||
@ -911,6 +912,27 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
set_component_policy(event.target.value);
|
||||
});
|
||||
|
||||
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.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: 'copy-all', text: 'Double-Click: Copy All Connections' }, []));
|
||||
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-input', text: 'Double-Click: Copy Input Connections' }, []));
|
||||
dbl_click_policy_combo.appendChild($el('option', { value: 'possible-input', text: 'Double-Click: Possible Input Connections' }, []));
|
||||
dbl_click_policy_combo.appendChild($el('option', { value: 'dual', text: 'Double-Click: Possible(left) + Copy(right)' }, []));
|
||||
|
||||
api.fetchApi('/manager/dbl_click/policy')
|
||||
.then(response => response.text())
|
||||
.then(data => {
|
||||
dbl_click_policy_combo.value = data;
|
||||
set_double_click_policy(data);
|
||||
});
|
||||
|
||||
dbl_click_policy_combo.addEventListener('change', function (event) {
|
||||
api.fetchApi(`/manager/dbl_click/policy?value=${event.target.value}`);
|
||||
set_double_click_policy(event.target.value);
|
||||
});
|
||||
|
||||
api.fetchApi('/manager/share_option')
|
||||
.then(response => response.text())
|
||||
.then(data => {
|
||||
@ -940,6 +962,7 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
default_ui_combo,
|
||||
share_combo,
|
||||
component_policy_combo,
|
||||
dbl_click_policy_combo,
|
||||
$el("br", {}, []),
|
||||
|
||||
$el("br", {}, []),
|
||||
@ -1044,7 +1067,7 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
onclick: (e) => {
|
||||
const last_visited_site = localStorage.getItem("wg_last_visited")
|
||||
if (!!last_visited_site) {
|
||||
window.open(last_visited_site, "comfyui-workflow-gallery");
|
||||
window.open(last_visited_site, last_visited_site);
|
||||
} else {
|
||||
this.handleWorkflowGalleryButtonClick(e)
|
||||
}
|
||||
@ -1171,7 +1194,7 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
callback: () => {
|
||||
const url = "https://openart.ai/workflows/dev";
|
||||
localStorage.setItem("wg_last_visited", url);
|
||||
window.open(url, "comfyui-workflow-gallery");
|
||||
window.open(url, url);
|
||||
modifyButtonStyle(url);
|
||||
},
|
||||
},
|
||||
@ -1180,7 +1203,7 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
callback: () => {
|
||||
const url = "https://youml.com/?from=comfyui-share";
|
||||
localStorage.setItem("wg_last_visited", url);
|
||||
window.open(url, "comfyui-workflow-gallery");
|
||||
window.open(url, url);
|
||||
modifyButtonStyle(url);
|
||||
},
|
||||
},
|
||||
@ -1189,7 +1212,16 @@ class ManagerMenuDialog extends ComfyDialog {
|
||||
callback: () => {
|
||||
const url = "https://comfyworkflows.com/";
|
||||
localStorage.setItem("wg_last_visited", url);
|
||||
window.open(url, "comfyui-workflow-gallery");
|
||||
window.open(url, url);
|
||||
modifyButtonStyle(url);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Open 'flowt.ai'",
|
||||
callback: () => {
|
||||
const url = "https://flowt.ai/";
|
||||
localStorage.setItem("wg_last_visited", url);
|
||||
window.open(url, url);
|
||||
modifyButtonStyle(url);
|
||||
},
|
||||
},
|
||||
@ -1286,7 +1318,10 @@ app.registerExtension({
|
||||
async nodeCreated(node, app) {
|
||||
if(!node.badge_enabled) {
|
||||
node.getNickname = function () { return getNickname(node, node.comfyClass.trim()) };
|
||||
const orig = node.__proto__.onDrawForeground;
|
||||
let orig = node.onDrawForeground;
|
||||
if(!orig)
|
||||
orig = node.__proto__.onDrawForeground;
|
||||
|
||||
node.onDrawForeground = function (ctx) {
|
||||
drawBadge(node, orig, arguments)
|
||||
};
|
||||
|
||||
176
js/node_fixer.js
176
js/node_fixer.js
@ -1,6 +1,16 @@
|
||||
import { app } from "../../scripts/app.js";
|
||||
import { api } from "../../scripts/api.js";
|
||||
|
||||
let double_click_policy = "copy-all";
|
||||
|
||||
api.fetchApi('/manager/dbl_click/policy')
|
||||
.then(response => response.text())
|
||||
.then(data => set_double_click_policy(data));
|
||||
|
||||
export function set_double_click_policy(mode) {
|
||||
double_click_policy = mode;
|
||||
}
|
||||
|
||||
function addMenuHandler(nodeType, cb) {
|
||||
const getOpts = nodeType.prototype.getExtraMenuOptions;
|
||||
nodeType.prototype.getExtraMenuOptions = function () {
|
||||
@ -10,8 +20,88 @@ function addMenuHandler(nodeType, cb) {
|
||||
};
|
||||
}
|
||||
|
||||
function distance(node1, node2) {
|
||||
let dx = (node1.pos[0] + node1.size[0]/2) - (node2.pos[0] + node2.size[0]/2);
|
||||
let dy = (node1.pos[1] + node1.size[1]/2) - (node2.pos[1] + node2.size[1]/2);
|
||||
return Math.sqrt(dx * dx + dy * dy);
|
||||
}
|
||||
|
||||
function node_info_copy(src, dest) {
|
||||
function lookup_nearest_nodes(node) {
|
||||
let nearest_distance = Infinity;
|
||||
let nearest_node = null;
|
||||
for(let other of app.graph._nodes) {
|
||||
if(other === node)
|
||||
continue;
|
||||
|
||||
let dist = distance(node, other);
|
||||
if (dist < nearest_distance && dist < 1000) {
|
||||
nearest_distance = dist;
|
||||
nearest_node = other;
|
||||
}
|
||||
}
|
||||
|
||||
return nearest_node;
|
||||
}
|
||||
|
||||
function lookup_nearest_inputs(node) {
|
||||
let input_map = {};
|
||||
|
||||
for(let i in node.inputs) {
|
||||
let input = node.inputs[i];
|
||||
|
||||
if(input.link || input_map[input.type])
|
||||
continue;
|
||||
|
||||
input_map[input.type] = {distance: Infinity, input_name: input.name, node: null, slot: null};
|
||||
}
|
||||
|
||||
let x = node.pos[0];
|
||||
let y = node.pos[1] + node.size[1]/2;
|
||||
|
||||
for(let other of app.graph._nodes) {
|
||||
if(other === node || !other.outputs)
|
||||
continue;
|
||||
|
||||
let dx = x - (other.pos[0] + other.size[0]);
|
||||
let dy = y - (other.pos[1] + other.size[1]/2);
|
||||
|
||||
if(dx < 0)
|
||||
continue;
|
||||
|
||||
let dist = Math.sqrt(dx * dx + dy * dy);
|
||||
|
||||
for(let input_type in input_map) {
|
||||
for(let j in other.outputs) {
|
||||
let output = other.outputs[j];
|
||||
if(output.type == input_type) {
|
||||
if(input_map[input_type].distance > dist) {
|
||||
input_map[input_type].distance = dist;
|
||||
input_map[input_type].node = other;
|
||||
input_map[input_type].slot = parseInt(j);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let res = {};
|
||||
for (let i in input_map) {
|
||||
if (input_map[i].node) {
|
||||
res[i] = input_map[i];
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
function connect_inputs(nearest_inputs, node) {
|
||||
for(let i in nearest_inputs) {
|
||||
let info = nearest_inputs[i];
|
||||
info.node.connect(info.slot, node.id, info.input_name);
|
||||
}
|
||||
}
|
||||
|
||||
function node_info_copy(src, dest, connect_both) {
|
||||
// copy input connections
|
||||
for(let i in src.inputs) {
|
||||
let input = src.inputs[i];
|
||||
@ -23,25 +113,27 @@ function node_info_copy(src, dest) {
|
||||
}
|
||||
|
||||
// copy output connections
|
||||
let output_links = {};
|
||||
for(let i in src.outputs) {
|
||||
let output = src.outputs[i];
|
||||
if(output.links) {
|
||||
let links = [];
|
||||
for(let j in output.links) {
|
||||
links.push(app.graph.links[output.links[j]]);
|
||||
if(connect_both) {
|
||||
let output_links = {};
|
||||
for(let i in src.outputs) {
|
||||
let output = src.outputs[i];
|
||||
if(output.links) {
|
||||
let links = [];
|
||||
for(let j in output.links) {
|
||||
links.push(app.graph.links[output.links[j]]);
|
||||
}
|
||||
output_links[output.name] = links;
|
||||
}
|
||||
output_links[output.name] = links;
|
||||
}
|
||||
}
|
||||
|
||||
for(let i in dest.outputs) {
|
||||
let links = output_links[dest.outputs[i].name];
|
||||
if(links) {
|
||||
for(let j in links) {
|
||||
let link = links[j];
|
||||
let target_node = app.graph.getNodeById(link.target_id);
|
||||
dest.connect(parseInt(i), target_node, link.target_slot);
|
||||
for(let i in dest.outputs) {
|
||||
let links = output_links[dest.outputs[i].name];
|
||||
if(links) {
|
||||
for(let j in links) {
|
||||
let link = links[j];
|
||||
let target_node = app.graph.getNodeById(link.target_id);
|
||||
dest.connect(parseInt(i), target_node, link.target_slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -52,6 +144,56 @@ function node_info_copy(src, dest) {
|
||||
app.registerExtension({
|
||||
name: "Comfy.Manager.NodeFixer",
|
||||
|
||||
async nodeCreated(node, app) {
|
||||
let orig_dblClick = node.onDblClick;
|
||||
node.onDblClick = function (e, pos, self) {
|
||||
orig_dblClick?.apply?.(this, arguments);
|
||||
|
||||
if((!node.inputs && !node.outputs) || pos[1] > 0)
|
||||
return;
|
||||
|
||||
switch(double_click_policy) {
|
||||
case "copy-all":
|
||||
case "copy-input":
|
||||
{
|
||||
if(node.inputs?.some(x => x.link != null) || node.outputs?.some(x => x.links != null && x.links.length > 0) )
|
||||
return;
|
||||
|
||||
let src_node = lookup_nearest_nodes(node);
|
||||
if(src_node)
|
||||
node_info_copy(src_node, node, double_click_policy == "copy-all");
|
||||
}
|
||||
break;
|
||||
case "possible-input":
|
||||
{
|
||||
let nearest_inputs = lookup_nearest_inputs(node);
|
||||
if(nearest_inputs)
|
||||
connect_inputs(nearest_inputs, node);
|
||||
}
|
||||
break;
|
||||
case "dual":
|
||||
{
|
||||
if(pos[0] < node.size[0]/2) {
|
||||
// left: possible-input
|
||||
let nearest_inputs = lookup_nearest_inputs(node);
|
||||
if(nearest_inputs)
|
||||
connect_inputs(nearest_inputs, node);
|
||||
}
|
||||
else {
|
||||
// right: copy-all
|
||||
if(node.inputs?.some(x => x.link != null) || node.outputs?.some(x => x.links != null && x.links.length > 0) )
|
||||
return;
|
||||
|
||||
let src_node = lookup_nearest_nodes(node);
|
||||
if(src_node)
|
||||
node_info_copy(src_node, node, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
beforeRegisterNodeDef(nodeType, nodeData, app) {
|
||||
addMenuHandler(nodeType, function (_, options) {
|
||||
options.push({
|
||||
|
||||
596
model-list.json
596
model-list.json
@ -86,9 +86,9 @@
|
||||
"base": "upscale",
|
||||
"save_path": "default",
|
||||
"description": "4x-AnimeSharp upscaler model",
|
||||
"reference": "https://huggingface.co/konohashinobi4/4xAnimesharp",
|
||||
"reference": "https://huggingface.co/Kim2091/AnimeSharp/",
|
||||
"filename": "4x-AnimeSharp.pth",
|
||||
"url": "https://huggingface.co/konohashinobi4/4xAnimesharp/resolve/main/4x-AnimeSharp.pth"
|
||||
"url": "https://huggingface.co/Kim2091/AnimeSharp/resolve/main/4x-AnimeSharp.pth"
|
||||
},
|
||||
{
|
||||
"name": "4x-UltraSharp",
|
||||
@ -96,9 +96,9 @@
|
||||
"base": "upscale",
|
||||
"save_path": "default",
|
||||
"description": "4x-UltraSharp upscaler model",
|
||||
"reference": "https://upscale.wiki/wiki/Model_Database",
|
||||
"reference": "https://huggingface.co/Kim2091/UltraSharp/",
|
||||
"filename": "4x-UltraSharp.pth",
|
||||
"url": "https://huggingface.co/datasets/Kizi-Art/Upscale/resolve/fa98e357882a23b8e7928957a39462fbfaee1af5/4x-UltraSharp.pth"
|
||||
"url": "https://huggingface.co/Kim2091/UltraSharp/resolve/main/4x-UltraSharp.pth"
|
||||
},
|
||||
{
|
||||
"name": "4x_NMKD-Siax_200k",
|
||||
@ -145,7 +145,7 @@
|
||||
"type": "insightface",
|
||||
"base" : "inswapper",
|
||||
"save_path": "insightface",
|
||||
"description": "[264MB] Checkpoint of the insightface swapper model<BR>(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,<BR>ComfyUI roop and comfy_mtb)",
|
||||
"description": "[264MB] Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)",
|
||||
"reference": "https://github.com/facefusion/facefusion-assets",
|
||||
"filename": "inswapper_128_fp16.onnx",
|
||||
"url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx"
|
||||
@ -155,7 +155,7 @@
|
||||
"type": "insightface",
|
||||
"base" : "inswapper",
|
||||
"save_path": "insightface",
|
||||
"description": "[529MB] Checkpoint of the insightface swapper model<BR>(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,<BR>ComfyUI roop and comfy_mtb)",
|
||||
"description": "[529MB] Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)",
|
||||
"reference": "https://github.com/facefusion/facefusion-assets",
|
||||
"filename": "inswapper_128.onnx",
|
||||
"url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx"
|
||||
@ -205,7 +205,7 @@
|
||||
"type": "checkpoints",
|
||||
"base": "SVD",
|
||||
"save_path": "checkpoints/SVD",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.<BR>NOTE: 14 frames @ 576x1024",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 14 frames @ 576x1024",
|
||||
"reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid",
|
||||
"filename": "svd.safetensors",
|
||||
"url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors"
|
||||
@ -225,7 +225,7 @@
|
||||
"type": "checkpoints",
|
||||
"base": "SVD",
|
||||
"save_path": "checkpoints/SVD",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.<BR>NOTE: 25 frames @ 576x1024 ",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 25 frames @ 576x1024 ",
|
||||
"reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt",
|
||||
"filename": "svd_xt.safetensors",
|
||||
"url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors"
|
||||
@ -499,7 +499,17 @@
|
||||
"reference": "https://huggingface.co/hakurei/waifu-diffusion-v1-4",
|
||||
"filename": "kl-f8-anime2.ckpt",
|
||||
"url": "https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt"
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "OpenAI Consistency Decoder",
|
||||
"type": "VAE",
|
||||
"base": "SD1.5 VAE",
|
||||
"save_path": "vae/openai_consistency_decoder",
|
||||
"description": "[2.3GB] OpenAI Consistency Decoder. Improved decoding for stable diffusion vaes.",
|
||||
"reference": "https://github.com/openai/consistencydecoder",
|
||||
"filename": "decoder.pt",
|
||||
"url": "https://openaipublic.azureedge.net/diff-vae/c9cebd3132dd9c42936d803e33424145a748843c8f716c0814838bdc8a2fe7cb/decoder.pt"
|
||||
},
|
||||
{
|
||||
"name": "LCM LoRA SD1.5",
|
||||
"type": "lora",
|
||||
@ -657,8 +667,8 @@
|
||||
"save_path": "default",
|
||||
"description": "TemporalNet was a ControlNet model designed to enhance the temporal consistency of generated outputs",
|
||||
"reference": "https://huggingface.co/CiaraRowles/TemporalNet2",
|
||||
"filename": "temporalnetversion2.ckpt",
|
||||
"url": "https://huggingface.co/CiaraRowles/TemporalNet2/resolve/main/temporalnetversion2.ckpt"
|
||||
"filename": "temporalnetversion2.safetensors",
|
||||
"url": "https://huggingface.co/CiaraRowles/TemporalNet2/resolve/main/temporalnetversion2.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "CiaraRowles/TemporalNet1XL (1.0)",
|
||||
@ -673,8 +683,8 @@
|
||||
{
|
||||
"name": "CLIPVision model (stabilityai/clip_vision_g)",
|
||||
"type": "clip_vision",
|
||||
"base": "SDXL",
|
||||
"save_path": "clip_vision/SDXL",
|
||||
"base": "vit-g",
|
||||
"save_path": "clip_vision",
|
||||
"description": "[3.69GB] clip_g vision model",
|
||||
"reference": "https://huggingface.co/stabilityai/control-lora",
|
||||
"filename": "clip_vision_g.safetensors",
|
||||
@ -683,38 +693,18 @@
|
||||
{
|
||||
"name": "CLIPVision model (openai/clip-vit-large)",
|
||||
"type": "clip_vision",
|
||||
"base": "SD1.5",
|
||||
"save_path": "clip_vision/SD1.5",
|
||||
"base": "ViT-L",
|
||||
"save_path": "clip_vision",
|
||||
"description": "[1.7GB] CLIPVision model (needed for styles model)",
|
||||
"reference": "https://huggingface.co/openai/clip-vit-large-patch14",
|
||||
"filename": "pytorch_model.bin",
|
||||
"url": "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/pytorch_model.bin"
|
||||
},
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) 1.5",
|
||||
"type": "clip_vision",
|
||||
"base": "SD1.5",
|
||||
"save_path": "clip_vision/SD1.5",
|
||||
"description": "[2.5GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "pytorch_model.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/pytorch_model.bin"
|
||||
},
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) XL",
|
||||
"type": "clip_vision",
|
||||
"base": "SDXL",
|
||||
"save_path": "clip_vision/SDXL",
|
||||
"description": "[3.69GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "pytorch_model.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/pytorch_model.bin"
|
||||
"filename": "clip-vit-large-patch14.bin",
|
||||
"url": "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/model.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) CLIP-ViT-H-14-laion2B-s32B-b79K",
|
||||
"type": "clip_vision",
|
||||
"base": "SD1.5",
|
||||
"save_path": "clip_vision/SD1.5",
|
||||
"base": "ViT-H",
|
||||
"save_path": "clip_vision",
|
||||
"description": "[2.5GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors",
|
||||
@ -723,8 +713,8 @@
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) CLIP-ViT-bigG-14-laion2B-39B-b160k",
|
||||
"type": "clip_vision",
|
||||
"base": "SDXL",
|
||||
"save_path": "clip_vision/SDXL",
|
||||
"base": "ViT-G",
|
||||
"save_path": "clip_vision",
|
||||
"description": "[3.69GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors",
|
||||
@ -998,7 +988,7 @@
|
||||
"type": "controlnet",
|
||||
"base": "SD1.5",
|
||||
"save_path": "default",
|
||||
"description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11f1e<BR>You need to this model for <B>Tiled Resample</B>",
|
||||
"description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11f1e\nYou need to this model for <B>Tiled Resample</B>",
|
||||
"reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors",
|
||||
"filename": "control_v11f1e_sd15_tile_fp16.safetensors",
|
||||
"url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors"
|
||||
@ -1256,56 +1246,220 @@
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/mmd_sd_v14.ckpt (comfyui-animatediff)",
|
||||
"name": "animatediff/mmd_sd_v14.ckpt (comfyui-animatediff) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/comfyui-animatediff/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "AnimateDiff",
|
||||
"description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sd_v14.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/mm_sd_v15.ckpt (comfyui-animatediff)",
|
||||
"name": "animatediff/mm_sd_v15.ckpt (comfyui-animatediff) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/comfyui-animatediff/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "AnimateDiff",
|
||||
"description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sd_v15.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/mmd_sd_v14.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/mmd_sd_v14.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sd_v14.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/mm_sd_v15.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/mm_sd_v15.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sd_v15.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/mm_sd_v15_v2.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/mm_sd_v15_v2.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sd_v15_v2.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v3_sd15_mm.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/guoyww/animatediff",
|
||||
"filename": "v3_sd15_mm.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SDXL",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sdxl_v10_beta.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (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/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_high.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (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/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_mid.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth"
|
||||
},
|
||||
{
|
||||
"name": "CiaraRowles/temporaldiff-v1-animatediff.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/CiaraRowles/TemporalDiff",
|
||||
"filename": "temporaldiff-v1-animatediff.ckpt",
|
||||
"url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanLeft.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanRight.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingAnticlockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingClockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltDown.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltUp.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomIn.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomOut.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.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"
|
||||
},
|
||||
{
|
||||
"name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.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_v1.1.ckpt",
|
||||
"url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt"
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "animatediff/v3_sd15_sparsectrl_rgb.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "controlnet",
|
||||
@ -1326,16 +1480,6 @@
|
||||
"filename": "v3_sd15_sparsectrl_scribble.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_scribble.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v3_sd15_mm.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v3_sd15_mm.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v3_sd15_adapter.ckpt",
|
||||
"type": "lora",
|
||||
@ -1347,158 +1491,6 @@
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_adapter.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SDXL",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sdxl_v10_beta.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_high.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_mid.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth"
|
||||
},
|
||||
{
|
||||
"name": "CiaraRowles/temporaldiff-v1-animatediff.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/CiaraRowles/TemporalDiff",
|
||||
"filename": "temporaldiff-v1-animatediff.ckpt",
|
||||
"url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanLeft.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanRight.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingAnticlockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingClockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltDown.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltUp.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomIn.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomOut.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"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)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"reference": "https://huggingface.co/Lightricks/LongAnimateDiff",
|
||||
"filename": "lt_long_mm_16_64_frames_v1.1.ckpt",
|
||||
"url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "TencentARC/motionctrl.pth",
|
||||
"type": "checkpoints",
|
||||
@ -1575,27 +1567,77 @@
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Model (SD1.5)",
|
||||
"description": "IP-Adapter-FaceID Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Portrait Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid-portrait_sd15.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid_sdxl.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid_sdxl.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plusv2_sdxl.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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_sd15_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SD1.5",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID LoRA Model (SD1.5)",
|
||||
"description": "IP-Adapter-FaceID LoRA Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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",
|
||||
"type": "lora",
|
||||
"base": "SD1.5",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus LoRA Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"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)",
|
||||
"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"
|
||||
@ -1605,11 +1647,31 @@
|
||||
"type": "lora",
|
||||
"base": "SD1.5",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SD1.5)",
|
||||
"description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid-plusv2_sd15_lora.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid_sdxl_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SDXL",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID LoRA Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid_sdxl_lora.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SDXL",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter_sdxl.safetensors",
|
||||
"type": "IP-Adapter",
|
||||
@ -1625,7 +1687,7 @@
|
||||
"type": "IP-Adapter",
|
||||
"base": "SDXL",
|
||||
"save_path": "ipadapter",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "ip-adapter_sdxl_vit-h.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors"
|
||||
@ -1635,7 +1697,7 @@
|
||||
"type": "IP-Adapter",
|
||||
"base": "SDXL",
|
||||
"save_path": "ipadapter",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "ip-adapter-plus_sdxl_vit-h.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors"
|
||||
@ -1645,7 +1707,7 @@
|
||||
"type": "IP-Adapter",
|
||||
"base": "SDXL",
|
||||
"save_path": "ipadapter",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints",
|
||||
"description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "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"
|
||||
@ -1740,6 +1802,86 @@
|
||||
"reference": "https://github.com/xinntao/facexlib",
|
||||
"filename": "yolov5n-face.pth",
|
||||
"url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5n-face.pth"
|
||||
},
|
||||
{
|
||||
"name": "photomaker-v1.bin",
|
||||
"type": "photomaker",
|
||||
"base": "SDXL",
|
||||
"save_path": "photomaker",
|
||||
"description": "PhotoMaker model. This model is compatible with SDXL.",
|
||||
"reference": "https://huggingface.co/TencentARC/PhotoMaker",
|
||||
"filename": "photomaker-v1.bin",
|
||||
"url": "https://huggingface.co/TencentARC/PhotoMaker/resolve/main/photomaker-v1.bin"
|
||||
},
|
||||
{
|
||||
"name": "1k3d68.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 1k3d68.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "1k3d68.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/1k3d68.onnx"
|
||||
},
|
||||
{
|
||||
"name": "2d106det.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 2d106det.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "2d106det.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/2d106det.onnx"
|
||||
},
|
||||
{
|
||||
"name": "genderage.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 genderage.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "genderage.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/genderage.onnx"
|
||||
},
|
||||
{
|
||||
"name": "glintr100.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 glintr100.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "glintr100.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/glintr100.onnx"
|
||||
},
|
||||
{
|
||||
"name": "scrfd_10g_bnkps.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 scrfd_10g_bnkps.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "scrfd_10g_bnkps.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/scrfd_10g_bnkps.onnx"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter.bin",
|
||||
"type": "instantid",
|
||||
"base": "SDXL",
|
||||
"save_path": "instantid",
|
||||
"description": "InstantId main model based on IpAdapter",
|
||||
"reference": "https://huggingface.co/InstantX/InstantID",
|
||||
"filename": "ip-adapter.bin",
|
||||
"url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin"
|
||||
},
|
||||
{
|
||||
"name": "diffusion_pytorch_model.safetensors",
|
||||
"type": "controlnet",
|
||||
"base": "SDXL",
|
||||
"save_path": "controlnet/instantid",
|
||||
"description": "InstantId controlnet model",
|
||||
"reference": "https://huggingface.co/InstantX/InstantID",
|
||||
"filename": "diffusion_pytorch_model.safetensors",
|
||||
"url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
@ -9,15 +9,156 @@
|
||||
"description": "If you see this message, your ComfyUI-Manager is outdated.\nDev channel provides only the list of the developing nodes. If you want to find the complete node list, please go to the Default channel."
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"author": "shiimizu",
|
||||
"title": "shiimizu/ComfyUI PhotoMaker",
|
||||
"reference": "https://github.com/shiimizu/ComfyUI-PhotoMaker",
|
||||
"author": "shadowcz007",
|
||||
"title": "comfyui-musicgen",
|
||||
"reference": "https://github.com/shadowcz007/comfyui-musicgen",
|
||||
"files": [
|
||||
"https://github.com/shiimizu/ComfyUI-PhotoMaker"
|
||||
"https://github.com/shadowcz007/comfyui-musicgen"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI reference implementation for [a/PhotoMaker](https://github.com/TencentARC/PhotoMaker) models. [w/WARN:Currently, it is not distinguishable because it shares the same repository name as https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker]"
|
||||
"description": "Nodes:Musicgen"
|
||||
},
|
||||
{
|
||||
"author": "Extraltodeus",
|
||||
"title": "ComfyUI-variableCFGandAntiBurn [WIP]",
|
||||
"reference": "https://github.com/Extraltodeus/ComfyUI-variableCFGandAntiBurn",
|
||||
"files": [
|
||||
"https://github.com/Extraltodeus/ComfyUI-variableCFGandAntiBurn"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Continuous CFG rescaler (pre CFG), Intermediary latent merge (post CFG), Intensity/Brightness limiter (post CFG), Dynamic renoising (post CFG), Automatic CFG scale (pre/post CFG), CFG multiplier per channel (pre CFG), Self-Attention Guidance delayed activation mod (post CFG)"
|
||||
},
|
||||
{
|
||||
"author": "kijai",
|
||||
"title": "ComfyUI-ADMotionDirector [WIP]",
|
||||
"reference": "https://github.com/kijai/ComfyUI-ADMotionDirector",
|
||||
"files": [
|
||||
"https://github.com/kijai/ComfyUI-ADMotionDirector"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom nodes for using [a/AnimateDiff-MotionDirector](https://github.com/ExponentialML/AnimateDiff-MotionDirector)\nAfter training, the LoRAs are intended to be used with the ComfyUI Extension [a/ComfyUI-AnimateDiff-Evolved](https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved)."
|
||||
},
|
||||
{
|
||||
"author": "shadowcz007",
|
||||
"title": "comfyui-CLIPSeg",
|
||||
"reference": "https://github.com/shadowcz007/comfyui-CLIPSeg",
|
||||
"files": [
|
||||
"https://github.com/shadowcz007/comfyui-CLIPSeg"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Download [a/CLIPSeg](https://huggingface.co/CIDAS/clipseg-rd64-refined/tree/main), move to : models/clipseg"
|
||||
},
|
||||
{
|
||||
"author": "dezi-ai",
|
||||
"title": "ComfyUI Animate LCM",
|
||||
"reference": "https://github.com/dezi-ai/ComfyUI-AnimateLCM",
|
||||
"files": [
|
||||
"https://github.com/dezi-ai/ComfyUI-AnimateLCM"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI implementation for [a/AnimateLCM](https://animatelcm.github.io/) [[a/paper](https://arxiv.org/abs/2402.00769)].\b[w/This extension includes a large number of nodes imported from the existing custom nodes, increasing the likelihood of conflicts.]"
|
||||
},
|
||||
{
|
||||
"author": "ZHO-ZHO-ZHO",
|
||||
"title": "ComfyUI-BRIA_AI-RMBG",
|
||||
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG",
|
||||
"files": [
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial [a/BRIA Background Removal v1.4](https://huggingface.co/briaai/RMBG-1.4) of BRIA RMBG Model for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "stutya",
|
||||
"title": "ComfyUI-Terminal [UNSAFE]",
|
||||
"reference": "https://github.com/stutya/ComfyUI-Terminal",
|
||||
"files": [
|
||||
"https://github.com/stutya/ComfyUI-Terminal"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Run Terminal Commands from ComfyUI.\n[w/This extension poses a risk of executing arbitrary commands through workflow execution. Please be cautious.]"
|
||||
},
|
||||
{
|
||||
"author": "marcueberall",
|
||||
"title": "ComfyUI-BuildPath",
|
||||
"reference": "https://github.com/marcueberall/ComfyUI-BuildPath",
|
||||
"files": [
|
||||
"https://github.com/marcueberall/ComfyUI-BuildPath"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes: Build Path Adv."
|
||||
},
|
||||
{
|
||||
"author": "LotzF",
|
||||
"title": "ComfyUI simple ChatGPT completion [UNSAFE]",
|
||||
"reference": "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion",
|
||||
"files": [
|
||||
"https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple node to request ChatGPT completions. [w/Do not share your workflows including the API key! I'll take no responsibility for your leaked keys.]"
|
||||
},
|
||||
{
|
||||
"author": "blepping",
|
||||
"title": "ComfyUI-sonar (WIP)",
|
||||
"reference": "https://github.com/blepping/ComfyUI-sonar",
|
||||
"files": [
|
||||
"https://github.com/blepping/ComfyUI-sonar"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Extremely WIP and untested implementation of Sonar sampling. Currently it may not be even close to working properly. Only supports Euler and Euler Ancestral sampling. See [a/stable-diffusion-webui-sonar](https://github.com/Kahsolt/stable-diffusion-webui-sonar) for a more in-depth explanation."
|
||||
},
|
||||
{
|
||||
"author": "kappa54m",
|
||||
"title": "ComfyUI_Usability (WIP)",
|
||||
"reference": "https://github.com/kappa54m/ComfyUI_Usability",
|
||||
"files": [
|
||||
"https://github.com/kappa54m/ComfyUI_Usability"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes: Load Image Dedup, Load Image By Path."
|
||||
},
|
||||
{
|
||||
"author": "17Retoucher",
|
||||
"title": "ComfyUI_Fooocus",
|
||||
"reference": "https://github.com/17Retoucher/ComfyUI_Fooocus",
|
||||
"files": [
|
||||
"https://github.com/17Retoucher/ComfyUI_Fooocus"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes that help reproduce image generation in Fooocus."
|
||||
},
|
||||
{
|
||||
"author": "nkchocoai",
|
||||
"title": "ComfyUI-PromptUtilities",
|
||||
"reference": "https://github.com/nkchocoai/ComfyUI-PromptUtilities",
|
||||
"files": [
|
||||
"https://github.com/nkchocoai/ComfyUI-PromptUtilities"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes: Format String, Join String List, Load Preset, Load Preset (Advanced), Const String, Const String (multi line). Add useful nodes related to prompt."
|
||||
},
|
||||
{
|
||||
"author": "BadCafeCode",
|
||||
"title": "execution-inversion-demo-comfyui",
|
||||
"reference": "https://github.com/BadCafeCode/execution-inversion-demo-comfyui",
|
||||
"files": [
|
||||
"https://github.com/BadCafeCode/execution-inversion-demo-comfyui"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "execution-inversion-demo-comfyui"
|
||||
},
|
||||
{
|
||||
"author": "unanan",
|
||||
"title": "ComfyUI-clip-interrogator [WIP]",
|
||||
"reference": "https://github.com/unanan/ComfyUI-clip-interrogator",
|
||||
"files": [
|
||||
"https://github.com/unanan/ComfyUI-clip-interrogator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial ComfyUI extension of clip-interrogator"
|
||||
},
|
||||
{
|
||||
"author": "prismwastaken",
|
||||
@ -29,26 +170,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "prism-tools"
|
||||
},
|
||||
{
|
||||
"author": "DimaChaichan",
|
||||
"title": "LAizypainter-Exporter-ComfyUI [WIP]",
|
||||
"reference": "https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI",
|
||||
"files": [
|
||||
"https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "WIP"
|
||||
},
|
||||
{
|
||||
"author": "ZHO-ZHO-ZHO",
|
||||
"title": "ZHO-ZHO-ZHO/ComfyUI PhotoMaker (WIP)",
|
||||
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker",
|
||||
"files": [
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial implementation of [a/PhotoMaker](https://github.com/TencentARC/PhotoMaker) for ComfyUI(WIP) Testing……\n[w/WARN:Currently, it is not distinguishable because it shares the same repository name as https://github.com/shiimizu/ComfyUI-PhotoMaker]"
|
||||
},
|
||||
{
|
||||
"author": "poisenbery",
|
||||
"title": "NudeNet-Detector-Provider [WIP]",
|
||||
@ -79,16 +200,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "WIP"
|
||||
},
|
||||
{
|
||||
"author": "kadirnar",
|
||||
"title": "ComfyUI-Transformers",
|
||||
"reference": "https://github.com/kadirnar/ComfyUI-Transformers",
|
||||
"files": [
|
||||
"https://github.com/kadirnar/ComfyUI-Transformers"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:DepthEstimation."
|
||||
},
|
||||
{
|
||||
"author": "MrAdamBlack",
|
||||
"title": "CheckProgress [WIP]",
|
||||
@ -139,16 +250,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:PythonScript, BlendImagesWithBoundedMasks, CropImagesWithMasks, VAELoaderDataType, ModelSamplerTonemapNoiseTest, gcLatentTunnel, ReferenceOnlySimple, EmptyImageWithColor, MaskFromColor, SetLatentCustomNoise, LatentToImage, ImageToLatent, LatentScaledNoise, DisplayAnyType, SamplerCustomCallback, CustomCallback, SplitCustomSigmas, SamplerDPMPP_2M_SDE_nidefawl, LatentPerlinNoise.<BR>[w/This node is an unsafe node that includes the capability to execute arbitrary python script.]"
|
||||
},
|
||||
{
|
||||
"author": "solarpush",
|
||||
"title": "comfyui_sendimage_node",
|
||||
"reference": "https://github.com/solarpush/comfyui_sendimage_node",
|
||||
"files": [
|
||||
"https://github.com/solarpush/comfyui_sendimage_node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Send images to the pod."
|
||||
},
|
||||
{
|
||||
"author": "kadirnar",
|
||||
"title": "comfyui_helpers",
|
||||
|
||||
@ -1,4 +1,188 @@
|
||||
{
|
||||
"https://github.com/17Retoucher/ComfyUI_Fooocus": [
|
||||
[
|
||||
"BasicScheduler",
|
||||
"CLIPLoader",
|
||||
"CLIPMergeSimple",
|
||||
"CLIPSave",
|
||||
"CLIPSetLastLayer",
|
||||
"CLIPTextEncode",
|
||||
"CLIPTextEncodeSDXL",
|
||||
"CLIPTextEncodeSDXLRefiner",
|
||||
"CLIPVisionEncode",
|
||||
"CLIPVisionLoader",
|
||||
"Canny",
|
||||
"CheckpointLoader",
|
||||
"CheckpointLoaderSimple",
|
||||
"CheckpointSave",
|
||||
"ConditioningAverage",
|
||||
"ConditioningCombine",
|
||||
"ConditioningConcat",
|
||||
"ConditioningSetArea",
|
||||
"ConditioningSetAreaPercentage",
|
||||
"ConditioningSetMask",
|
||||
"ConditioningSetTimestepRange",
|
||||
"ConditioningZeroOut",
|
||||
"ControlNetApply",
|
||||
"ControlNetApplyAdvanced",
|
||||
"ControlNetLoader",
|
||||
"CropMask",
|
||||
"DiffControlNetLoader",
|
||||
"DiffusersLoader",
|
||||
"DualCLIPLoader",
|
||||
"EmptyImage",
|
||||
"EmptyLatentImage",
|
||||
"ExponentialScheduler",
|
||||
"FeatherMask",
|
||||
"FlipSigmas",
|
||||
"Fooocus Controlnet",
|
||||
"Fooocus Hirefix",
|
||||
"Fooocus KSampler",
|
||||
"Fooocus Loader",
|
||||
"Fooocus LoraStack",
|
||||
"Fooocus PreKSampler",
|
||||
"Fooocus negative",
|
||||
"Fooocus positive",
|
||||
"Fooocus stylesSelector",
|
||||
"FreeU",
|
||||
"FreeU_V2",
|
||||
"GLIGENLoader",
|
||||
"GLIGENTextBoxApply",
|
||||
"GrowMask",
|
||||
"HyperTile",
|
||||
"HypernetworkLoader",
|
||||
"ImageBatch",
|
||||
"ImageBlend",
|
||||
"ImageBlur",
|
||||
"ImageColorToMask",
|
||||
"ImageCompositeMasked",
|
||||
"ImageCrop",
|
||||
"ImageInvert",
|
||||
"ImageOnlyCheckpointLoader",
|
||||
"ImagePadForOutpaint",
|
||||
"ImageQuantize",
|
||||
"ImageScale",
|
||||
"ImageScaleBy",
|
||||
"ImageScaleToTotalPixels",
|
||||
"ImageSharpen",
|
||||
"ImageToMask",
|
||||
"ImageUpscaleWithModel",
|
||||
"InvertMask",
|
||||
"JoinImageWithAlpha",
|
||||
"KSampler",
|
||||
"KSamplerAdvanced",
|
||||
"KSamplerSelect",
|
||||
"KarrasScheduler",
|
||||
"LatentAdd",
|
||||
"LatentBatch",
|
||||
"LatentBlend",
|
||||
"LatentComposite",
|
||||
"LatentCompositeMasked",
|
||||
"LatentCrop",
|
||||
"LatentFlip",
|
||||
"LatentFromBatch",
|
||||
"LatentInterpolate",
|
||||
"LatentMultiply",
|
||||
"LatentRotate",
|
||||
"LatentSubtract",
|
||||
"LatentUpscale",
|
||||
"LatentUpscaleBy",
|
||||
"LoadImage",
|
||||
"LoadImageMask",
|
||||
"LoadLatent",
|
||||
"LoraLoader",
|
||||
"LoraLoaderModelOnly",
|
||||
"MaskComposite",
|
||||
"MaskToImage",
|
||||
"ModelMergeAdd",
|
||||
"ModelMergeBlocks",
|
||||
"ModelMergeSimple",
|
||||
"ModelMergeSubtract",
|
||||
"ModelSamplingContinuousEDM",
|
||||
"ModelSamplingDiscrete",
|
||||
"PatchModelAddDownscale",
|
||||
"PerpNeg",
|
||||
"PolyexponentialScheduler",
|
||||
"PorterDuffImageComposite",
|
||||
"PreviewImage",
|
||||
"RebatchImages",
|
||||
"RebatchLatents",
|
||||
"RepeatImageBatch",
|
||||
"RepeatLatentBatch",
|
||||
"RescaleCFG",
|
||||
"SDTurboScheduler",
|
||||
"SVD_img2vid_Conditioning",
|
||||
"SamplerCustom",
|
||||
"SamplerDPMPP_2M_SDE",
|
||||
"SamplerDPMPP_SDE",
|
||||
"SaveAnimatedPNG",
|
||||
"SaveAnimatedWEBP",
|
||||
"SaveImage",
|
||||
"SaveLatent",
|
||||
"SelfAttentionGuidance",
|
||||
"SetLatentNoiseMask",
|
||||
"SolidMask",
|
||||
"SplitImageWithAlpha",
|
||||
"SplitSigmas",
|
||||
"StableZero123_Conditioning",
|
||||
"StyleModelApply",
|
||||
"StyleModelLoader",
|
||||
"TomePatchModel",
|
||||
"UNETLoader",
|
||||
"UpscaleModelLoader",
|
||||
"VAEDecode",
|
||||
"VAEDecodeTiled",
|
||||
"VAEEncode",
|
||||
"VAEEncodeForInpaint",
|
||||
"VAEEncodeTiled",
|
||||
"VAELoader",
|
||||
"VAESave",
|
||||
"VPScheduler",
|
||||
"VideoLinearCFGGuidance",
|
||||
"unCLIPCheckpointLoader",
|
||||
"unCLIPConditioning"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Fooocus"
|
||||
}
|
||||
],
|
||||
"https://github.com/BadCafeCode/execution-inversion-demo-comfyui": [
|
||||
[
|
||||
"AccumulateNode",
|
||||
"AccumulationGetItemNode",
|
||||
"AccumulationGetLengthNode",
|
||||
"AccumulationHeadNode",
|
||||
"AccumulationSetItemNode",
|
||||
"AccumulationTailNode",
|
||||
"AccumulationToListNode",
|
||||
"BoolOperationNode",
|
||||
"ComponentInput",
|
||||
"ComponentMetadata",
|
||||
"ComponentOutput",
|
||||
"DebugPrint",
|
||||
"ExecutionBlocker",
|
||||
"FloatConditions",
|
||||
"ForLoopClose",
|
||||
"ForLoopOpen",
|
||||
"IntConditions",
|
||||
"IntMathOperation",
|
||||
"InversionDemoAdvancedPromptNode",
|
||||
"InversionDemoFakeAdvancedPromptNode",
|
||||
"InversionDemoLazyConditional",
|
||||
"InversionDemoLazyIndexSwitch",
|
||||
"InversionDemoLazyMixImages",
|
||||
"InversionDemoLazySwitch",
|
||||
"ListToAccumulationNode",
|
||||
"MakeListNode",
|
||||
"StringConditions",
|
||||
"ToBoolNode",
|
||||
"WhileLoopClose",
|
||||
"WhileLoopOpen"
|
||||
],
|
||||
{
|
||||
"title_aux": "execution-inversion-demo-comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/BlueDangerX/ComfyUI-BDXNodes": [
|
||||
[
|
||||
"BDXTestInt",
|
||||
@ -122,22 +306,6 @@
|
||||
"title_aux": "ComfyUI-AnyText\uff08WIP\uff09"
|
||||
}
|
||||
],
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker": [
|
||||
[
|
||||
"BaseModel_Loader_fromhub",
|
||||
"BaseModel_Loader_local",
|
||||
"LoRALoader",
|
||||
"NEW_PhotoMaker_Generation",
|
||||
"PhotoMakerAdapter_Loader_fromhub",
|
||||
"PhotoMakerAdapter_Loader_local",
|
||||
"PhotoMaker_Generation",
|
||||
"Prompt_Styler",
|
||||
"Ref_Image_Preprocessing"
|
||||
],
|
||||
{
|
||||
"title_aux": "ZHO-ZHO-ZHO/ComfyUI PhotoMaker (WIP)"
|
||||
}
|
||||
],
|
||||
"https://github.com/alt-key-project/comfyui-dream-video-batches": [
|
||||
[
|
||||
"Blended Transition [DVB]",
|
||||
@ -202,6 +370,15 @@
|
||||
"title_aux": "Gen Data Tester [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/blepping/ComfyUI-sonar": [
|
||||
[
|
||||
"SamplerSonarEuler",
|
||||
"SamplerSonarEulerA"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-sonar (WIP)"
|
||||
}
|
||||
],
|
||||
"https://github.com/comfyanonymous/ComfyUI": [
|
||||
[
|
||||
"BasicScheduler",
|
||||
@ -223,6 +400,7 @@
|
||||
"ConditioningConcat",
|
||||
"ConditioningSetArea",
|
||||
"ConditioningSetAreaPercentage",
|
||||
"ConditioningSetAreaStrength",
|
||||
"ConditioningSetMask",
|
||||
"ConditioningSetTimestepRange",
|
||||
"ConditioningZeroOut",
|
||||
@ -271,6 +449,7 @@
|
||||
"KarrasScheduler",
|
||||
"LatentAdd",
|
||||
"LatentBatch",
|
||||
"LatentBatchSeedBehavior",
|
||||
"LatentBlend",
|
||||
"LatentComposite",
|
||||
"LatentCompositeMasked",
|
||||
@ -298,6 +477,8 @@
|
||||
"ModelSamplingDiscrete",
|
||||
"PatchModelAddDownscale",
|
||||
"PerpNeg",
|
||||
"PhotoMakerEncode",
|
||||
"PhotoMakerLoader",
|
||||
"PolyexponentialScheduler",
|
||||
"PorterDuffImageComposite",
|
||||
"PreviewImage",
|
||||
@ -562,6 +743,15 @@
|
||||
"title_aux": "comfyui_helpers"
|
||||
}
|
||||
],
|
||||
"https://github.com/kappa54m/ComfyUI_Usability": [
|
||||
[
|
||||
"LoadImageByPath",
|
||||
"LoadImageDedup"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Usability (WIP)"
|
||||
}
|
||||
],
|
||||
"https://github.com/komojini/ComfyUI_Prompt_Template_CustomNodes/raw/main/prompt_with_template.py": [
|
||||
[
|
||||
"ObjectPromptWithTemplate",
|
||||
@ -623,6 +813,19 @@
|
||||
"title_aux": "ComfyUI-nidefawl [UNSAFE]"
|
||||
}
|
||||
],
|
||||
"https://github.com/nkchocoai/ComfyUI-PromptUtilities": [
|
||||
[
|
||||
"PromptUtilitiesConstString",
|
||||
"PromptUtilitiesConstStringMultiLine",
|
||||
"PromptUtilitiesFormatString",
|
||||
"PromptUtilitiesJoinStringList",
|
||||
"PromptUtilitiesLoadPreset",
|
||||
"PromptUtilitiesLoadPresetAdvanced"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-PromptUtilities"
|
||||
}
|
||||
],
|
||||
"https://github.com/oyvindg/ComfyUI-TrollSuite": [
|
||||
[
|
||||
"BinaryImageMask",
|
||||
@ -665,16 +868,13 @@
|
||||
"title_aux": "prism-tools"
|
||||
}
|
||||
],
|
||||
"https://github.com/solarpush/comfyui_sendimage_node": [
|
||||
"https://github.com/unanan/ComfyUI-clip-interrogator": [
|
||||
[
|
||||
"Send_To_Pod"
|
||||
"ComfyUIClipInterrogator",
|
||||
"ShowText"
|
||||
],
|
||||
{
|
||||
"author": "Enlumis",
|
||||
"description": "This one to send images to the pod.",
|
||||
"nickname": "go2flat",
|
||||
"title": "go2flat",
|
||||
"title_aux": "comfyui_sendimage_node"
|
||||
"title_aux": "ComfyUI-clip-interrogator [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/wormley/comfyui-wormley-nodes": [
|
||||
|
||||
@ -1,4 +1,14 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "gameltb",
|
||||
"title": "comfyui-stablsr",
|
||||
"reference": "https://github.com/gameltb/Comfyui-StableSR",
|
||||
"files": [
|
||||
"https://github.com/gameltb/Comfyui-StableSR"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This is a development respository for debugging migration of StableSR to ComfyUI\n\nNOTE:Forked from [https://github.com/gameltb/Comfyui-StableSR]\nPut the StableSR [a/webui_786v_139.ckpt](https://huggingface.co/Iceclear/StableSR/resolve/main/webui_768v_139.ckpt) model into Comyfui/models/stablesr/, Put the StableSR [a/stablesr_768v_000139.ckpt](https://huggingface.co/Iceclear/StableSR/resolve/main/stablesr_768v_000139.ckpt) model into Comyfui/models/checkpoints/"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -10,6 +10,26 @@
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"author": "solarpush",
|
||||
"title": "comfyui_sendimage_node [REMOVED]",
|
||||
"reference": "https://github.com/solarpush/comfyui_sendimage_node",
|
||||
"files": [
|
||||
"https://github.com/solarpush/comfyui_sendimage_node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Send images to the pod."
|
||||
},
|
||||
{
|
||||
"author": "azazeal04",
|
||||
"title": "ComfyUI-Styles",
|
||||
"reference": "https://github.com/azazeal04/ComfyUI-Styles",
|
||||
"files": [
|
||||
"https://github.com/azazeal04/ComfyUI-Styles"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Anime_Styler, Fantasy_Styler, Gothic_Styler, Line_Art_Styler, Movie_Poster_Styler, Punk_Styler, Travel_Poster_Styler. This extension offers 8 art style nodes, each of which includes approximately 50 individual style variations.\n\nNOTE: Due to the dynamic nature of node name definitions, ComfyUI-Manager cannot recognize the node list from this extension. The Missing nodes and Badge features are not available for this extension.\nNOTE: This extension is removed. Users who were previously using this node should install ComfyUI-styles-all instead."
|
||||
},
|
||||
{
|
||||
"author": "hnmr293",
|
||||
"title": "ComfyUI-nodes-hnmr",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,107 @@
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"name": "1k3d68.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 1k3d68.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "1k3d68.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/1k3d68.onnx"
|
||||
},
|
||||
{
|
||||
"name": "2d106det.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 2d106det.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "2d106det.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/2d106det.onnx"
|
||||
},
|
||||
{
|
||||
"name": "genderage.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 genderage.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "genderage.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/genderage.onnx"
|
||||
},
|
||||
{
|
||||
"name": "glintr100.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 glintr100.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "glintr100.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/glintr100.onnx"
|
||||
},
|
||||
{
|
||||
"name": "scrfd_10g_bnkps.onnx",
|
||||
"type": "insightface",
|
||||
"base": "inswapper",
|
||||
"save_path": "insightface/models/antelopev2",
|
||||
"description": "Antelopev2 scrfd_10g_bnkps.onnx model for InstantId. (InstantId needs all Antelopev2 models)",
|
||||
"reference": "https://github.com/cubiq/ComfyUI_InstantID#installation",
|
||||
"filename": "scrfd_10g_bnkps.onnx",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/scrfd_10g_bnkps.onnx"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "photomaker-v1.bin",
|
||||
"type": "photomaker",
|
||||
"base": "SDXL",
|
||||
"save_path": "photomaker",
|
||||
"description": "PhotoMaker model. This model is compatible with SDXL.",
|
||||
"reference": "https://huggingface.co/TencentARC/PhotoMaker",
|
||||
"filename": "photomaker-v1.bin",
|
||||
"url": "https://huggingface.co/TencentARC/PhotoMaker/resolve/main/photomaker-v1.bin"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid_sdxl.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid_sdxl.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plusv2_sdxl.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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_sdxl_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SDXL",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID LoRA Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid_sdxl_lora.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SDXL",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SDXL) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"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"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "TencentARC/motionctrl.pth",
|
||||
"type": "checkpoints",
|
||||
@ -10,7 +112,6 @@
|
||||
"filename": "motionctrl.pth",
|
||||
"url": "https://huggingface.co/TencentARC/MotionCtrl/resolve/main/motionctrl.pth"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "ip-adapter-faceid-plusv2_sd15.bin",
|
||||
"type": "IP-Adapter",
|
||||
@ -31,6 +132,16 @@
|
||||
"filename": "ip-adapter-faceid-plusv2_sd15_lora.safetensors",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plus_sd15_lora.safetensors",
|
||||
"type": "lora",
|
||||
"base": "SD1.5",
|
||||
"save_path": "loras/ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus LoRA Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"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"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "ControlNet-HandRefiner-pruned (inpaint-depth-hand; fp16)",
|
||||
@ -73,6 +184,26 @@
|
||||
"url": "https://huggingface.co/ioclab/LooseControl_WebUICombine/resolve/main/control_boxdepth_LooseControlfp16.safetensors"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "ip-adapter-faceid-portrait_sd15.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Portrait Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "ip-adapter-faceid-portrait_sd15.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin"
|
||||
},
|
||||
{
|
||||
"name": "ip-adapter-faceid-plus_sd15.bin",
|
||||
"type": "IP-Adapter",
|
||||
"base": "SD1.5",
|
||||
"save_path": "ipadapter",
|
||||
"description": "IP-Adapter-FaceID Plus Model (SD1.5) [ipadapter]",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter-FaceID",
|
||||
"filename": "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_sd15.bin",
|
||||
"type": "IP-Adapter",
|
||||
@ -95,11 +226,11 @@
|
||||
},
|
||||
|
||||
{
|
||||
"name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"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_v1.1.ckpt",
|
||||
"url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt"
|
||||
@ -178,21 +309,21 @@
|
||||
"url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"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)",
|
||||
"name": "LongAnimatediff/lt_long_mm_16_64_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"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"
|
||||
@ -323,7 +454,7 @@
|
||||
"type": "checkpoints",
|
||||
"base": "SVD",
|
||||
"save_path": "checkpoints/SVD",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.<BR>NOTE: 14 frames @ 576x1024",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 14 frames @ 576x1024",
|
||||
"reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid",
|
||||
"filename": "svd.safetensors",
|
||||
"url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors"
|
||||
@ -333,98 +464,98 @@
|
||||
"type": "checkpoints",
|
||||
"base": "SVD",
|
||||
"save_path": "checkpoints/SVD",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.<BR>NOTE: 25 frames @ 576x1024 ",
|
||||
"description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 25 frames @ 576x1024 ",
|
||||
"reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt",
|
||||
"filename": "svd_xt.safetensors",
|
||||
"url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SDXL",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "mm_sdxl_v10_beta.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanLeft.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_PanRight.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingAnticlockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_RollingClockwise.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltDown.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_TiltUp.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomIn.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "motion lora",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_motion_lora",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/guoyww/animatediff",
|
||||
"filename": "v2_lora_ZoomOut.ckpt",
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt"
|
||||
@ -534,11 +665,11 @@
|
||||
},
|
||||
|
||||
{
|
||||
"name": "CiaraRowles/temporaldiff-v1-animatediff.ckpt (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "CiaraRowles/temporaldiff-v1-animatediff.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/CiaraRowles/TemporalDiff",
|
||||
"filename": "temporaldiff-v1-animatediff.ckpt",
|
||||
"url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt"
|
||||
@ -554,149 +685,24 @@
|
||||
"url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_high.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth"
|
||||
},
|
||||
{
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (ComfyUI-AnimateDiff-Evolved)",
|
||||
"name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||
"type": "animatediff",
|
||||
"base": "SD1.x",
|
||||
"save_path": "custom_nodes/ComfyUI-AnimateDiff-Evolved/models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node. (Note: Requires ComfyUI-Manager V0.24 or above)",
|
||||
"save_path": "animatediff_models",
|
||||
"description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.",
|
||||
"reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion",
|
||||
"filename": "mm-Stabilized_mid.pth",
|
||||
"url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "GFPGANv1.4.pth",
|
||||
"type": "GFPGAN",
|
||||
"base": "GFPGAN",
|
||||
"save_path": "facerestore_models",
|
||||
"description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/TencentARC/GFPGAN/releases",
|
||||
"filename": "GFPGANv1.4.pth",
|
||||
"url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth"
|
||||
},
|
||||
{
|
||||
"name": "codeformer.pth",
|
||||
"type": "CodeFormer",
|
||||
"base": "CodeFormer",
|
||||
"save_path": "facerestore_models",
|
||||
"description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/sczhou/CodeFormer/releases",
|
||||
"filename": "codeformer.pth",
|
||||
"url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth"
|
||||
},
|
||||
{
|
||||
"name": "detection_Resnet50_Final.pth",
|
||||
"type": "facexlib",
|
||||
"base": "facexlib",
|
||||
"save_path": "facerestore_models",
|
||||
"description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/xinntao/facexlib",
|
||||
"filename": "detection_Resnet50_Final.pth",
|
||||
"url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth"
|
||||
},
|
||||
{
|
||||
"name": "detection_mobilenet0.25_Final.pth",
|
||||
"type": "facexlib",
|
||||
"base": "facexlib",
|
||||
"save_path": "facerestore_models",
|
||||
"description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/xinntao/facexlib",
|
||||
"filename": "detection_mobilenet0.25_Final.pth",
|
||||
"url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_mobilenet0.25_Final.pth"
|
||||
},
|
||||
{
|
||||
"name": "yolov5l-face.pth",
|
||||
"type": "facexlib",
|
||||
"base": "facexlib",
|
||||
"save_path": "facedetection",
|
||||
"description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/xinntao/facexlib",
|
||||
"filename": "yolov5l-face.pth",
|
||||
"url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5l-face.pth"
|
||||
},
|
||||
{
|
||||
"name": "yolov5n-face.pth",
|
||||
"type": "facexlib",
|
||||
"base": "facexlib",
|
||||
"save_path": "facedetection",
|
||||
"description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.",
|
||||
"reference": "https://github.com/xinntao/facexlib",
|
||||
"filename": "yolov5n-face.pth",
|
||||
"url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5n-face.pth"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (UNET/fp16)",
|
||||
"type": "unet",
|
||||
"base": "SDXL",
|
||||
"save_path": "unet/xl-inpaint-0.1",
|
||||
"description": "[5.14GB] Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.",
|
||||
"reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1",
|
||||
"filename": "diffusion_pytorch_model.fp16.safetensors",
|
||||
"url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors"
|
||||
},
|
||||
{
|
||||
"name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (UNET)",
|
||||
"type": "unet",
|
||||
"base": "SDXL",
|
||||
"save_path": "unet/xl-inpaint-0.1",
|
||||
"description": "[10.3GB] Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.",
|
||||
"reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1",
|
||||
"filename": "diffusion_pytorch_model.safetensors",
|
||||
"url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.safetensors"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "Inswapper (face swap)",
|
||||
"type": "insightface",
|
||||
"base" : "inswapper",
|
||||
"save_path": "insightface",
|
||||
"description": "Checkpoint of the insightface swapper model (used by Comfy-Roop and comfy_mtb)",
|
||||
"reference": "https://huggingface.co/deepinsight/inswapper/",
|
||||
"filename": "inswapper_128.onnx",
|
||||
"url": "https://huggingface.co/deepinsight/inswapper/resolve/main/inswapper_128.onnx"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "CLIPVision model (stabilityai/clip_vision_g)",
|
||||
"type": "clip_vision",
|
||||
"base": "SDXL",
|
||||
"save_path": "clip_vision/SDXL",
|
||||
"description": "[3.69GB] clip_g vision model",
|
||||
"reference": "https://huggingface.co/stabilityai/control-lora",
|
||||
"filename": "clip_vision_g.safetensors",
|
||||
"url": "https://huggingface.co/stabilityai/control-lora/resolve/main/revision/clip_vision_g.safetensors"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) 1.5",
|
||||
"type": "clip_vision",
|
||||
"base": "SD1.5",
|
||||
"save_path": "clip_vision/SD1.5",
|
||||
"description": "[2.5GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "pytorch_model.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/pytorch_model.bin"
|
||||
},
|
||||
{
|
||||
"name": "CLIPVision model (IP-Adapter) XL",
|
||||
"type": "clip_vision",
|
||||
"base": "SDXL",
|
||||
"save_path": "clip_vision/SDXL",
|
||||
"description": "[3.69GB] CLIPVision model (needed for IP-Adapter)",
|
||||
"reference": "https://huggingface.co/h94/IP-Adapter",
|
||||
"filename": "pytorch_model.bin",
|
||||
"url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/pytorch_model.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -69,6 +69,56 @@
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:WW_ImageResize"
|
||||
},
|
||||
{
|
||||
"author": "bmz55",
|
||||
"title": "bmz nodes",
|
||||
"reference": "https://github.com/bmz55/comfyui-bmz-nodes",
|
||||
"files": [
|
||||
"https://github.com/bmz55/comfyui-bmz-nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Images From Dir With Name (Inspire - BMZ), Count Images In Dir (BMZ), Get Level Text (BMZ), Get Level Float (BMZ)"
|
||||
},
|
||||
{
|
||||
"author": "azure-dragon-ai",
|
||||
"title": "ComfyUI-HPSv2-Nodes",
|
||||
"reference": "https://github.com/azure-dragon-ai/ComfyUI-HPSv2-Nodes",
|
||||
"files": [
|
||||
"https://github.com/azure-dragon-ai/ComfyUI-HPSv2-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Loader, Image Processor, Text Processor, ImageScore"
|
||||
},
|
||||
{
|
||||
"author": "kappa54m",
|
||||
"title": "ComfyUI-HPSv2-Nodes",
|
||||
"reference": "https://github.com/kappa54m/ComfyUI_Usability",
|
||||
"files": [
|
||||
"https://github.com/kappa54m/ComfyUI_Usability"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Image Dedup"
|
||||
},
|
||||
{
|
||||
"author": "IvanRybakov",
|
||||
"title": "comfyui-node-int-to-string-convertor",
|
||||
"reference": "https://github.com/IvanRybakov/comfyui-node-int-to-string-convertor",
|
||||
"files": [
|
||||
"https://github.com/IvanRybakov/comfyui-node-int-to-string-convertor"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Int To String Convertor"
|
||||
},
|
||||
{
|
||||
"author": "yowipr",
|
||||
"title": "ComfyUI-Manual",
|
||||
"reference": "https://github.com/yowipr/ComfyUI-Manual",
|
||||
"files": [
|
||||
"https://github.com/yowipr/ComfyUI-Manual"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:M_Layer, M_Output"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -18,6 +18,7 @@ import cm_global
|
||||
message_collapses = []
|
||||
import_failed_extensions = set()
|
||||
cm_global.variables['cm.on_revision_detected_handler'] = []
|
||||
enable_file_logging = True
|
||||
|
||||
|
||||
def register_message_collapse(f):
|
||||
@ -30,6 +31,24 @@ def is_import_failed_extension(name):
|
||||
return name in import_failed_extensions
|
||||
|
||||
|
||||
def check_file_logging():
|
||||
global enable_file_logging
|
||||
try:
|
||||
import configparser
|
||||
config_path = os.path.join(os.path.dirname(__file__), "config.ini")
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
default_conf = config['default']
|
||||
|
||||
if 'file_logging' in default_conf and default_conf['file_logging'].lower() == 'false':
|
||||
enable_file_logging = False
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
check_file_logging()
|
||||
|
||||
|
||||
sys.__comfyui_manager_register_message_collapse = register_message_collapse
|
||||
sys.__comfyui_manager_is_import_failed_extension = is_import_failed_extension
|
||||
cm_global.register_api('cm.register_message_collapse', register_message_collapse)
|
||||
@ -118,16 +137,34 @@ try:
|
||||
postfix = ""
|
||||
|
||||
# Logger setup
|
||||
if os.path.exists(f"comfyui{postfix}.log"):
|
||||
if os.path.exists(f"comfyui{postfix}.prev.log"):
|
||||
if os.path.exists(f"comfyui{postfix}.prev2.log"):
|
||||
os.remove(f"comfyui{postfix}.prev2.log")
|
||||
os.rename(f"comfyui{postfix}.prev.log", f"comfyui{postfix}.prev2.log")
|
||||
os.rename(f"comfyui{postfix}.log", f"comfyui{postfix}.prev.log")
|
||||
if enable_file_logging:
|
||||
if os.path.exists(f"comfyui{postfix}.log"):
|
||||
if os.path.exists(f"comfyui{postfix}.prev.log"):
|
||||
if os.path.exists(f"comfyui{postfix}.prev2.log"):
|
||||
os.remove(f"comfyui{postfix}.prev2.log")
|
||||
os.rename(f"comfyui{postfix}.prev.log", f"comfyui{postfix}.prev2.log")
|
||||
os.rename(f"comfyui{postfix}.log", f"comfyui{postfix}.prev.log")
|
||||
|
||||
log_file = open(f"comfyui{postfix}.log", "w", encoding="utf-8", errors="ignore")
|
||||
|
||||
log_lock = threading.Lock()
|
||||
|
||||
original_stdout = sys.stdout
|
||||
original_stderr = sys.stderr
|
||||
|
||||
if original_stdout.encoding.lower() == 'utf-8':
|
||||
write_stdout = original_stdout.write
|
||||
write_stderr = original_stderr.write
|
||||
else:
|
||||
def wrapper_stdout(msg):
|
||||
original_stdout.write(msg.encode('utf-8').decode(original_stdout.encoding, errors="ignore"))
|
||||
|
||||
def wrapper_stderr(msg):
|
||||
original_stderr.write(msg.encode('utf-8').decode(original_stderr.encoding, errors="ignore"))
|
||||
|
||||
write_stdout = wrapper_stdout
|
||||
write_stderr = wrapper_stderr
|
||||
|
||||
pat_tqdm = r'\d+%.*\[(.*?)\]'
|
||||
pat_import_fail = r'seconds \(IMPORT FAILED\):'
|
||||
pat_custom_node = r'[/\\]custom_nodes[/\\](.*)$'
|
||||
@ -135,9 +172,6 @@ try:
|
||||
is_start_mode = True
|
||||
is_import_fail_mode = False
|
||||
|
||||
log_file = open(f"comfyui{postfix}.log", "w", encoding="utf-8", errors="ignore")
|
||||
log_lock = threading.Lock()
|
||||
|
||||
class ComfyUIManagerLogger:
|
||||
def __init__(self, is_stdout):
|
||||
self.is_stdout = is_stdout
|
||||
@ -185,7 +219,7 @@ try:
|
||||
if '100%' in message:
|
||||
self.sync_write(message)
|
||||
else:
|
||||
original_stderr.write(message)
|
||||
write_stderr(message)
|
||||
original_stderr.flush()
|
||||
else:
|
||||
self.sync_write(message)
|
||||
@ -204,11 +238,11 @@ try:
|
||||
|
||||
with std_log_lock:
|
||||
if self.is_stdout:
|
||||
original_stdout.write(message)
|
||||
write_stdout(message)
|
||||
original_stdout.flush()
|
||||
terminal_hook.write_stderr(message)
|
||||
else:
|
||||
original_stderr.write(message)
|
||||
write_stderr(message)
|
||||
original_stderr.flush()
|
||||
terminal_hook.write_stdout(message)
|
||||
|
||||
@ -237,11 +271,16 @@ try:
|
||||
sys.stderr = original_stderr
|
||||
sys.stdout = original_stdout
|
||||
log_file.close()
|
||||
|
||||
sys.stdout = ComfyUIManagerLogger(True)
|
||||
sys.stderr = ComfyUIManagerLogger(False)
|
||||
|
||||
atexit.register(close_log)
|
||||
|
||||
if enable_file_logging:
|
||||
sys.stdout = ComfyUIManagerLogger(True)
|
||||
sys.stderr = ComfyUIManagerLogger(False)
|
||||
|
||||
atexit.register(close_log)
|
||||
else:
|
||||
sys.stdout.close_log = lambda: None
|
||||
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] Logging failed: {e}")
|
||||
|
||||
@ -250,7 +289,11 @@ print("** ComfyUI startup time:", datetime.datetime.now())
|
||||
print("** Platform:", platform.system())
|
||||
print("** Python version:", sys.version)
|
||||
print("** Python executable:", sys.executable)
|
||||
print("** Log path:", os.path.abspath('comfyui.log'))
|
||||
|
||||
if enable_file_logging:
|
||||
print("** Log path:", os.path.abspath('comfyui.log'))
|
||||
else:
|
||||
print("** Log path: file logging is disabled")
|
||||
|
||||
|
||||
def check_bypass_ssl():
|
||||
@ -457,11 +500,26 @@ if os.path.exists(script_list_path):
|
||||
del processed_install
|
||||
del pip_list
|
||||
|
||||
if platform.system() == 'Windows':
|
||||
|
||||
def check_windows_event_loop_policy():
|
||||
try:
|
||||
import asyncio
|
||||
import asyncio.windows_events
|
||||
asyncio.set_event_loop_policy(asyncio.windows_events.WindowsSelectorEventLoopPolicy())
|
||||
print(f"[ComfyUI-Manager] Windows event loop policy mode enabled")
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] WARN: Windows initialization fail: {e}")
|
||||
import configparser
|
||||
config_path = os.path.join(os.path.dirname(__file__), "config.ini")
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
default_conf = config['default']
|
||||
|
||||
if 'windows_selector_event_loop_policy' in default_conf and default_conf['windows_selector_event_loop_policy'].lower() == 'true':
|
||||
try:
|
||||
import asyncio
|
||||
import asyncio.windows_events
|
||||
asyncio.set_event_loop_policy(asyncio.windows_events.WindowsSelectorEventLoopPolicy())
|
||||
print(f"[ComfyUI-Manager] Windows event loop policy mode enabled")
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] WARN: Windows initialization fail: {e}")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
if platform.system() == 'Windows':
|
||||
check_windows_event_loop_policy()
|
||||
|
||||
25
scanner.py
25
scanner.py
@ -1,3 +1,4 @@
|
||||
import ast
|
||||
import re
|
||||
import os
|
||||
import json
|
||||
@ -22,6 +23,28 @@ if not os.path.exists(temp_dir):
|
||||
print(f"TEMP DIR: {temp_dir}")
|
||||
|
||||
|
||||
def extract_nodes(code_text):
|
||||
try:
|
||||
parsed_code = ast.parse(code_text)
|
||||
|
||||
assignments = (node for node in parsed_code.body if isinstance(node, ast.Assign))
|
||||
|
||||
for assignment in assignments:
|
||||
if isinstance(assignment.targets[0], ast.Name) and assignment.targets[0].id == 'NODE_CLASS_MAPPINGS':
|
||||
node_class_mappings = assignment.value
|
||||
break
|
||||
else:
|
||||
node_class_mappings = None
|
||||
|
||||
if node_class_mappings:
|
||||
s = set([key.s.strip() for key in node_class_mappings.keys if key is not None])
|
||||
return s
|
||||
else:
|
||||
return set()
|
||||
except:
|
||||
return set()
|
||||
|
||||
|
||||
# scan
|
||||
def scan_in_file(filename, is_builtin=False):
|
||||
global builtin_nodes
|
||||
@ -39,6 +62,8 @@ def scan_in_file(filename, is_builtin=False):
|
||||
nodes = set()
|
||||
class_dict = {}
|
||||
|
||||
nodes |= extract_nodes(code)
|
||||
|
||||
pattern2 = r'^[^=]*_CLASS_MAPPINGS\["(.*?)"\]'
|
||||
keys = re.findall(pattern2, code)
|
||||
for key in keys:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user