Compare commits
22 Commits
feat/cache
...
draft-v4-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8159ca5875 | ||
|
|
7fc8ba587e | ||
|
|
7a35bd9d9a | ||
|
|
17e5c3d2f5 | ||
|
|
27bfc539f7 | ||
|
|
a76ef49d2d | ||
|
|
bb0fcf6ea6 | ||
|
|
539e0a1534 | ||
|
|
aaae6ce304 | ||
|
|
821fded09d | ||
|
|
ec4a2aa873 | ||
|
|
d6b2d54f3f | ||
|
|
97ae67bb9a | ||
|
|
765514a33f | ||
|
|
e2cdcc96c4 | ||
|
|
dbd25b0f0a | ||
|
|
a128baf894 | ||
|
|
57b847eebf | ||
|
|
149257e4f1 | ||
|
|
212b8e7ed2 | ||
|
|
01ac9c895a | ||
|
|
ebcb14e6aa |
1
.env.example
Normal file
1
.env.example
Normal file
@@ -0,0 +1 @@
|
|||||||
|
PYPI_TOKEN=your-pypi-token
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -19,4 +19,5 @@ pip_overrides.json
|
|||||||
check2.sh
|
check2.sh
|
||||||
/venv/
|
/venv/
|
||||||
build
|
build
|
||||||
*.egg-info
|
*.egg-info
|
||||||
|
.env
|
||||||
47
CONTRIBUTING.md
Normal file
47
CONTRIBUTING.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
## Testing Changes
|
||||||
|
|
||||||
|
1. Activate the ComfyUI environment.
|
||||||
|
|
||||||
|
2. Build package locally after making changes.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# from inside the ComfyUI-Manager directory, with the ComfyUI environment activated
|
||||||
|
python -m build
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Install the package locally in the ComfyUI environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Uninstall existing package
|
||||||
|
pip uninstall comfyui-manager
|
||||||
|
|
||||||
|
# Install the locale package
|
||||||
|
pip install dist/comfyui-manager-*.whl
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Start ComfyUI.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# after navigating to the ComfyUI directory
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Manually Publish Test Version to PyPi
|
||||||
|
|
||||||
|
1. Set the `PYPI_TOKEN` environment variable in env file.
|
||||||
|
|
||||||
|
2. If manually publishing, you likely want to use a release candidate version, so set the version in [pyproject.toml](pyproject.toml) to something like `0.0.1rc1`.
|
||||||
|
|
||||||
|
3. Build the package.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m build
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Upload the package to PyPi.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m twine upload dist/* --username __token__ --password $PYPI_TOKEN
|
||||||
|
```
|
||||||
|
|
||||||
|
5. View at https://pypi.org/project/comfyui-manager/
|
||||||
@@ -22,3 +22,19 @@ def start():
|
|||||||
nodes.EXTENSION_WEB_DIRS['comfyui-manager-legacy'] = os.path.join(os.path.dirname(__file__), 'js')
|
nodes.EXTENSION_WEB_DIRS['comfyui-manager-legacy'] = os.path.join(os.path.dirname(__file__), 'js')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Error enabling legacy ComfyUI Manager frontend:", e)
|
print("Error enabling legacy ComfyUI Manager frontend:", e)
|
||||||
|
|
||||||
|
|
||||||
|
def should_be_disabled(fullpath:str) -> bool:
|
||||||
|
"""
|
||||||
|
1. Disables the legacy ComfyUI-Manager.
|
||||||
|
2. The blocklist can be expanded later based on policies.
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not args.disable_manager:
|
||||||
|
# In cases where installation is done via a zip archive, the directory name may not be comfyui-manager, and it may not contain a git repository.
|
||||||
|
# It is assumed that any installed legacy ComfyUI-Manager will have at least 'comfyui-manager' in its directory name.
|
||||||
|
dir_name = os.path.basename(fullpath).lower()
|
||||||
|
if 'comfyui-manager' in dir_name:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|||||||
@@ -202,6 +202,7 @@ manager_snapshot_path = None
|
|||||||
manager_pip_overrides_path = None
|
manager_pip_overrides_path = None
|
||||||
manager_pip_blacklist_path = None
|
manager_pip_blacklist_path = None
|
||||||
manager_components_path = None
|
manager_components_path = None
|
||||||
|
manager_batch_history_path = None
|
||||||
|
|
||||||
def update_user_directory(user_dir):
|
def update_user_directory(user_dir):
|
||||||
global manager_files_path
|
global manager_files_path
|
||||||
@@ -212,6 +213,7 @@ def update_user_directory(user_dir):
|
|||||||
global manager_pip_overrides_path
|
global manager_pip_overrides_path
|
||||||
global manager_pip_blacklist_path
|
global manager_pip_blacklist_path
|
||||||
global manager_components_path
|
global manager_components_path
|
||||||
|
global manager_batch_history_path
|
||||||
|
|
||||||
manager_files_path = os.path.abspath(os.path.join(user_dir, 'default', 'ComfyUI-Manager'))
|
manager_files_path = os.path.abspath(os.path.join(user_dir, 'default', 'ComfyUI-Manager'))
|
||||||
if not os.path.exists(manager_files_path):
|
if not os.path.exists(manager_files_path):
|
||||||
@@ -231,10 +233,14 @@ def update_user_directory(user_dir):
|
|||||||
manager_pip_blacklist_path = os.path.join(manager_files_path, "pip_blacklist.list")
|
manager_pip_blacklist_path = os.path.join(manager_files_path, "pip_blacklist.list")
|
||||||
manager_components_path = os.path.join(manager_files_path, "components")
|
manager_components_path = os.path.join(manager_files_path, "components")
|
||||||
manager_util.cache_dir = os.path.join(manager_files_path, "cache")
|
manager_util.cache_dir = os.path.join(manager_files_path, "cache")
|
||||||
|
manager_batch_history_path = os.path.join(manager_files_path, "batch_history")
|
||||||
|
|
||||||
if not os.path.exists(manager_util.cache_dir):
|
if not os.path.exists(manager_util.cache_dir):
|
||||||
os.makedirs(manager_util.cache_dir)
|
os.makedirs(manager_util.cache_dir)
|
||||||
|
|
||||||
|
if not os.path.exists(manager_batch_history_path):
|
||||||
|
os.makedirs(manager_batch_history_path)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import folder_paths
|
import folder_paths
|
||||||
update_user_directory(folder_paths.get_user_directory())
|
update_user_directory(folder_paths.get_user_directory())
|
||||||
@@ -1320,67 +1326,66 @@ class UnifiedManager:
|
|||||||
return result.fail(f'Path not found: {repo_path}')
|
return result.fail(f'Path not found: {repo_path}')
|
||||||
|
|
||||||
# version check
|
# version check
|
||||||
repo = git.Repo(repo_path)
|
with git.Repo(repo_path) as repo:
|
||||||
|
if repo.head.is_detached:
|
||||||
|
if not switch_to_default_branch(repo):
|
||||||
|
return result.fail(f"Failed to switch to default branch: {repo_path}")
|
||||||
|
|
||||||
if repo.head.is_detached:
|
current_branch = repo.active_branch
|
||||||
if not switch_to_default_branch(repo):
|
branch_name = current_branch.name
|
||||||
return result.fail(f"Failed to switch to default branch: {repo_path}")
|
|
||||||
|
|
||||||
current_branch = repo.active_branch
|
if current_branch.tracking_branch() is None:
|
||||||
branch_name = current_branch.name
|
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
|
||||||
|
remote_name = get_remote_name(repo)
|
||||||
if current_branch.tracking_branch() is None:
|
|
||||||
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
|
|
||||||
remote_name = get_remote_name(repo)
|
|
||||||
else:
|
|
||||||
remote_name = current_branch.tracking_branch().remote_name
|
|
||||||
|
|
||||||
if remote_name is None:
|
|
||||||
return result.fail(f"Failed to get remote when installing: {repo_path}")
|
|
||||||
|
|
||||||
remote = repo.remote(name=remote_name)
|
|
||||||
|
|
||||||
try:
|
|
||||||
remote.fetch()
|
|
||||||
except Exception as e:
|
|
||||||
if 'detected dubious' in str(e):
|
|
||||||
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository")
|
|
||||||
safedir_path = repo_path.replace('\\', '/')
|
|
||||||
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
|
||||||
try:
|
|
||||||
remote.fetch()
|
|
||||||
except Exception:
|
|
||||||
print("\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n"
|
|
||||||
"-----------------------------------------------------------------------------------------\n"
|
|
||||||
f'git config --global --add safe.directory "{safedir_path}"\n'
|
|
||||||
"-----------------------------------------------------------------------------------------\n")
|
|
||||||
|
|
||||||
commit_hash = repo.head.commit.hexsha
|
|
||||||
if f'{remote_name}/{branch_name}' in repo.refs:
|
|
||||||
remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha
|
|
||||||
else:
|
|
||||||
return result.fail(f"Not updatable branch: {branch_name}")
|
|
||||||
|
|
||||||
if commit_hash != remote_commit_hash:
|
|
||||||
git_pull(repo_path)
|
|
||||||
|
|
||||||
if len(repo.remotes) > 0:
|
|
||||||
url = repo.remotes[0].url
|
|
||||||
else:
|
else:
|
||||||
url = "unknown repo"
|
remote_name = current_branch.tracking_branch().remote_name
|
||||||
|
|
||||||
def postinstall():
|
if remote_name is None:
|
||||||
return self.execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps)
|
return result.fail(f"Failed to get remote when installing: {repo_path}")
|
||||||
|
|
||||||
if return_postinstall:
|
remote = repo.remote(name=remote_name)
|
||||||
return result.with_postinstall(postinstall)
|
|
||||||
|
try:
|
||||||
|
remote.fetch()
|
||||||
|
except Exception as e:
|
||||||
|
if 'detected dubious' in str(e):
|
||||||
|
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository")
|
||||||
|
safedir_path = repo_path.replace('\\', '/')
|
||||||
|
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
||||||
|
try:
|
||||||
|
remote.fetch()
|
||||||
|
except Exception:
|
||||||
|
print("\n[ComfyUI-Manager] Failed to fixing repository setup. Please execute this command on cmd: \n"
|
||||||
|
"-----------------------------------------------------------------------------------------\n"
|
||||||
|
f'git config --global --add safe.directory "{safedir_path}"\n'
|
||||||
|
"-----------------------------------------------------------------------------------------\n")
|
||||||
|
|
||||||
|
commit_hash = repo.head.commit.hexsha
|
||||||
|
if f'{remote_name}/{branch_name}' in repo.refs:
|
||||||
|
remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha
|
||||||
else:
|
else:
|
||||||
if not postinstall():
|
return result.fail(f"Not updatable branch: {branch_name}")
|
||||||
return result.fail(f"Failed to execute install script: {url}")
|
|
||||||
|
|
||||||
return result
|
if commit_hash != remote_commit_hash:
|
||||||
else:
|
git_pull(repo_path)
|
||||||
return ManagedResult('skip').with_msg('Up to date')
|
|
||||||
|
if len(repo.remotes) > 0:
|
||||||
|
url = repo.remotes[0].url
|
||||||
|
else:
|
||||||
|
url = "unknown repo"
|
||||||
|
|
||||||
|
def postinstall():
|
||||||
|
return self.execute_install_script(url, repo_path, instant_execution=instant_execution, no_deps=no_deps)
|
||||||
|
|
||||||
|
if return_postinstall:
|
||||||
|
return result.with_postinstall(postinstall)
|
||||||
|
else:
|
||||||
|
if not postinstall():
|
||||||
|
return result.fail(f"Failed to execute install script: {url}")
|
||||||
|
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
return ManagedResult('skip').with_msg('Up to date')
|
||||||
|
|
||||||
def unified_update(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False):
|
def unified_update(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False):
|
||||||
orig_print(f"\x1b[2K\rUpdating: {node_id}", end='')
|
orig_print(f"\x1b[2K\rUpdating: {node_id}", end='')
|
||||||
@@ -2648,22 +2653,8 @@ async def get_current_snapshot(custom_nodes_only = False):
|
|||||||
|
|
||||||
cnr_custom_nodes[info['id']] = info['ver']
|
cnr_custom_nodes[info['id']] = info['ver']
|
||||||
else:
|
else:
|
||||||
repo = git.Repo(fullpath)
|
commit_hash = git_utils.get_commit_hash(fullpath)
|
||||||
|
url = git_utils.git_url(fullpath)
|
||||||
if repo.head.is_detached:
|
|
||||||
remote_name = get_remote_name(repo)
|
|
||||||
else:
|
|
||||||
current_branch = repo.active_branch
|
|
||||||
|
|
||||||
if current_branch.tracking_branch() is None:
|
|
||||||
remote_name = get_remote_name(repo)
|
|
||||||
else:
|
|
||||||
remote_name = current_branch.tracking_branch().remote_name
|
|
||||||
|
|
||||||
commit_hash = repo.head.commit.hexsha
|
|
||||||
|
|
||||||
url = repo.remotes[remote_name].url
|
|
||||||
|
|
||||||
git_custom_nodes[url] = dict(hash=commit_hash, disabled=is_disabled)
|
git_custom_nodes[url] = dict(hash=commit_hash, disabled=is_disabled)
|
||||||
except:
|
except:
|
||||||
print(f"Failed to extract snapshots for the custom node '{path}'.")
|
print(f"Failed to extract snapshots for the custom node '{path}'.")
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from datetime import datetime
|
|||||||
from server import PromptServer
|
from server import PromptServer
|
||||||
import logging
|
import logging
|
||||||
import asyncio
|
import asyncio
|
||||||
import queue
|
from collections import deque
|
||||||
|
|
||||||
from . import manager_core as core
|
from . import manager_core as core
|
||||||
from . import manager_util
|
from . import manager_util
|
||||||
@@ -394,16 +394,73 @@ def nickname_filter(json_obj):
|
|||||||
return json_obj
|
return json_obj
|
||||||
|
|
||||||
|
|
||||||
task_queue = queue.Queue()
|
class TaskBatch:
|
||||||
nodepack_result = {}
|
def __init__(self, batch_json, tasks, failed):
|
||||||
model_result = {}
|
self.nodepack_result = {}
|
||||||
|
self.model_result = {}
|
||||||
|
self.batch_id = batch_json.get('batch_id') if batch_json is not None else None
|
||||||
|
self.batch_json = batch_json
|
||||||
|
self.tasks = tasks
|
||||||
|
self.current_index = 0
|
||||||
|
self.stats = {}
|
||||||
|
self.failed = failed if failed is not None else set()
|
||||||
|
self.is_aborted = False
|
||||||
|
|
||||||
|
def is_done(self):
|
||||||
|
return len(self.tasks) <= self.current_index
|
||||||
|
|
||||||
|
def get_next(self):
|
||||||
|
if self.is_done():
|
||||||
|
return None
|
||||||
|
|
||||||
|
item = self.tasks[self.current_index]
|
||||||
|
self.current_index += 1
|
||||||
|
return item
|
||||||
|
|
||||||
|
def done_count(self):
|
||||||
|
return len(self.nodepack_result) + len(self.model_result)
|
||||||
|
|
||||||
|
def total_count(self):
|
||||||
|
return len(self.tasks)
|
||||||
|
|
||||||
|
def abort(self):
|
||||||
|
self.is_aborted = True
|
||||||
|
|
||||||
|
def finalize(self):
|
||||||
|
if self.batch_id is not None:
|
||||||
|
batch_path = os.path.join(core.manager_batch_history_path, self.batch_id+".json")
|
||||||
|
json_obj = {
|
||||||
|
"batch": self.batch_json,
|
||||||
|
"nodepack_result": self.nodepack_result,
|
||||||
|
"model_result": self.model_result,
|
||||||
|
"failed": list(self.failed)
|
||||||
|
}
|
||||||
|
with open(batch_path, "w") as json_file:
|
||||||
|
json.dump(json_obj, json_file, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
temp_queue_batch = []
|
||||||
|
task_batch_queue = deque()
|
||||||
tasks_in_progress = set()
|
tasks_in_progress = set()
|
||||||
task_worker_lock = threading.Lock()
|
task_worker_lock = threading.Lock()
|
||||||
|
aborted_batch = None
|
||||||
|
|
||||||
|
|
||||||
|
def finalize_temp_queue_batch(batch_json=None, failed=None):
|
||||||
|
"""
|
||||||
|
make temp_queue_batch as a batch snapshot and add to batch_queue
|
||||||
|
"""
|
||||||
|
|
||||||
|
global temp_queue_batch
|
||||||
|
|
||||||
|
if len(temp_queue_batch):
|
||||||
|
batch = TaskBatch(batch_json, temp_queue_batch, failed)
|
||||||
|
task_batch_queue.append(batch)
|
||||||
|
temp_queue_batch = []
|
||||||
|
|
||||||
|
|
||||||
async def task_worker():
|
async def task_worker():
|
||||||
global task_queue
|
global task_queue
|
||||||
global nodepack_result
|
|
||||||
global model_result
|
|
||||||
global tasks_in_progress
|
global tasks_in_progress
|
||||||
|
|
||||||
async def do_install(item) -> str:
|
async def do_install(item) -> str:
|
||||||
@@ -416,8 +473,7 @@ async def task_worker():
|
|||||||
return f"Cannot resolve install target: '{node_spec_str}'"
|
return f"Cannot resolve install target: '{node_spec_str}'"
|
||||||
|
|
||||||
node_name, version_spec, is_specified = node_spec
|
node_name, version_spec, is_specified = node_spec
|
||||||
res = await core.unified_manager.install_by_id(node_name, version_spec, channel, mode, return_postinstall=skip_post_install)
|
res = await core.unified_manager.install_by_id(node_name, version_spec, channel, mode, return_postinstall=skip_post_install) # discard post install if skip_post_install mode
|
||||||
# discard post install if skip_post_install mode
|
|
||||||
|
|
||||||
if res.action not in ['skip', 'enable', 'install-git', 'install-cnr', 'switch-cnr']:
|
if res.action not in ['skip', 'enable', 'install-git', 'install-cnr', 'switch-cnr']:
|
||||||
logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}")
|
logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}")
|
||||||
@@ -432,6 +488,11 @@ async def task_worker():
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return f"Installation failed:\n{node_spec_str}"
|
return f"Installation failed:\n{node_spec_str}"
|
||||||
|
|
||||||
|
async def do_enable(item) -> str:
|
||||||
|
ui_id, cnr_id = item
|
||||||
|
core.unified_manager.unified_enable(cnr_id)
|
||||||
|
return 'success'
|
||||||
|
|
||||||
async def do_update(item):
|
async def do_update(item):
|
||||||
ui_id, node_name, node_ver = item
|
ui_id, node_name, node_ver = item
|
||||||
|
|
||||||
@@ -590,31 +651,45 @@ async def task_worker():
|
|||||||
|
|
||||||
return f"Model installation error: {model_url}"
|
return f"Model installation error: {model_url}"
|
||||||
|
|
||||||
stats = {}
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
done_count = len(nodepack_result) + len(model_result)
|
with task_worker_lock:
|
||||||
total_count = done_count + task_queue.qsize()
|
if len(task_batch_queue) > 0:
|
||||||
|
cur_batch = task_batch_queue[0]
|
||||||
|
else:
|
||||||
|
logging.info("\n[ComfyUI-Manager] All tasks are completed.")
|
||||||
|
logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
|
||||||
|
|
||||||
if task_queue.empty():
|
res = {'status': 'all-done'}
|
||||||
logging.info(f"\n[ComfyUI-Manager] Queued works are completed.\n{stats}")
|
|
||||||
|
|
||||||
logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
|
PromptServer.instance.send_sync("cm-queue-status", res)
|
||||||
PromptServer.instance.send_sync("cm-queue-status",
|
|
||||||
{'status': 'done',
|
return
|
||||||
'nodepack_result': nodepack_result, 'model_result': model_result,
|
|
||||||
'total_count': total_count, 'done_count': done_count})
|
if cur_batch.is_done():
|
||||||
nodepack_result = {}
|
logging.info(f"\n[ComfyUI-Manager] A tasks batch(batch_id={cur_batch.batch_id}) is completed.\nstat={cur_batch.stats}")
|
||||||
task_queue = queue.Queue()
|
|
||||||
return # terminate worker thread
|
res = {'status': 'batch-done',
|
||||||
|
'nodepack_result': cur_batch.nodepack_result,
|
||||||
|
'model_result': cur_batch.model_result,
|
||||||
|
'total_count': cur_batch.total_count(),
|
||||||
|
'done_count': cur_batch.done_count(),
|
||||||
|
'batch_id': cur_batch.batch_id,
|
||||||
|
'remaining_batch_count': len(task_batch_queue) }
|
||||||
|
|
||||||
|
PromptServer.instance.send_sync("cm-queue-status", res)
|
||||||
|
cur_batch.finalize()
|
||||||
|
task_batch_queue.popleft()
|
||||||
|
continue
|
||||||
|
|
||||||
with task_worker_lock:
|
with task_worker_lock:
|
||||||
kind, item = task_queue.get()
|
kind, item = cur_batch.get_next()
|
||||||
tasks_in_progress.add((kind, item[0]))
|
tasks_in_progress.add((kind, item[0]))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if kind == 'install':
|
if kind == 'install':
|
||||||
msg = await do_install(item)
|
msg = await do_install(item)
|
||||||
|
elif kind == 'enable':
|
||||||
|
msg = await do_enable(item)
|
||||||
elif kind == 'install-model':
|
elif kind == 'install-model':
|
||||||
msg = await do_install_model(item)
|
msg = await do_install_model(item)
|
||||||
elif kind == 'update':
|
elif kind == 'update':
|
||||||
@@ -638,28 +713,128 @@ async def task_worker():
|
|||||||
with task_worker_lock:
|
with task_worker_lock:
|
||||||
tasks_in_progress.remove((kind, item[0]))
|
tasks_in_progress.remove((kind, item[0]))
|
||||||
|
|
||||||
ui_id = item[0]
|
ui_id = item[0]
|
||||||
if kind == 'install-model':
|
if kind == 'install-model':
|
||||||
model_result[ui_id] = msg
|
cur_batch.model_result[ui_id] = msg
|
||||||
ui_target = "model_manager"
|
ui_target = "model_manager"
|
||||||
elif kind == 'update-main':
|
elif kind == 'update-main':
|
||||||
nodepack_result[ui_id] = msg
|
cur_batch.nodepack_result[ui_id] = msg
|
||||||
ui_target = "main"
|
ui_target = "main"
|
||||||
elif kind == 'update-comfyui':
|
elif kind == 'update-comfyui':
|
||||||
nodepack_result['comfyui'] = msg
|
cur_batch.nodepack_result['comfyui'] = msg
|
||||||
ui_target = "main"
|
ui_target = "main"
|
||||||
elif kind == 'update':
|
elif kind == 'update':
|
||||||
nodepack_result[ui_id] = msg['msg']
|
cur_batch.nodepack_result[ui_id] = msg['msg']
|
||||||
ui_target = "nodepack_manager"
|
ui_target = "nodepack_manager"
|
||||||
else:
|
else:
|
||||||
nodepack_result[ui_id] = msg
|
cur_batch.nodepack_result[ui_id] = msg
|
||||||
ui_target = "nodepack_manager"
|
ui_target = "nodepack_manager"
|
||||||
|
|
||||||
stats[kind] = stats.get(kind, 0) + 1
|
cur_batch.stats[kind] = cur_batch.stats.get(kind, 0) + 1
|
||||||
|
|
||||||
PromptServer.instance.send_sync("cm-queue-status",
|
PromptServer.instance.send_sync("cm-queue-status",
|
||||||
{'status': 'in_progress', 'target': item[0], 'ui_target': ui_target,
|
{'status': 'in_progress',
|
||||||
'total_count': total_count, 'done_count': done_count})
|
'target': item[0],
|
||||||
|
'batch_id': cur_batch.batch_id,
|
||||||
|
'ui_target': ui_target,
|
||||||
|
'total_count': cur_batch.total_count(),
|
||||||
|
'done_count': cur_batch.done_count()})
|
||||||
|
|
||||||
|
|
||||||
|
@routes.post("/v2/manager/queue/batch")
|
||||||
|
async def queue_batch(request):
|
||||||
|
json_data = await request.json()
|
||||||
|
|
||||||
|
failed = set()
|
||||||
|
|
||||||
|
for k, v in json_data.items():
|
||||||
|
if k == 'update_all':
|
||||||
|
await _update_all({'mode': v})
|
||||||
|
|
||||||
|
elif k == 'reinstall':
|
||||||
|
for x in v:
|
||||||
|
res = await _uninstall_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
else:
|
||||||
|
res = await _install_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
elif k == 'install':
|
||||||
|
for x in v:
|
||||||
|
res = await _install_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
elif k == 'uninstall':
|
||||||
|
for x in v:
|
||||||
|
res = await _uninstall_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
elif k == 'update':
|
||||||
|
for x in v:
|
||||||
|
res = await _update_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
elif k == 'update_comfyui':
|
||||||
|
await update_comfyui(None)
|
||||||
|
|
||||||
|
elif k == 'disable':
|
||||||
|
for x in v:
|
||||||
|
await _disable_node(x)
|
||||||
|
|
||||||
|
elif k == 'install_model':
|
||||||
|
for x in v:
|
||||||
|
res = await _install_model(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
elif k == 'fix':
|
||||||
|
for x in v:
|
||||||
|
res = await _fix_custom_node(x)
|
||||||
|
if res.status != 200:
|
||||||
|
failed.add(x[0])
|
||||||
|
|
||||||
|
with task_worker_lock:
|
||||||
|
finalize_temp_queue_batch(json_data, failed)
|
||||||
|
_queue_start()
|
||||||
|
|
||||||
|
return web.json_response({"failed": list(failed)}, content_type='application/json')
|
||||||
|
|
||||||
|
|
||||||
|
@routes.get("/v2/manager/queue/history_list")
|
||||||
|
async def get_history_list(request):
|
||||||
|
history_path = core.manager_batch_history_path
|
||||||
|
|
||||||
|
try:
|
||||||
|
files = [os.path.join(history_path, f) for f in os.listdir(history_path) if os.path.isfile(os.path.join(history_path, f))]
|
||||||
|
files.sort(key=lambda x: os.path.getmtime(x), reverse=True)
|
||||||
|
history_ids = [os.path.basename(f)[:-5] for f in files]
|
||||||
|
|
||||||
|
return web.json_response({"ids": list(history_ids)}, content_type='application/json')
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"[ComfyUI-Manager] /v2/manager/queue/history_list - {e}")
|
||||||
|
return web.Response(status=400)
|
||||||
|
|
||||||
|
|
||||||
|
@routes.get("/v2/manager/queue/history")
|
||||||
|
async def get_history(request):
|
||||||
|
try:
|
||||||
|
json_name = request.rel_url.query["id"]+'.json'
|
||||||
|
batch_path = os.path.join(core.manager_batch_history_path, json_name)
|
||||||
|
|
||||||
|
with open(batch_path, 'r', encoding='utf-8') as file:
|
||||||
|
json_str = file.read()
|
||||||
|
json_obj = json.loads(json_str)
|
||||||
|
return web.json_response(json_obj, content_type='application/json')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"[ComfyUI-Manager] /v2/manager/queue/history - {e}")
|
||||||
|
|
||||||
|
return web.Response(status=400)
|
||||||
|
|
||||||
|
|
||||||
@routes.get("/v2/customnode/getmappings")
|
@routes.get("/v2/customnode/getmappings")
|
||||||
@@ -727,6 +902,11 @@ async def fetch_updates(request):
|
|||||||
|
|
||||||
@routes.get("/v2/manager/queue/update_all")
|
@routes.get("/v2/manager/queue/update_all")
|
||||||
async def update_all(request):
|
async def update_all(request):
|
||||||
|
json_data = dict(request.rel_url.query)
|
||||||
|
return await _update_all(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _update_all(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403)
|
return web.Response(status=403)
|
||||||
@@ -738,13 +918,13 @@ async def update_all(request):
|
|||||||
|
|
||||||
await core.save_snapshot_with_postfix('autosave')
|
await core.save_snapshot_with_postfix('autosave')
|
||||||
|
|
||||||
if request.rel_url.query["mode"] == "local":
|
if json_data["mode"] == "local":
|
||||||
channel = 'local'
|
channel = 'local'
|
||||||
else:
|
else:
|
||||||
channel = core.get_config()['channel_url']
|
channel = core.get_config()['channel_url']
|
||||||
|
|
||||||
await core.unified_manager.reload(request.rel_url.query["mode"])
|
await core.unified_manager.reload(json_data["mode"])
|
||||||
await core.unified_manager.get_custom_nodes(channel, request.rel_url.query["mode"])
|
await core.unified_manager.get_custom_nodes(channel, json_data["mode"])
|
||||||
|
|
||||||
for k, v in core.unified_manager.active_nodes.items():
|
for k, v in core.unified_manager.active_nodes.items():
|
||||||
if k == 'comfyui-manager':
|
if k == 'comfyui-manager':
|
||||||
@@ -753,7 +933,7 @@ async def update_all(request):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
update_item = k, k, v[0]
|
update_item = k, k, v[0]
|
||||||
task_queue.put(("update-main", update_item))
|
temp_queue_batch.append(("update-main", update_item))
|
||||||
|
|
||||||
for k, v in core.unified_manager.unknown_active_nodes.items():
|
for k, v in core.unified_manager.unknown_active_nodes.items():
|
||||||
if k == 'comfyui-manager':
|
if k == 'comfyui-manager':
|
||||||
@@ -762,7 +942,7 @@ async def update_all(request):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
update_item = k, k, 'unknown'
|
update_item = k, k, 'unknown'
|
||||||
task_queue.put(("update-main", update_item))
|
temp_queue_batch.append(("update-main", update_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
@@ -1099,8 +1279,27 @@ async def reinstall_custom_node(request):
|
|||||||
|
|
||||||
@routes.get("/v2/manager/queue/reset")
|
@routes.get("/v2/manager/queue/reset")
|
||||||
async def reset_queue(request):
|
async def reset_queue(request):
|
||||||
global task_queue
|
global task_batch_queue
|
||||||
task_queue = queue.Queue()
|
global temp_queue_batch
|
||||||
|
|
||||||
|
with task_worker_lock:
|
||||||
|
temp_queue_batch = []
|
||||||
|
task_batch_queue = deque()
|
||||||
|
|
||||||
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
|
@routes.get("/v2/manager/queue/abort_current")
|
||||||
|
async def abort_queue(request):
|
||||||
|
global task_batch_queue
|
||||||
|
global temp_queue_batch
|
||||||
|
|
||||||
|
with task_worker_lock:
|
||||||
|
temp_queue_batch = []
|
||||||
|
if len(task_batch_queue) > 0:
|
||||||
|
task_batch_queue[0].abort()
|
||||||
|
task_batch_queue.popleft()
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
@@ -1109,24 +1308,37 @@ async def queue_count(request):
|
|||||||
global task_queue
|
global task_queue
|
||||||
|
|
||||||
with task_worker_lock:
|
with task_worker_lock:
|
||||||
done_count = len(nodepack_result) + len(model_result)
|
if len(task_batch_queue) > 0:
|
||||||
in_progress_count = len(tasks_in_progress)
|
cur_batch = task_batch_queue[0]
|
||||||
total_count = done_count + in_progress_count + task_queue.qsize()
|
done_count = cur_batch.done_count()
|
||||||
is_processing = task_worker_thread is not None and task_worker_thread.is_alive()
|
total_count = cur_batch.total_count()
|
||||||
|
in_progress_count = len(tasks_in_progress)
|
||||||
|
is_processing = task_worker_thread is not None and task_worker_thread.is_alive()
|
||||||
|
else:
|
||||||
|
done_count = 0
|
||||||
|
total_count = 0
|
||||||
|
in_progress_count = 0
|
||||||
|
is_processing = False
|
||||||
|
|
||||||
return web.json_response({
|
return web.json_response({
|
||||||
'total_count': total_count, 'done_count': done_count, 'in_progress_count': in_progress_count,
|
'total_count': total_count,
|
||||||
|
'done_count': done_count,
|
||||||
|
'in_progress_count': in_progress_count,
|
||||||
'is_processing': is_processing})
|
'is_processing': is_processing})
|
||||||
|
|
||||||
|
|
||||||
@routes.post("/v2/manager/queue/install")
|
@routes.post("/v2/manager/queue/install")
|
||||||
async def install_custom_node(request):
|
async def install_custom_node(request):
|
||||||
|
json_data = await request.json()
|
||||||
|
print(f"install={json_data}")
|
||||||
|
return await _install_custom_node(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _install_custom_node(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
json_data = await request.json()
|
|
||||||
|
|
||||||
# non-nightly cnr is safe
|
# non-nightly cnr is safe
|
||||||
risky_level = None
|
risky_level = None
|
||||||
cnr_id = json_data.get('id')
|
cnr_id = json_data.get('id')
|
||||||
@@ -1138,8 +1350,10 @@ async def install_custom_node(request):
|
|||||||
if json_data['version'] != 'unknown' and selected_version != 'unknown':
|
if json_data['version'] != 'unknown' and selected_version != 'unknown':
|
||||||
if skip_post_install:
|
if skip_post_install:
|
||||||
if cnr_id in core.unified_manager.nightly_inactive_nodes or cnr_id in core.unified_manager.cnr_inactive_nodes:
|
if cnr_id in core.unified_manager.nightly_inactive_nodes or cnr_id in core.unified_manager.cnr_inactive_nodes:
|
||||||
core.unified_manager.unified_enable(cnr_id)
|
enable_item = json_data.get('ui_id'), cnr_id
|
||||||
|
temp_queue_batch.append(("enable", enable_item))
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
elif selected_version is None:
|
elif selected_version is None:
|
||||||
selected_version = 'latest'
|
selected_version = 'latest'
|
||||||
|
|
||||||
@@ -1152,9 +1366,11 @@ async def install_custom_node(request):
|
|||||||
if git_url is None:
|
if git_url is None:
|
||||||
logging.error(f"[ComfyUI-Manager] Following node pack doesn't provide `nightly` version: ${git_url}")
|
logging.error(f"[ComfyUI-Manager] Following node pack doesn't provide `nightly` version: ${git_url}")
|
||||||
return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}")
|
return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}")
|
||||||
|
|
||||||
elif json_data['version'] != 'unknown' and selected_version == 'unknown':
|
elif json_data['version'] != 'unknown' and selected_version == 'unknown':
|
||||||
logging.error(f"[ComfyUI-Manager] Invalid installation request: {json_data}")
|
logging.error(f"[ComfyUI-Manager] Invalid installation request: {json_data}")
|
||||||
return web.Response(status=400, text="Invalid installation request")
|
return web.Response(status=400, text="Invalid installation request")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# unknown
|
# unknown
|
||||||
unknown_name = os.path.basename(json_data['files'][0])
|
unknown_name = os.path.basename(json_data['files'][0])
|
||||||
@@ -1173,7 +1389,7 @@ async def install_custom_node(request):
|
|||||||
return web.Response(status=404, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=404, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
install_item = json_data.get('ui_id'), node_spec_str, json_data['channel'], json_data['mode'], skip_post_install
|
install_item = json_data.get('ui_id'), node_spec_str, json_data['channel'], json_data['mode'], skip_post_install
|
||||||
task_queue.put(("install", install_item))
|
temp_queue_batch.append(("install", install_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
@@ -1182,16 +1398,16 @@ task_worker_thread:threading.Thread = None
|
|||||||
|
|
||||||
@routes.get("/v2/manager/queue/start")
|
@routes.get("/v2/manager/queue/start")
|
||||||
async def queue_start(request):
|
async def queue_start(request):
|
||||||
global nodepack_result
|
with task_worker_lock:
|
||||||
global model_result
|
finalize_temp_queue_batch()
|
||||||
|
return _queue_start()
|
||||||
|
|
||||||
|
def _queue_start():
|
||||||
global task_worker_thread
|
global task_worker_thread
|
||||||
|
|
||||||
if task_worker_thread is not None and task_worker_thread.is_alive():
|
if task_worker_thread is not None and task_worker_thread.is_alive():
|
||||||
return web.Response(status=201) # already in-progress
|
return web.Response(status=201) # already in-progress
|
||||||
|
|
||||||
nodepack_result = {}
|
|
||||||
model_result = {}
|
|
||||||
|
|
||||||
task_worker_thread = threading.Thread(target=lambda: asyncio.run(task_worker()))
|
task_worker_thread = threading.Thread(target=lambda: asyncio.run(task_worker()))
|
||||||
task_worker_thread.start()
|
task_worker_thread.start()
|
||||||
|
|
||||||
@@ -1200,12 +1416,15 @@ async def queue_start(request):
|
|||||||
|
|
||||||
@routes.post("/v2/manager/queue/fix")
|
@routes.post("/v2/manager/queue/fix")
|
||||||
async def fix_custom_node(request):
|
async def fix_custom_node(request):
|
||||||
|
json_data = await request.json()
|
||||||
|
return await _fix_custom_node(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _fix_custom_node(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_GENERAL)
|
logging.error(SECURITY_MESSAGE_GENERAL)
|
||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
json_data = await request.json()
|
|
||||||
|
|
||||||
node_id = json_data.get('id')
|
node_id = json_data.get('id')
|
||||||
node_ver = json_data['version']
|
node_ver = json_data['version']
|
||||||
if node_ver != 'unknown':
|
if node_ver != 'unknown':
|
||||||
@@ -1215,7 +1434,7 @@ async def fix_custom_node(request):
|
|||||||
node_name = os.path.basename(json_data['files'][0])
|
node_name = os.path.basename(json_data['files'][0])
|
||||||
|
|
||||||
update_item = json_data.get('ui_id'), node_name, json_data['version']
|
update_item = json_data.get('ui_id'), node_name, json_data['version']
|
||||||
task_queue.put(("fix", update_item))
|
temp_queue_batch.append(("fix", update_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
@@ -1254,12 +1473,15 @@ async def install_custom_node_pip(request):
|
|||||||
|
|
||||||
@routes.post("/v2/manager/queue/uninstall")
|
@routes.post("/v2/manager/queue/uninstall")
|
||||||
async def uninstall_custom_node(request):
|
async def uninstall_custom_node(request):
|
||||||
|
json_data = await request.json()
|
||||||
|
return await _uninstall_custom_node(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _uninstall_custom_node(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
json_data = await request.json()
|
|
||||||
|
|
||||||
node_id = json_data.get('id')
|
node_id = json_data.get('id')
|
||||||
if json_data['version'] != 'unknown':
|
if json_data['version'] != 'unknown':
|
||||||
is_unknown = False
|
is_unknown = False
|
||||||
@@ -1270,19 +1492,22 @@ async def uninstall_custom_node(request):
|
|||||||
node_name = os.path.basename(json_data['files'][0])
|
node_name = os.path.basename(json_data['files'][0])
|
||||||
|
|
||||||
uninstall_item = json_data.get('ui_id'), node_name, is_unknown
|
uninstall_item = json_data.get('ui_id'), node_name, is_unknown
|
||||||
task_queue.put(("uninstall", uninstall_item))
|
temp_queue_batch.append(("uninstall", uninstall_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
@routes.post("/v2/manager/queue/update")
|
@routes.post("/v2/manager/queue/update")
|
||||||
async def update_custom_node(request):
|
async def update_custom_node(request):
|
||||||
|
json_data = await request.json()
|
||||||
|
return await _update_custom_node(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _update_custom_node(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
json_data = await request.json()
|
|
||||||
|
|
||||||
node_id = json_data.get('id')
|
node_id = json_data.get('id')
|
||||||
if json_data['version'] != 'unknown':
|
if json_data['version'] != 'unknown':
|
||||||
node_name = node_id
|
node_name = node_id
|
||||||
@@ -1291,7 +1516,7 @@ async def update_custom_node(request):
|
|||||||
node_name = os.path.basename(json_data['files'][0])
|
node_name = os.path.basename(json_data['files'][0])
|
||||||
|
|
||||||
update_item = json_data.get('ui_id'), node_name, json_data['version']
|
update_item = json_data.get('ui_id'), node_name, json_data['version']
|
||||||
task_queue.put(("update", update_item))
|
temp_queue_batch.append(("update", update_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
@@ -1299,7 +1524,7 @@ async def update_custom_node(request):
|
|||||||
@routes.get("/v2/manager/queue/update_comfyui")
|
@routes.get("/v2/manager/queue/update_comfyui")
|
||||||
async def update_comfyui(request):
|
async def update_comfyui(request):
|
||||||
is_stable = core.get_config()['update_policy'] != 'nightly-comfyui'
|
is_stable = core.get_config()['update_policy'] != 'nightly-comfyui'
|
||||||
task_queue.put(("update-comfyui", ('comfyui', is_stable)))
|
temp_queue_batch.append(("update-comfyui", ('comfyui', is_stable)))
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
@@ -1330,7 +1555,11 @@ async def comfyui_switch_version(request):
|
|||||||
@routes.post("/v2/manager/queue/disable")
|
@routes.post("/v2/manager/queue/disable")
|
||||||
async def disable_node(request):
|
async def disable_node(request):
|
||||||
json_data = await request.json()
|
json_data = await request.json()
|
||||||
|
await _disable_node(json_data)
|
||||||
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
|
async def _disable_node(json_data):
|
||||||
node_id = json_data.get('id')
|
node_id = json_data.get('id')
|
||||||
if json_data['version'] != 'unknown':
|
if json_data['version'] != 'unknown':
|
||||||
is_unknown = False
|
is_unknown = False
|
||||||
@@ -1341,9 +1570,7 @@ async def disable_node(request):
|
|||||||
node_name = os.path.basename(json_data['files'][0])
|
node_name = os.path.basename(json_data['files'][0])
|
||||||
|
|
||||||
update_item = json_data.get('ui_id'), node_name, is_unknown
|
update_item = json_data.get('ui_id'), node_name, is_unknown
|
||||||
task_queue.put(("disable", update_item))
|
temp_queue_batch.append(("disable", update_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
|
||||||
|
|
||||||
|
|
||||||
async def check_whitelist_for_model(item):
|
async def check_whitelist_for_model(item):
|
||||||
@@ -1365,7 +1592,10 @@ async def check_whitelist_for_model(item):
|
|||||||
@routes.post("/v2/manager/queue/install_model")
|
@routes.post("/v2/manager/queue/install_model")
|
||||||
async def install_model(request):
|
async def install_model(request):
|
||||||
json_data = await request.json()
|
json_data = await request.json()
|
||||||
|
return await _install_model(json_data)
|
||||||
|
|
||||||
|
|
||||||
|
async def _install_model(json_data):
|
||||||
if not is_allowed_security_level('middle'):
|
if not is_allowed_security_level('middle'):
|
||||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
@@ -1389,7 +1619,7 @@ async def install_model(request):
|
|||||||
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
return web.Response(status=403, text="A security error has occurred. Please check the terminal logs")
|
||||||
|
|
||||||
install_item = json_data.get('ui_id'), json_data
|
install_item = json_data.get('ui_id'), json_data
|
||||||
task_queue.put(("install-model", install_item))
|
temp_queue_batch.append(("install-model", install_item))
|
||||||
|
|
||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import { OpenArtShareDialog } from "./comfyui-share-openart.js";
|
|||||||
import {
|
import {
|
||||||
free_models, install_pip, install_via_git_url, manager_instance,
|
free_models, install_pip, install_via_git_url, manager_instance,
|
||||||
rebootAPI, setManagerInstance, show_message, customAlert, customPrompt,
|
rebootAPI, setManagerInstance, show_message, customAlert, customPrompt,
|
||||||
infoToast, showTerminal, setNeedRestart
|
infoToast, showTerminal, setNeedRestart, generateUUID
|
||||||
} from "./common.js";
|
} from "./common.js";
|
||||||
import { ComponentBuilderDialog, getPureName, load_components, set_component_policy } from "./components-manager.js";
|
import { ComponentBuilderDialog, load_components, set_component_policy } from "./components-manager.js";
|
||||||
import { CustomNodesManager } from "./custom-nodes-manager.js";
|
import { CustomNodesManager } from "./custom-nodes-manager.js";
|
||||||
import { ModelManager } from "./model-manager.js";
|
import { ModelManager } from "./model-manager.js";
|
||||||
import { SnapshotManager } from "./snapshot.js";
|
import { SnapshotManager } from "./snapshot.js";
|
||||||
@@ -223,7 +223,7 @@ function isBeforeFrontendVersion(compareVersion) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const is_legacy_front = () => isBeforeFrontendVersion('1.2.49');
|
const is_legacy_front = () => isBeforeFrontendVersion('1.2.49');
|
||||||
const isNewManagerUI = () => isBeforeFrontendVersion('1.16.4');
|
const isNotNewManagerUI = () => isBeforeFrontendVersion('1.16.4');
|
||||||
|
|
||||||
document.head.appendChild(docStyle);
|
document.head.appendChild(docStyle);
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ var restart_stop_button = null;
|
|||||||
var update_policy_combo = null;
|
var update_policy_combo = null;
|
||||||
|
|
||||||
let share_option = 'all';
|
let share_option = 'all';
|
||||||
var is_updating = false;
|
var batch_id = null;
|
||||||
|
|
||||||
|
|
||||||
// copied style from https://github.com/pythongosssss/ComfyUI-Custom-Scripts
|
// copied style from https://github.com/pythongosssss/ComfyUI-Custom-Scripts
|
||||||
@@ -476,14 +476,19 @@ async function updateComfyUI() {
|
|||||||
let prev_text = update_comfyui_button.innerText;
|
let prev_text = update_comfyui_button.innerText;
|
||||||
update_comfyui_button.innerText = "Updating ComfyUI...";
|
update_comfyui_button.innerText = "Updating ComfyUI...";
|
||||||
|
|
||||||
set_inprogress_mode();
|
// set_inprogress_mode();
|
||||||
|
|
||||||
const response = await api.fetchApi('/v2/manager/queue/update_comfyui');
|
|
||||||
|
|
||||||
showTerminal();
|
showTerminal();
|
||||||
|
|
||||||
is_updating = true;
|
batch_id = generateUUID();
|
||||||
await api.fetchApi('/v2/manager/queue/start');
|
|
||||||
|
let batch = {};
|
||||||
|
batch['batch_id'] = batch_id;
|
||||||
|
batch['update_comfyui'] = true;
|
||||||
|
|
||||||
|
const res = await api.fetchApi(`/v2/manager/queue/batch`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(batch)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function showVersionSelectorDialog(versions, current, onSelect) {
|
function showVersionSelectorDialog(versions, current, onSelect) {
|
||||||
@@ -658,18 +663,17 @@ async function onQueueStatus(event) {
|
|||||||
const isElectron = 'electronAPI' in window;
|
const isElectron = 'electronAPI' in window;
|
||||||
|
|
||||||
if(event.detail.status == 'in_progress') {
|
if(event.detail.status == 'in_progress') {
|
||||||
set_inprogress_mode();
|
// set_inprogress_mode();
|
||||||
update_all_button.innerText = `in progress.. (${event.detail.done_count}/${event.detail.total_count})`;
|
update_all_button.innerText = `in progress.. (${event.detail.done_count}/${event.detail.total_count})`;
|
||||||
}
|
}
|
||||||
else if(event.detail.status == 'done') {
|
else if(event.detail.status == 'all-done') {
|
||||||
reset_action_buttons();
|
reset_action_buttons();
|
||||||
|
}
|
||||||
if(!is_updating) {
|
else if(event.detail.status == 'batch-done') {
|
||||||
|
if(batch_id != event.detail.batch_id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_updating = false;
|
|
||||||
|
|
||||||
let success_list = [];
|
let success_list = [];
|
||||||
let failed_list = [];
|
let failed_list = [];
|
||||||
let comfyui_state = null;
|
let comfyui_state = null;
|
||||||
@@ -769,41 +773,28 @@ api.addEventListener("cm-queue-status", onQueueStatus);
|
|||||||
async function updateAll(update_comfyui) {
|
async function updateAll(update_comfyui) {
|
||||||
update_all_button.innerText = "Updating...";
|
update_all_button.innerText = "Updating...";
|
||||||
|
|
||||||
set_inprogress_mode();
|
// set_inprogress_mode();
|
||||||
|
|
||||||
var mode = manager_instance.datasrc_combo.value;
|
var mode = manager_instance.datasrc_combo.value;
|
||||||
|
|
||||||
showTerminal();
|
showTerminal();
|
||||||
|
|
||||||
|
batch_id = generateUUID();
|
||||||
|
|
||||||
|
let batch = {};
|
||||||
if(update_comfyui) {
|
if(update_comfyui) {
|
||||||
update_all_button.innerText = "Updating ComfyUI...";
|
update_all_button.innerText = "Updating ComfyUI...";
|
||||||
await api.fetchApi('/v2/manager/queue/update_comfyui');
|
batch['update_comfyui'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await api.fetchApi(`/v2/manager/queue/update_all?mode=${mode}`);
|
batch['update_all'] = mode;
|
||||||
|
|
||||||
if (response.status == 401) {
|
const res = await api.fetchApi(`/v2/manager/queue/batch`, {
|
||||||
customAlert('Another task is already in progress. Please stop the ongoing task first.');
|
method: 'POST',
|
||||||
}
|
body: JSON.stringify(batch)
|
||||||
else if(response.status == 200) {
|
});
|
||||||
is_updating = true;
|
|
||||||
await api.fetchApi('/v2/manager/queue/start');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function newDOMTokenList(initialTokens) {
|
|
||||||
const tmp = document.createElement(`div`);
|
|
||||||
|
|
||||||
const classList = tmp.classList;
|
|
||||||
if (initialTokens) {
|
|
||||||
initialTokens.forEach(token => {
|
|
||||||
classList.add(token);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return classList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether the node is a potential output node (img, gif or video output)
|
* Check whether the node is a potential output node (img, gif or video output)
|
||||||
*/
|
*/
|
||||||
@@ -1527,7 +1518,7 @@ app.registerExtension({
|
|||||||
}).element
|
}).element
|
||||||
);
|
);
|
||||||
|
|
||||||
const shouldShowLegacyMenuItems = !isNewManagerUI();
|
const shouldShowLegacyMenuItems = isNotNewManagerUI();
|
||||||
if (shouldShowLegacyMenuItems) {
|
if (shouldShowLegacyMenuItems) {
|
||||||
app.menu?.settingsGroup.element.before(cmGroup.element);
|
app.menu?.settingsGroup.element.before(cmGroup.element);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -630,6 +630,14 @@ export function showTooltip(target, text, className = 'cn-tooltip', styleMap = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function generateUUID() {
|
||||||
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
||||||
|
const r = Math.random() * 16 | 0;
|
||||||
|
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
||||||
|
return v.toString(16);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function initTooltip () {
|
function initTooltip () {
|
||||||
const mouseenterHandler = (e) => {
|
const mouseenterHandler = (e) => {
|
||||||
const target = e.target;
|
const target = e.target;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
fetchData, md5, icons, show_message, customConfirm, customAlert, customPrompt,
|
fetchData, md5, icons, show_message, customConfirm, customAlert, customPrompt,
|
||||||
sanitizeHTML, infoToast, showTerminal, setNeedRestart,
|
sanitizeHTML, infoToast, showTerminal, setNeedRestart,
|
||||||
storeColumnWidth, restoreColumnWidth, getTimeAgo, copyText, loadCss,
|
storeColumnWidth, restoreColumnWidth, getTimeAgo, copyText, loadCss,
|
||||||
showPopover, hidePopover
|
showPopover, hidePopover, generateUUID
|
||||||
} from "./common.js";
|
} from "./common.js";
|
||||||
|
|
||||||
// https://cenfun.github.io/turbogrid/api.html
|
// https://cenfun.github.io/turbogrid/api.html
|
||||||
@@ -1439,13 +1439,6 @@ export class CustomNodesManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async installNodes(list, btn, title, selected_version) {
|
async installNodes(list, btn, title, selected_version) {
|
||||||
let stats = await api.fetchApi('/v2/manager/queue/status');
|
|
||||||
stats = await stats.json();
|
|
||||||
if(stats.is_processing) {
|
|
||||||
customAlert(`[ComfyUI-Manager] There are already tasks in progress. Please try again after it is completed. (${stats.done_count}/${stats.total_count})`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { target, label, mode} = btn;
|
const { target, label, mode} = btn;
|
||||||
|
|
||||||
if(mode === "uninstall") {
|
if(mode === "uninstall") {
|
||||||
@@ -1472,10 +1465,10 @@ export class CustomNodesManager {
|
|||||||
let needRestart = false;
|
let needRestart = false;
|
||||||
let errorMsg = "";
|
let errorMsg = "";
|
||||||
|
|
||||||
await api.fetchApi('/v2/manager/queue/reset');
|
|
||||||
|
|
||||||
let target_items = [];
|
let target_items = [];
|
||||||
|
|
||||||
|
let batch = {};
|
||||||
|
|
||||||
for (const hash of list) {
|
for (const hash of list) {
|
||||||
const item = this.grid.getRowItemBy("hash", hash);
|
const item = this.grid.getRowItemBy("hash", hash);
|
||||||
target_items.push(item);
|
target_items.push(item);
|
||||||
@@ -1517,23 +1510,11 @@ export class CustomNodesManager {
|
|||||||
api_mode = 'reinstall';
|
api_mode = 'reinstall';
|
||||||
}
|
}
|
||||||
|
|
||||||
const res = await api.fetchApi(`/v2/manager/queue/${api_mode}`, {
|
if(batch[api_mode]) {
|
||||||
method: 'POST',
|
batch[api_mode].push(data);
|
||||||
body: JSON.stringify(data)
|
}
|
||||||
});
|
else {
|
||||||
|
batch[api_mode] = [data];
|
||||||
if (res.status != 200) {
|
|
||||||
errorMsg = `'${item.title}': `;
|
|
||||||
|
|
||||||
if(res.status == 403) {
|
|
||||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
|
||||||
} else if(res.status == 404) {
|
|
||||||
errorMsg += `With the current security level configuration, only custom nodes from the <B>"default channel"</B> can be installed.\n`;
|
|
||||||
} else {
|
|
||||||
errorMsg += await res.text() + '\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1550,7 +1531,24 @@ export class CustomNodesManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await api.fetchApi('/v2/manager/queue/start');
|
this.batch_id = generateUUID();
|
||||||
|
batch['batch_id'] = this.batch_id;
|
||||||
|
|
||||||
|
const res = await api.fetchApi(`/v2/manager/queue/batch`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(batch)
|
||||||
|
});
|
||||||
|
|
||||||
|
let failed = await res.json();
|
||||||
|
|
||||||
|
if(failed.length > 0) {
|
||||||
|
for(let k in failed) {
|
||||||
|
let hash = failed[k];
|
||||||
|
const item = this.grid.getRowItemBy("hash", hash);
|
||||||
|
errorMsg = `[FAIL] ${item.title}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.showStop();
|
this.showStop();
|
||||||
showTerminal();
|
showTerminal();
|
||||||
}
|
}
|
||||||
@@ -1571,7 +1569,7 @@ export class CustomNodesManager {
|
|||||||
self.grid.updateCell(item, "action");
|
self.grid.updateCell(item, "action");
|
||||||
self.grid.setRowSelected(item, false);
|
self.grid.setRowSelected(item, false);
|
||||||
}
|
}
|
||||||
else if(event.detail.status == 'done') {
|
else if(event.detail.status == 'batch-done' && event.detail.batch_id == self.batch_id) {
|
||||||
self.hideStop();
|
self.hideStop();
|
||||||
self.onQueueCompleted(event.detail);
|
self.onQueueCompleted(event.detail);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { $el } from "../../scripts/ui.js";
|
|||||||
import {
|
import {
|
||||||
manager_instance, rebootAPI,
|
manager_instance, rebootAPI,
|
||||||
fetchData, md5, icons, show_message, customAlert, infoToast, showTerminal,
|
fetchData, md5, icons, show_message, customAlert, infoToast, showTerminal,
|
||||||
storeColumnWidth, restoreColumnWidth, loadCss
|
storeColumnWidth, restoreColumnWidth, loadCss, generateUUID
|
||||||
} from "./common.js";
|
} from "./common.js";
|
||||||
import { api } from "../../scripts/api.js";
|
import { api } from "../../scripts/api.js";
|
||||||
|
|
||||||
@@ -413,24 +413,16 @@ export class ModelManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async installModels(list, btn) {
|
async installModels(list, btn) {
|
||||||
let stats = await api.fetchApi('/v2/manager/queue/status');
|
|
||||||
|
|
||||||
stats = await stats.json();
|
|
||||||
if(stats.is_processing) {
|
|
||||||
customAlert(`[ComfyUI-Manager] There are already tasks in progress. Please try again after it is completed. (${stats.done_count}/${stats.total_count})`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
btn.classList.add("cmm-btn-loading");
|
btn.classList.add("cmm-btn-loading");
|
||||||
this.showError("");
|
this.showError("");
|
||||||
|
|
||||||
let needRefresh = false;
|
let needRefresh = false;
|
||||||
let errorMsg = "";
|
let errorMsg = "";
|
||||||
|
|
||||||
await api.fetchApi('/v2/manager/queue/reset');
|
|
||||||
|
|
||||||
let target_items = [];
|
let target_items = [];
|
||||||
|
|
||||||
|
let batch = {};
|
||||||
|
|
||||||
for (const item of list) {
|
for (const item of list) {
|
||||||
this.grid.scrollRowIntoView(item);
|
this.grid.scrollRowIntoView(item);
|
||||||
target_items.push(item);
|
target_items.push(item);
|
||||||
@@ -446,21 +438,12 @@ export class ModelManager {
|
|||||||
const data = item.originalData;
|
const data = item.originalData;
|
||||||
data.ui_id = item.hash;
|
data.ui_id = item.hash;
|
||||||
|
|
||||||
const res = await api.fetchApi(`/v2/manager/queue/install_model`, {
|
|
||||||
method: 'POST',
|
|
||||||
body: JSON.stringify(data)
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res.status != 200) {
|
if(batch['install_model']) {
|
||||||
errorMsg = `'${item.name}': `;
|
batch['install_model'].push(data);
|
||||||
|
}
|
||||||
if(res.status == 403) {
|
else {
|
||||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
batch['install_model'] = [data];
|
||||||
} else {
|
|
||||||
errorMsg += await res.text() + '\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -477,7 +460,24 @@ export class ModelManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
await api.fetchApi('/v2/manager/queue/start');
|
this.batch_id = generateUUID();
|
||||||
|
batch['batch_id'] = this.batch_id;
|
||||||
|
|
||||||
|
const res = await api.fetchApi(`/v2/manager/queue/batch`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(batch)
|
||||||
|
});
|
||||||
|
|
||||||
|
let failed = await res.json();
|
||||||
|
|
||||||
|
if(failed.length > 0) {
|
||||||
|
for(let k in failed) {
|
||||||
|
let hash = failed[k];
|
||||||
|
const item = self.grid.getRowItemBy("hash", hash);
|
||||||
|
errorMsg = `[FAIL] ${item.title}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.showStop();
|
this.showStop();
|
||||||
showTerminal();
|
showTerminal();
|
||||||
}
|
}
|
||||||
@@ -497,7 +497,7 @@ export class ModelManager {
|
|||||||
// self.grid.updateCell(item, "tg-column-select");
|
// self.grid.updateCell(item, "tg-column-select");
|
||||||
self.grid.updateRow(item);
|
self.grid.updateRow(item);
|
||||||
}
|
}
|
||||||
else if(event.detail.status == 'done') {
|
else if(event.detail.status == 'batch-done') {
|
||||||
self.hideStop();
|
self.hideStop();
|
||||||
self.onQueueCompleted(event.detail);
|
self.onQueueCompleted(event.detail);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1694,16 +1694,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "This node manipulates the pixel art image in ways that it should look pixel perfect (downscales, changes palette, upscales etc.)."
|
"description": "This node manipulates the pixel art image in ways that it should look pixel perfect (downscales, changes palette, upscales etc.)."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "hylarucoder",
|
|
||||||
"title": "comfyui-copilot",
|
|
||||||
"reference": "https://github.com/hylarucoder/comfyui-copilot",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/hylarucoder/comfyui-copilot"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES:Eagle Image Node for PNGInfo, SDXL Resolution Presets (ws), SDXL Prompt Styler, SDXL Prompt Styler Advanced"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "theUpsider",
|
"author": "theUpsider",
|
||||||
"title": "Styles CSV Loader Extension for ComfyUI",
|
"title": "Styles CSV Loader Extension for ComfyUI",
|
||||||
@@ -7741,6 +7731,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "A powerful ComfyUI custom node for combining video clips with synchronized audio, background music, and advanced audio controls."
|
"description": "A powerful ComfyUI custom node for combining video clips with synchronized audio, background music, and advanced audio controls."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "ShmuelRonen",
|
||||||
|
"title": "ComfyUI-Veo2-Experimental",
|
||||||
|
"reference": "https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node extension for ComfyUI that integrates Google's Veo 2 text-to-video generation capabilities."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "redhottensors",
|
"author": "redhottensors",
|
||||||
"title": "ComfyUI-Prediction",
|
"title": "ComfyUI-Prediction",
|
||||||
@@ -7877,6 +7877,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "ComfyUI-SparkTTS is a custom ComfyUI node implementation of SparkTTS, an advanced text-to-speech system that harnesses the power of large language models (LLMs) to generate highly accurate and natural-sounding speech."
|
"description": "ComfyUI-SparkTTS is a custom ComfyUI node implementation of SparkTTS, an advanced text-to-speech system that harnesses the power of large language models (LLMs) to generate highly accurate and natural-sounding speech."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "1038lab",
|
||||||
|
"title": "ComfyUI-MegaTTS",
|
||||||
|
"reference": "https://github.com/1038lab/ComfyUI-MegaTTS",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/1038lab/ComfyUI-MegaTTS"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI custom node based on ByteDance MegaTTS3 MegaTTS3, enabling high-quality text-to-speech synthesis with voice cloning capabilities for both Chinese and English."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "Klinter",
|
"author": "Klinter",
|
||||||
"title": "Klinter_nodes",
|
"title": "Klinter_nodes",
|
||||||
@@ -16524,9 +16534,9 @@
|
|||||||
{
|
{
|
||||||
"author": "edelvarden",
|
"author": "edelvarden",
|
||||||
"title": "ComfyUI-ImageMetadataExtension",
|
"title": "ComfyUI-ImageMetadataExtension",
|
||||||
"reference": "https://github.com/edelvarden/ComfyUI-ImageMetadataExtension",
|
"reference": "https://github.com/edelvarden/comfyui_image_metadata_extension",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/edelvarden/ComfyUI-ImageMetadataExtension"
|
"https://github.com/edelvarden/comfyui_image_metadata_extension"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Custom node for ComfyUI. It adds additional metadata for saved images, ensuring compatibility with the Civitai website."
|
"description": "Custom node for ComfyUI. It adds additional metadata for saved images, ensuring compatibility with the Civitai website."
|
||||||
@@ -18904,6 +18914,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "ComfyUI nodes for SkyReels-A2 model."
|
"description": "ComfyUI nodes for SkyReels-A2 model."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "Yuan-ManX",
|
||||||
|
"title": "ComfyUI-UNO",
|
||||||
|
"reference": "https://github.com/Yuan-ManX/ComfyUI-UNO",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Yuan-ManX/ComfyUI-UNO"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI nodes for UNO model."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "Starnodes2024",
|
"author": "Starnodes2024",
|
||||||
"title": "ComfyUI_StarNodes",
|
"title": "ComfyUI_StarNodes",
|
||||||
@@ -19366,6 +19386,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "ComfyUI_RH_OminiControl is a ComfyUI plugin based on OminiControl By splitting the pipeline load, the plugin efficiently runs on NVIDIA RTX 4090 GPUs. Additionally, the spatial and fill functionalities are generated using the schnell model, reducing the number of sampling steps and improving overall efficiency."
|
"description": "ComfyUI_RH_OminiControl is a ComfyUI plugin based on OminiControl By splitting the pipeline load, the plugin efficiently runs on NVIDIA RTX 4090 GPUs. Additionally, the spatial and fill functionalities are generated using the schnell model, reducing the number of sampling steps and improving overall efficiency."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "HM-RunningHub",
|
||||||
|
"title": "ComfyUI_RH_UNO",
|
||||||
|
"reference": "https://github.com/HM-RunningHub/ComfyUI_RH_UNO",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/HM-RunningHub/ComfyUI_RH_UNO"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is a UNO ComfyUI plugin implementation that can run the full version with 24GB VRAM, as well as quickly run the FP8 version."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "sebord",
|
"author": "sebord",
|
||||||
"title": "ComfyUI-LMCQ",
|
"title": "ComfyUI-LMCQ",
|
||||||
@@ -20102,8 +20132,8 @@
|
|||||||
"description": "An extension for ComfyUI that adds utility functions and nodes not available in the default setup."
|
"description": "An extension for ComfyUI that adds utility functions and nodes not available in the default setup."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "billwuhao",
|
"author": "mw",
|
||||||
"title": "ComfyUI_OneButtonPrompt",
|
"title": "MW-ComfyUI_OneButtonPrompt",
|
||||||
"reference": "https://github.com/billwuhao/ComfyUI_OneButtonPrompt",
|
"reference": "https://github.com/billwuhao/ComfyUI_OneButtonPrompt",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/billwuhao/ComfyUI_OneButtonPrompt"
|
"https://github.com/billwuhao/ComfyUI_OneButtonPrompt"
|
||||||
@@ -20112,7 +20142,7 @@
|
|||||||
"description": "A node that assists in one click generation of prompts (for image and video generation, etc.) in Comfyui."
|
"description": "A node that assists in one click generation of prompts (for image and video generation, etc.) in Comfyui."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "billwuhao",
|
"author": "mw",
|
||||||
"title": "ComfyUI_StepAudioTTS",
|
"title": "ComfyUI_StepAudioTTS",
|
||||||
"reference": "https://github.com/billwuhao/ComfyUI_StepAudioTTS",
|
"reference": "https://github.com/billwuhao/ComfyUI_StepAudioTTS",
|
||||||
"files": [
|
"files": [
|
||||||
@@ -20122,7 +20152,7 @@
|
|||||||
"description": "A Text To Speech node using Step-Audio-TTS in ComfyUI. Can speak, rap, sing, or clone voice."
|
"description": "A Text To Speech node using Step-Audio-TTS in ComfyUI. Can speak, rap, sing, or clone voice."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "billwuhao",
|
"author": "mw",
|
||||||
"title": "ComfyUI_KokoroTTS_MW",
|
"title": "ComfyUI_KokoroTTS_MW",
|
||||||
"reference": "https://github.com/billwuhao/ComfyUI_KokoroTTS_MW",
|
"reference": "https://github.com/billwuhao/ComfyUI_KokoroTTS_MW",
|
||||||
"files": [
|
"files": [
|
||||||
@@ -20132,8 +20162,8 @@
|
|||||||
"description": "A Text To Speech node using Kokoro TTS in ComfyUI. Supports 8 languages and 150 voices"
|
"description": "A Text To Speech node using Kokoro TTS in ComfyUI. Supports 8 languages and 150 voices"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "billwuhao",
|
"author": "mw",
|
||||||
"title": "ComfyUI_DiffRhythm",
|
"title": "ComfyUI_DiffRhythm_MW",
|
||||||
"reference": "https://github.com/billwuhao/ComfyUI_DiffRhythm",
|
"reference": "https://github.com/billwuhao/ComfyUI_DiffRhythm",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/billwuhao/ComfyUI_DiffRhythm"
|
"https://github.com/billwuhao/ComfyUI_DiffRhythm"
|
||||||
@@ -20141,6 +20171,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Blazingly Fast and Embarrassingly Simple End-to-End Full-Length Song Generation. A node for ComfyUI."
|
"description": "Blazingly Fast and Embarrassingly Simple End-to-End Full-Length Song Generation. A node for ComfyUI."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "mw",
|
||||||
|
"title": "MW-ComfyUI_PortraitTools",
|
||||||
|
"reference": "https://github.com/billwuhao/ComfyUI_PortraitTools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/billwuhao/ComfyUI_PortraitTools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Portrait Tools: Facial detection cropping, alignment, ID photo, etc."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "mw",
|
"author": "mw",
|
||||||
"title": "ComfyUI_NotaGen",
|
"title": "ComfyUI_NotaGen",
|
||||||
@@ -20891,6 +20931,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Custom nodes for ComfyUI designed for cropping and stitching video frames (image batches). Part of the 'Burgstall Enabling The Awesomeness' suite."
|
"description": "Custom nodes for ComfyUI designed for cropping and stitching video frames (image batches). Part of the 'Burgstall Enabling The Awesomeness' suite."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "Burgstall-labs",
|
||||||
|
"title": "ComfyUI-BETA-Helpernodes",
|
||||||
|
"reference": "https://github.com/Burgstall-labs/ComfyUI-BETA-Helpernodes",
|
||||||
|
"files": [
|
||||||
|
"hhttps://github.com/Burgstall-labs/ComfyUI-BETA-Helpernodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom utility nodes for ComfyUI, providing helpers for tasks like video frame manipulation and advanced audio saving. Part of the 'Burgstall Enabling The Awesomeness' suite."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "Kidev",
|
"author": "Kidev",
|
||||||
"title": "ComfyUI Fisheye Effects Nodes",
|
"title": "ComfyUI Fisheye Effects Nodes",
|
||||||
@@ -21748,6 +21798,17 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Advanced LLM driven node with many custom instructions, including node finder, expert prompter and json converter."
|
"description": "Advanced LLM driven node with many custom instructions, including node finder, expert prompter and json converter."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "lum3on",
|
||||||
|
"title": "HiDream Sampler",
|
||||||
|
"id": "hidream-sampler",
|
||||||
|
"reference": "https://github.com/lum3on/comfyui_HiDream-Sampler",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/lum3on/comfyui_HiDream-Sampler"
|
||||||
|
],
|
||||||
|
"install_type": "copy",
|
||||||
|
"description": "A custom ComfyUI node for generating images using the HiDream AI model. Uses quantization for lower memory usage."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "austinbrown34",
|
"author": "austinbrown34",
|
||||||
"title": "ComfyUI-IO-Helpers",
|
"title": "ComfyUI-IO-Helpers",
|
||||||
@@ -22446,9 +22507,9 @@
|
|||||||
{
|
{
|
||||||
"author": "ifmylove2011",
|
"author": "ifmylove2011",
|
||||||
"title": "comfyui-missing-tool",
|
"title": "comfyui-missing-tool",
|
||||||
"reference": "https://github.com/ifmylove2011/comfyui-missing-tool",
|
"reference": "https://github.com/ifmylove2011/comfyui-missed-tool",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/ifmylove2011/comfyui-missing-tool"
|
"https://github.com/ifmylove2011/comfyui-missed-tool"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: TrimBG, TrimBG Advanced, Image Queue Loader, Load Image Alpha.\nA few tools for ComfyUI, perhaps it's exactly what you need."
|
"description": "NODES: TrimBG, TrimBG Advanced, Image Queue Loader, Load Image Alpha.\nA few tools for ComfyUI, perhaps it's exactly what you need."
|
||||||
@@ -23128,6 +23189,16 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "ComfyUI node to vectorize images using the pure Python 'potracer' library."
|
"description": "ComfyUI node to vectorize images using the pure Python 'potracer' library."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "ImagineerNL",
|
||||||
|
"title": "ComfyUI-IMGNR-Utils",
|
||||||
|
"reference": "https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI Utility Nodes by Imagineer. Currently 1: Catch and Edit Text, useful for grabbing AI generated prompts which you edit by hand. Doing so mutes the upstream node, improving speed and saving external calls and budget."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "Yushan777",
|
"author": "Yushan777",
|
||||||
"title": "Y7Nodes for ComfyUI",
|
"title": "Y7Nodes for ComfyUI",
|
||||||
@@ -23492,6 +23563,17 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "This Module provides nodes to allow the development of 3D Generative AI workflows that use the MasterpieceX Python SDK."
|
"description": "This Module provides nodes to allow the development of 3D Generative AI workflows that use the MasterpieceX Python SDK."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "jerrywap",
|
||||||
|
"title": "ComfyUI_LoadImageFromHttpURL",
|
||||||
|
"id": "load-image-from-http-url",
|
||||||
|
"reference": "https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI node that fetches an image from an HTTP URL and returns it as an image tensor. Useful for API-based workflows."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "jerrywap",
|
"author": "jerrywap",
|
||||||
"title": "ComfyUI_UploadToWebhookHTTP",
|
"title": "ComfyUI_UploadToWebhookHTTP",
|
||||||
@@ -23595,7 +23677,77 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "This node package contains automatic sampler setting according to model name in ComfyUI, adjusting image size according to specific constraints and some other nodes."
|
"description": "This node package contains automatic sampler setting according to model name in ComfyUI, adjusting image size according to specific constraints and some other nodes."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"author": "brantje",
|
||||||
|
"title": "ComfyUI-api-tools",
|
||||||
|
"id": "comfyui_api_tools",
|
||||||
|
"reference": "https://github.com/brantje/ComfyUI-api-tools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/brantje/ComfyUI-api-tools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Adds extra API functionallity and prometheus endpoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "oshtz",
|
||||||
|
"title": "oshtz Nodes",
|
||||||
|
"reference": "https://github.com/oshtz/ComfyUI-oshtz-nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/oshtz/ComfyUI-oshtz-nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom ComfyUI nodes including LLM integration, LoRA switchers, image tools, and more"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "HavocsCall",
|
||||||
|
"title": "HavocsCall's Custom ComfyUI Nodes",
|
||||||
|
"reference": "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Prompt Combiner, Float/Int Selector, Sampler Config, Text Box, Int to Float/String, Int to Float/String, Clip/Conditioning/Image/Latent/Model/String/VAE Switch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "danger-electrodes",
|
||||||
|
"title": "ComfyUI_Fawfluencer_Nodes",
|
||||||
|
"reference": "https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A set of node for ComfyUI to create an influencer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "badxprogramm",
|
||||||
|
"title": "GradientBlurNode for ComfyUI",
|
||||||
|
"reference": "https://github.com/badxprogramm/ComfyUI-GradientBlur",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/badxprogramm/ComfyUI-GradientBlur"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "GradientBlurNode is a custom node for ComfyUI that allows for gradient-based image blurring. This tool provides precise control over the direction, intensity, and distribution of the blur, making it ideal for creating smooth transitions, focusing attention on specific parts of an image, or adding artistic effects."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "linksluckytime",
|
||||||
|
"title": "comfyui_snacknodes",
|
||||||
|
"reference": "https://github.com/linksluckytime/comfyui_snacknodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/linksluckytime/comfyui_snacknodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A collection of custom nodes for ComfyUI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "uihp",
|
||||||
|
"title": "ComfyUI-String-Chain",
|
||||||
|
"reference": "https://github.com/uihp/ComfyUI-String-Chain",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/uihp/ComfyUI-String-Chain"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "String Chain: Reconnect your prompts"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,16 @@
|
|||||||
"title_aux": "ComfyUI-EdgeTTS"
|
"title_aux": "ComfyUI-EdgeTTS"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/1038lab/ComfyUI-MegaTTS": [
|
||||||
|
[
|
||||||
|
"MegaTTS3",
|
||||||
|
"MegaTTS3S",
|
||||||
|
"MegaTTS_VoiceMaker"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-MegaTTS"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/1038lab/ComfyUI-OmniGen": [
|
"https://github.com/1038lab/ComfyUI-OmniGen": [
|
||||||
[
|
[
|
||||||
"ailab_OmniGen"
|
"ailab_OmniGen"
|
||||||
@@ -1577,28 +1587,10 @@
|
|||||||
"EXPORT (JOV) \ud83d\udcfd",
|
"EXPORT (JOV) \ud83d\udcfd",
|
||||||
"FILTER MASK (JOV) \ud83e\udd3f",
|
"FILTER MASK (JOV) \ud83e\udd3f",
|
||||||
"FLATTEN (JOV) \u2b07\ufe0f",
|
"FLATTEN (JOV) \u2b07\ufe0f",
|
||||||
"GLSL (JOV) \ud83c\udf69",
|
|
||||||
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL COLOR CONVERSION (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL COLOR PALETTE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL CONICAL GRADIENT (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL DIRECTIONAL WARP (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL INVERT (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL NORMAL (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL NORMAL BLEND (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL POSTERIZE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL TRANSFORM (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa",
|
"GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa",
|
||||||
"GRAPH (JOV) \ud83d\udcc8",
|
"GRAPH (JOV) \ud83d\udcc8",
|
||||||
"IMAGE INFO (JOV) \ud83d\udcda",
|
"IMAGE INFO (JOV) \ud83d\udcda",
|
||||||
"LERP (JOV) \ud83d\udd30",
|
"LERP (JOV) \ud83d\udd30",
|
||||||
"MIDI FILTER (JOV) \u2733\ufe0f",
|
|
||||||
"MIDI FILTER EZ (JOV) \u2747\ufe0f",
|
|
||||||
"MIDI MESSAGE (JOV) \ud83c\udf9b\ufe0f",
|
|
||||||
"MIDI READER (JOV) \ud83c\udfb9",
|
|
||||||
"OP BINARY (JOV) \ud83c\udf1f",
|
"OP BINARY (JOV) \ud83c\udf1f",
|
||||||
"OP UNARY (JOV) \ud83c\udfb2",
|
"OP UNARY (JOV) \ud83c\udfb2",
|
||||||
"PIXEL MERGE (JOV) \ud83e\udec2",
|
"PIXEL MERGE (JOV) \ud83e\udec2",
|
||||||
@@ -1609,12 +1601,9 @@
|
|||||||
"ROUTE (JOV) \ud83d\ude8c",
|
"ROUTE (JOV) \ud83d\ude8c",
|
||||||
"SAVE OUTPUT (JOV) \ud83d\udcbe",
|
"SAVE OUTPUT (JOV) \ud83d\udcbe",
|
||||||
"SHAPE GEN (JOV) \u2728",
|
"SHAPE GEN (JOV) \u2728",
|
||||||
"SPOUT WRITER (JOV) \ud83c\udfa5",
|
|
||||||
"STACK (JOV) \u2795",
|
"STACK (JOV) \u2795",
|
||||||
"STEREOGRAM (JOV) \ud83d\udcfb",
|
"STEREOGRAM (JOV) \ud83d\udcfb",
|
||||||
"STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f",
|
"STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f",
|
||||||
"STREAM READER (JOV) \ud83d\udcfa",
|
|
||||||
"STREAM WRITER (JOV) \ud83c\udf9e\ufe0f",
|
|
||||||
"STRINGER (JOV) \ud83e\ude80",
|
"STRINGER (JOV) \ud83e\ude80",
|
||||||
"SWIZZLE (JOV) \ud83d\ude35",
|
"SWIZZLE (JOV) \ud83d\ude35",
|
||||||
"TEXT GEN (JOV) \ud83d\udcdd",
|
"TEXT GEN (JOV) \ud83d\udcdd",
|
||||||
@@ -2396,7 +2385,8 @@
|
|||||||
"https://github.com/Burgstall-labs/ComfyUI-BETA-Cropnodes": [
|
"https://github.com/Burgstall-labs/ComfyUI-BETA-Cropnodes": [
|
||||||
[
|
[
|
||||||
"BETACrop",
|
"BETACrop",
|
||||||
"BETAStitch"
|
"BETAStitch",
|
||||||
|
"SaveAudioAdvanced_BETA"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-BETA-Cropnodes"
|
"title_aux": "ComfyUI-BETA-Cropnodes"
|
||||||
@@ -2658,6 +2648,7 @@
|
|||||||
"CLIPTextEncodeFluxUnguided",
|
"CLIPTextEncodeFluxUnguided",
|
||||||
"ClownRegionalConditioning",
|
"ClownRegionalConditioning",
|
||||||
"ClownRegionalConditioning3",
|
"ClownRegionalConditioning3",
|
||||||
|
"ClownRegionalConditioning_AB",
|
||||||
"ClownScheduler",
|
"ClownScheduler",
|
||||||
"ClownpileModelWanVideo",
|
"ClownpileModelWanVideo",
|
||||||
"Conditioning Recast FP64",
|
"Conditioning Recast FP64",
|
||||||
@@ -2777,6 +2768,7 @@
|
|||||||
"Tan Scheduler 2",
|
"Tan Scheduler 2",
|
||||||
"Tan Scheduler 2 Simple",
|
"Tan Scheduler 2 Simple",
|
||||||
"TemporalMaskGenerator",
|
"TemporalMaskGenerator",
|
||||||
|
"TemporalSplitAttnMask",
|
||||||
"TextBox1",
|
"TextBox1",
|
||||||
"TextBox2",
|
"TextBox2",
|
||||||
"TextBox3",
|
"TextBox3",
|
||||||
@@ -2993,6 +2985,7 @@
|
|||||||
"DynamicVAESwitch",
|
"DynamicVAESwitch",
|
||||||
"EvaluaterNode",
|
"EvaluaterNode",
|
||||||
"Modelswitch",
|
"Modelswitch",
|
||||||
|
"PeopleEvaluationNode",
|
||||||
"SanitizeFilename",
|
"SanitizeFilename",
|
||||||
"SystemPromp",
|
"SystemPromp",
|
||||||
"Textswitch",
|
"Textswitch",
|
||||||
@@ -4635,6 +4628,15 @@
|
|||||||
"title_aux": "ComfyUI_RH_OminiControl"
|
"title_aux": "ComfyUI_RH_OminiControl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/HM-RunningHub/ComfyUI_RH_UNO": [
|
||||||
|
[
|
||||||
|
"RunningHub_UNO_Loadmodel",
|
||||||
|
"RunningHub_UNO_Sampler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_RH_UNO"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [
|
"https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [
|
||||||
[
|
[
|
||||||
"HaiperImage2Video",
|
"HaiperImage2Video",
|
||||||
@@ -4719,6 +4721,29 @@
|
|||||||
"title_aux": "ComfyUI ReSharpen"
|
"title_aux": "ComfyUI ReSharpen"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": [
|
||||||
|
[
|
||||||
|
"Clip Switch",
|
||||||
|
"Conditioning Switch",
|
||||||
|
"Float Selector",
|
||||||
|
"Float to Int",
|
||||||
|
"Float to String",
|
||||||
|
"Image Switch",
|
||||||
|
"Int Selector",
|
||||||
|
"Int to Float",
|
||||||
|
"Int to String",
|
||||||
|
"Latent Switch",
|
||||||
|
"Model Switch",
|
||||||
|
"Prompt Combiner",
|
||||||
|
"Sampler Config",
|
||||||
|
"String Switch",
|
||||||
|
"Text Box",
|
||||||
|
"VAE Switch"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "HavocsCall's Custom ComfyUI Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/HaydenReeve/ComfyUI-Better-Strings": [
|
"https://github.com/HaydenReeve/ComfyUI-Better-Strings": [
|
||||||
[
|
[
|
||||||
"BetterString"
|
"BetterString"
|
||||||
@@ -4944,6 +4969,14 @@
|
|||||||
"title_aux": "Simple String Repository"
|
"title_aux": "Simple String Repository"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils": [
|
||||||
|
[
|
||||||
|
"CatchEditTextNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-IMGNR-Utils"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ImagineerNL/ComfyUI-ToSVG-Potracer": [
|
"https://github.com/ImagineerNL/ComfyUI-ToSVG-Potracer": [
|
||||||
[
|
[
|
||||||
"PotracerVectorize"
|
"PotracerVectorize"
|
||||||
@@ -5497,8 +5530,15 @@
|
|||||||
"https://github.com/Jokimbe/ComfyUI-DrawThings-gRPC": [
|
"https://github.com/Jokimbe/ComfyUI-DrawThings-gRPC": [
|
||||||
[
|
[
|
||||||
"DrawThingsControlNet",
|
"DrawThingsControlNet",
|
||||||
|
"DrawThingsHighResFix",
|
||||||
"DrawThingsLoRA",
|
"DrawThingsLoRA",
|
||||||
"DrawThingsSampler"
|
"DrawThingsNegative",
|
||||||
|
"DrawThingsPositive",
|
||||||
|
"DrawThingsRefiner",
|
||||||
|
"DrawThingsSampler",
|
||||||
|
"DrawThingsTeaCache",
|
||||||
|
"DrawThingsUpscaler",
|
||||||
|
"DrawThingsVideo"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-DrawThings-gRPC"
|
"title_aux": "ComfyUI-DrawThings-gRPC"
|
||||||
@@ -6934,6 +6974,7 @@
|
|||||||
[
|
[
|
||||||
"iToolsAddOverlay",
|
"iToolsAddOverlay",
|
||||||
"iToolsCheckerBoard",
|
"iToolsCheckerBoard",
|
||||||
|
"iToolsCompareImage",
|
||||||
"iToolsGridFiller",
|
"iToolsGridFiller",
|
||||||
"iToolsKSampler",
|
"iToolsKSampler",
|
||||||
"iToolsLineLoader",
|
"iToolsLineLoader",
|
||||||
@@ -7987,6 +8028,7 @@
|
|||||||
"FormatConcatStrings",
|
"FormatConcatStrings",
|
||||||
"FormattingSingle",
|
"FormattingSingle",
|
||||||
"FourierAnalysisNode",
|
"FourierAnalysisNode",
|
||||||
|
"ImageDifference",
|
||||||
"MosaicEffectNode",
|
"MosaicEffectNode",
|
||||||
"PWLoraNameCollector",
|
"PWLoraNameCollector",
|
||||||
"PWLoraSelector",
|
"PWLoraSelector",
|
||||||
@@ -8993,15 +9035,9 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [
|
"https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [
|
||||||
[
|
[
|
||||||
"ASCIIArtNode",
|
"ASCIIArtNodeV3"
|
||||||
"ASCIIArtNodev2",
|
|
||||||
"ASCIIArtSinglefontNode"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"author": "Shiba-2-shiba",
|
|
||||||
"description": "This node generates colorful ASCII art using custom character sets and fonts.",
|
|
||||||
"nickname": "ColorASCII",
|
|
||||||
"title": "Colorful ASCII Art Node",
|
|
||||||
"title_aux": "ComfyUI-color-ascii-art-node"
|
"title_aux": "ComfyUI-color-ascii-art-node"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -9172,6 +9208,16 @@
|
|||||||
"title_aux": "ComfyUI-SVDResizer"
|
"title_aux": "ComfyUI-SVDResizer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental": [
|
||||||
|
[
|
||||||
|
"VeoTextToVideo",
|
||||||
|
"VeoToVHS",
|
||||||
|
"VeoVideoPreview"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Veo2-Experimental"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler": [
|
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler": [
|
||||||
[
|
[
|
||||||
"WanVideoKsampler"
|
"WanVideoKsampler"
|
||||||
@@ -9589,6 +9635,7 @@
|
|||||||
"SDVN AnyDownload List",
|
"SDVN AnyDownload List",
|
||||||
"SDVN Apply Style Model",
|
"SDVN Apply Style Model",
|
||||||
"SDVN Auto Generate",
|
"SDVN Auto Generate",
|
||||||
|
"SDVN AutoSwitch",
|
||||||
"SDVN Boolean",
|
"SDVN Boolean",
|
||||||
"SDVN CLIP Download",
|
"SDVN CLIP Download",
|
||||||
"SDVN CLIP Text Encode",
|
"SDVN CLIP Text Encode",
|
||||||
@@ -9634,6 +9681,7 @@
|
|||||||
"SDVN Load Lora",
|
"SDVN Load Lora",
|
||||||
"SDVN Load Model",
|
"SDVN Load Model",
|
||||||
"SDVN Load Text",
|
"SDVN Load Text",
|
||||||
|
"SDVN LoadPinterest",
|
||||||
"SDVN Logic",
|
"SDVN Logic",
|
||||||
"SDVN Loop Inpaint Stitch",
|
"SDVN Loop Inpaint Stitch",
|
||||||
"SDVN Lora Download",
|
"SDVN Lora Download",
|
||||||
@@ -11603,6 +11651,19 @@
|
|||||||
"title_aux": "ComfyUI-StyleStudio"
|
"title_aux": "ComfyUI-StyleStudio"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/Yuan-ManX/ComfyUI-UNO": [
|
||||||
|
[
|
||||||
|
"ConfigSave",
|
||||||
|
"ImageConcat",
|
||||||
|
"ImagePathLoader",
|
||||||
|
"ImageSave",
|
||||||
|
"UNOGenerator",
|
||||||
|
"UNOParams"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-UNO"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [
|
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [
|
||||||
[
|
[
|
||||||
"APISR_Lterative_Zho",
|
"APISR_Lterative_Zho",
|
||||||
@@ -11997,7 +12058,8 @@
|
|||||||
"Rotate Module (Bending)",
|
"Rotate Module (Bending)",
|
||||||
"Scale Module (Bending)",
|
"Scale Module (Bending)",
|
||||||
"Sobel Module (Bending)",
|
"Sobel Module (Bending)",
|
||||||
"Threshold Module (Bending)"
|
"Threshold Module (Bending)",
|
||||||
|
"Visualize Feature Map"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI Model Bending"
|
"title_aux": "ComfyUI Model Bending"
|
||||||
@@ -12322,6 +12384,7 @@
|
|||||||
"CogVideoXFunInpaintSampler",
|
"CogVideoXFunInpaintSampler",
|
||||||
"CogVideoXFunT2VSampler",
|
"CogVideoXFunT2VSampler",
|
||||||
"CogVideoXFunV2VSampler",
|
"CogVideoXFunV2VSampler",
|
||||||
|
"FunRiflex",
|
||||||
"FunTextBox",
|
"FunTextBox",
|
||||||
"LoadCogVideoXFunLora",
|
"LoadCogVideoXFunLora",
|
||||||
"LoadCogVideoXFunModel",
|
"LoadCogVideoXFunModel",
|
||||||
@@ -13202,6 +13265,14 @@
|
|||||||
"title_aux": "LoRA Tag Loader for ComfyUI"
|
"title_aux": "LoRA Tag Loader for ComfyUI"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/badxprogramm/ComfyUI-GradientBlur": [
|
||||||
|
[
|
||||||
|
"GradientBlur"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "GradientBlurNode for ComfyUI"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/baicai99/ComfyUI-FrameSkipping": [
|
"https://github.com/baicai99/ComfyUI-FrameSkipping": [
|
||||||
[
|
[
|
||||||
"FrameSelector",
|
"FrameSelector",
|
||||||
@@ -13562,7 +13633,7 @@
|
|||||||
"MultiLinePrompt"
|
"MultiLinePrompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_DiffRhythm"
|
"title_aux": "ComfyUI_DiffRhythm_MW"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/billwuhao/ComfyUI_EraX-WoW-Turbo": [
|
"https://github.com/billwuhao/ComfyUI_EraX-WoW-Turbo": [
|
||||||
@@ -13607,7 +13678,19 @@
|
|||||||
"LoadPrompt"
|
"LoadPrompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_OneButtonPrompt"
|
"title_aux": "MW-ComfyUI_OneButtonPrompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/billwuhao/ComfyUI_PortraitTools": [
|
||||||
|
[
|
||||||
|
"AlignFace",
|
||||||
|
"BeautifyPhoto",
|
||||||
|
"DetectCropFace",
|
||||||
|
"IDPhotos",
|
||||||
|
"RMBG"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "MW-ComfyUI_PortraitTools"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/billwuhao/ComfyUI_SparkTTS": [
|
"https://github.com/billwuhao/ComfyUI_SparkTTS": [
|
||||||
@@ -14008,6 +14091,14 @@
|
|||||||
"title_aux": "braintacles-nodes"
|
"title_aux": "braintacles-nodes"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/brantje/ComfyUI-api-tools": [
|
||||||
|
[
|
||||||
|
"SimpleGenImageInterface"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-api-tools"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/brayevalerien/ComfyUI-resynthesizer": [
|
"https://github.com/brayevalerien/ComfyUI-resynthesizer": [
|
||||||
[
|
[
|
||||||
"Resynthesize"
|
"Resynthesize"
|
||||||
@@ -16320,6 +16411,7 @@
|
|||||||
"VPScheduler",
|
"VPScheduler",
|
||||||
"VideoLinearCFGGuidance",
|
"VideoLinearCFGGuidance",
|
||||||
"VideoTriangleCFGGuidance",
|
"VideoTriangleCFGGuidance",
|
||||||
|
"VoxelToMesh",
|
||||||
"VoxelToMeshBasic",
|
"VoxelToMeshBasic",
|
||||||
"WanFunControlToVideo",
|
"WanFunControlToVideo",
|
||||||
"WanFunInpaintToVideo",
|
"WanFunInpaintToVideo",
|
||||||
@@ -16906,6 +16998,54 @@
|
|||||||
"title_aux": "SDXL Auto Prompter"
|
"title_aux": "SDXL Auto Prompter"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes": [
|
||||||
|
[
|
||||||
|
"FawfaceModelSpreadsheetRealismNode",
|
||||||
|
"FawfakeAuthenticImageSaveNode",
|
||||||
|
"FawfluxencerNode",
|
||||||
|
"FawfulizedAddImagesToImageList",
|
||||||
|
"FawfulizedEmptyImageList",
|
||||||
|
"FawfulizedHunyuanAddNoise",
|
||||||
|
"FawfulizedHunyuanBasicGuider",
|
||||||
|
"FawfulizedHunyuanBasicScheduler",
|
||||||
|
"FawfulizedHunyuanBetaSamplingScheduler",
|
||||||
|
"FawfulizedHunyuanCFGGuider",
|
||||||
|
"FawfulizedHunyuanControlNetApply",
|
||||||
|
"FawfulizedHunyuanControlNetApplyAdvanced",
|
||||||
|
"FawfulizedHunyuanControlNetLoader",
|
||||||
|
"FawfulizedHunyuanDiffControlNetLoader",
|
||||||
|
"FawfulizedHunyuanDisableNoise",
|
||||||
|
"FawfulizedHunyuanDualCFGGuider",
|
||||||
|
"FawfulizedHunyuanExponentialScheduler",
|
||||||
|
"FawfulizedHunyuanFlipSigmas",
|
||||||
|
"FawfulizedHunyuanKSamplerSelect",
|
||||||
|
"FawfulizedHunyuanKarrasScheduler",
|
||||||
|
"FawfulizedHunyuanLaplaceScheduler",
|
||||||
|
"FawfulizedHunyuanLatentVideo",
|
||||||
|
"FawfulizedHunyuanPolyexponentialScheduler",
|
||||||
|
"FawfulizedHunyuanRandomNoise",
|
||||||
|
"FawfulizedHunyuanSDTurboScheduler",
|
||||||
|
"FawfulizedHunyuanSamplerCustom",
|
||||||
|
"FawfulizedHunyuanSamplerCustomAdvanced",
|
||||||
|
"FawfulizedHunyuanSamplerDPMAdaptative",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_2M_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_2S_Ancestral",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_3M_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerEulerAncestral",
|
||||||
|
"FawfulizedHunyuanSamplerEulerAncestralCFGPP",
|
||||||
|
"FawfulizedHunyuanSamplerLMS",
|
||||||
|
"FawfulizedHunyuanSetFirstSigma",
|
||||||
|
"FawfulizedHunyuanSetLatentNoiseMask",
|
||||||
|
"FawfulizedHunyuanSplitSigmas",
|
||||||
|
"FawfulizedHunyuanSplitSigmasDenoise",
|
||||||
|
"FawfulizedHunyuanVPScheduler",
|
||||||
|
"Img2ImgFawfluencerNodeSDXL"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_Fawfluencer_Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [
|
"https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [
|
||||||
[
|
[
|
||||||
"ProPainterInpaint",
|
"ProPainterInpaint",
|
||||||
@@ -17678,7 +17818,7 @@
|
|||||||
"title_aux": "Semantic-SAM"
|
"title_aux": "Semantic-SAM"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/edelvarden/ComfyUI-ImageMetadataExtension": [
|
"https://github.com/edelvarden/comfyui_image_metadata_extension": [
|
||||||
[
|
[
|
||||||
"CreateExtraMetaData",
|
"CreateExtraMetaData",
|
||||||
"SaveImageWithMetaData"
|
"SaveImageWithMetaData"
|
||||||
@@ -18280,6 +18420,7 @@
|
|||||||
"FL_NodeLoader",
|
"FL_NodeLoader",
|
||||||
"FL_NodePackLoader",
|
"FL_NodePackLoader",
|
||||||
"FL_OllamaCaptioner",
|
"FL_OllamaCaptioner",
|
||||||
|
"FL_PDFEncryptor",
|
||||||
"FL_PDFImageExtractor",
|
"FL_PDFImageExtractor",
|
||||||
"FL_PDFLoader",
|
"FL_PDFLoader",
|
||||||
"FL_PDFMerger",
|
"FL_PDFMerger",
|
||||||
@@ -18290,6 +18431,7 @@
|
|||||||
"FL_PaperDrawn",
|
"FL_PaperDrawn",
|
||||||
"FL_PasteOnCanvas",
|
"FL_PasteOnCanvas",
|
||||||
"FL_PathTypeChecker",
|
"FL_PathTypeChecker",
|
||||||
|
"FL_PixVerseAPI",
|
||||||
"FL_PixelArtShader",
|
"FL_PixelArtShader",
|
||||||
"FL_PixelSort",
|
"FL_PixelSort",
|
||||||
"FL_ProResVideo",
|
"FL_ProResVideo",
|
||||||
@@ -18311,6 +18453,7 @@
|
|||||||
"FL_SimpleGPTVision",
|
"FL_SimpleGPTVision",
|
||||||
"FL_SystemCheck",
|
"FL_SystemCheck",
|
||||||
"FL_TetrisGame",
|
"FL_TetrisGame",
|
||||||
|
"FL_TextToPDF",
|
||||||
"FL_TimeLine",
|
"FL_TimeLine",
|
||||||
"FL_UpscaleModel",
|
"FL_UpscaleModel",
|
||||||
"FL_VideoCaptionSaver",
|
"FL_VideoCaptionSaver",
|
||||||
@@ -18857,6 +19000,7 @@
|
|||||||
"ImgTextSwitch",
|
"ImgTextSwitch",
|
||||||
"Load Remote Models",
|
"Load Remote Models",
|
||||||
"LoadText|plush",
|
"LoadText|plush",
|
||||||
|
"Model-CLIP Output Switch",
|
||||||
"ParseJSON",
|
"ParseJSON",
|
||||||
"Plush-Exif Wrangler",
|
"Plush-Exif Wrangler",
|
||||||
"Random Image Output",
|
"Random Image Output",
|
||||||
@@ -20019,17 +20163,6 @@
|
|||||||
"title_aux": "ComfyUI-Select-Any"
|
"title_aux": "ComfyUI-Select-Any"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/hylarucoder/comfyui-copilot": [
|
|
||||||
[
|
|
||||||
"EagleImageNode",
|
|
||||||
"SDXLPromptStyler",
|
|
||||||
"SDXLPromptStylerAdvanced",
|
|
||||||
"SDXLResolutionPresets"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "comfyui-copilot"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/hyunamy/comfy-ui-on-complete-email-me": [
|
"https://github.com/hyunamy/comfy-ui-on-complete-email-me": [
|
||||||
[
|
[
|
||||||
"OnCompleteEmailMe",
|
"OnCompleteEmailMe",
|
||||||
@@ -20240,12 +20373,17 @@
|
|||||||
"title_aux": "IF_AI_LoadImages"
|
"title_aux": "IF_AI_LoadImages"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/ifmylove2011/comfyui-missing-tool": [
|
"https://github.com/ifmylove2011/comfyui-missed-tool": [
|
||||||
[
|
[
|
||||||
"ImageQueueLoader",
|
"ImageQueueLoader",
|
||||||
"LoadImageA",
|
"LoadImageA",
|
||||||
|
"LoraLoad",
|
||||||
|
"LoraMerge",
|
||||||
|
"LoraSaver",
|
||||||
|
"ScaleMultilplePixels",
|
||||||
"TrimBG",
|
"TrimBG",
|
||||||
"TrimBGAdvanced"
|
"TrimBGAdvanced",
|
||||||
|
"TxtSave"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "comfyui-missing-tool"
|
"title_aux": "comfyui-missing-tool"
|
||||||
@@ -20256,7 +20394,10 @@
|
|||||||
"Light-Tool: AddBackground",
|
"Light-Tool: AddBackground",
|
||||||
"Light-Tool: AddBackgroundV2",
|
"Light-Tool: AddBackgroundV2",
|
||||||
"Light-Tool: BoundingBoxCropping",
|
"Light-Tool: BoundingBoxCropping",
|
||||||
|
"Light-Tool: Calculate",
|
||||||
|
"Light-Tool: DeserializeJsonString",
|
||||||
"Light-Tool: GetImageSize",
|
"Light-Tool: GetImageSize",
|
||||||
|
"Light-Tool: GetImagesCount",
|
||||||
"Light-Tool: Hex2Rgb",
|
"Light-Tool: Hex2Rgb",
|
||||||
"Light-Tool: ImageConcat",
|
"Light-Tool: ImageConcat",
|
||||||
"Light-Tool: ImageMaskApply",
|
"Light-Tool: ImageMaskApply",
|
||||||
@@ -20270,6 +20411,7 @@
|
|||||||
"Light-Tool: LoadImage",
|
"Light-Tool: LoadImage",
|
||||||
"Light-Tool: LoadImageFromURL",
|
"Light-Tool: LoadImageFromURL",
|
||||||
"Light-Tool: LoadImagesFromDir",
|
"Light-Tool: LoadImagesFromDir",
|
||||||
|
"Light-Tool: LoadMetadataFromURL",
|
||||||
"Light-Tool: LoadVideo",
|
"Light-Tool: LoadVideo",
|
||||||
"Light-Tool: MaskBoundingBoxCropping",
|
"Light-Tool: MaskBoundingBoxCropping",
|
||||||
"Light-Tool: MaskContourExtractor",
|
"Light-Tool: MaskContourExtractor",
|
||||||
@@ -20281,9 +20423,11 @@
|
|||||||
"Light-Tool: RGB2RGBA",
|
"Light-Tool: RGB2RGBA",
|
||||||
"Light-Tool: RGBA2RGB",
|
"Light-Tool: RGBA2RGB",
|
||||||
"Light-Tool: ResizeImage",
|
"Light-Tool: ResizeImage",
|
||||||
|
"Light-Tool: SaveMetadata",
|
||||||
"Light-Tool: SaveToAliyunOSS",
|
"Light-Tool: SaveToAliyunOSS",
|
||||||
"Light-Tool: SaveVideo",
|
"Light-Tool: SaveVideo",
|
||||||
"Light-Tool: ScaleImage",
|
"Light-Tool: ScaleImage",
|
||||||
|
"Light-Tool: SerializeJsonObject",
|
||||||
"Light-Tool: ShowText",
|
"Light-Tool: ShowText",
|
||||||
"Light-Tool: SimpleImageOverlay",
|
"Light-Tool: SimpleImageOverlay",
|
||||||
"Light-Tool: SimpleTextConnect",
|
"Light-Tool: SimpleTextConnect",
|
||||||
@@ -20967,7 +21111,8 @@
|
|||||||
"EasyControlGenerate",
|
"EasyControlGenerate",
|
||||||
"EasyControlLoadFlux",
|
"EasyControlLoadFlux",
|
||||||
"EasyControlLoadLora",
|
"EasyControlLoadLora",
|
||||||
"EasyControlLoadMultiLora"
|
"EasyControlLoadMultiLora",
|
||||||
|
"EasyControlLoadStyleLora"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-easycontrol"
|
"title_aux": "ComfyUI-easycontrol"
|
||||||
@@ -21042,6 +21187,14 @@
|
|||||||
"title_aux": "ComfyUI-My-Mask"
|
"title_aux": "ComfyUI-My-Mask"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL": [
|
||||||
|
[
|
||||||
|
"LoadImageFromHttpURL"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_LoadImageFromHttpURL"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/jerrywap/ComfyUI_UploadToWebhookHTTP": [
|
"https://github.com/jerrywap/ComfyUI_UploadToWebhookHTTP": [
|
||||||
[
|
[
|
||||||
"UploadToWebHookHTTP"
|
"UploadToWebHookHTTP"
|
||||||
@@ -21293,7 +21446,13 @@
|
|||||||
"https://github.com/joeriben/ai4artsed_comfyui": [
|
"https://github.com/joeriben/ai4artsed_comfyui": [
|
||||||
[
|
[
|
||||||
"ai4artsed_ollama",
|
"ai4artsed_ollama",
|
||||||
"ai4artsed_openrouter"
|
"ai4artsed_ollama_imageanalysis",
|
||||||
|
"ai4artsed_openrouter",
|
||||||
|
"ai4artsed_openrouter_imageanalysis",
|
||||||
|
"ai4artsed_random_artform_generator",
|
||||||
|
"ai4artsed_random_instruction_generator",
|
||||||
|
"ai4artsed_random_language_selector",
|
||||||
|
"ai4artsed_text_remix"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "AI4ArtsEd Ollama Prompt Node"
|
"title_aux": "AI4ArtsEd Ollama Prompt Node"
|
||||||
@@ -23278,6 +23437,14 @@
|
|||||||
"title_aux": "comfyui_kj"
|
"title_aux": "comfyui_kj"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/linksluckytime/comfyui_snacknodes": [
|
||||||
|
[
|
||||||
|
"SnackImageScaler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui_snacknodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/linshier/comfyui-remote-tools": [
|
"https://github.com/linshier/comfyui-remote-tools": [
|
||||||
[
|
[
|
||||||
"LoadBase64(js)",
|
"LoadBase64(js)",
|
||||||
@@ -25196,6 +25363,7 @@
|
|||||||
"CanvasCreatorAdvanced",
|
"CanvasCreatorAdvanced",
|
||||||
"CanvasCreatorBasic",
|
"CanvasCreatorBasic",
|
||||||
"CanvasCreatorSimple",
|
"CanvasCreatorSimple",
|
||||||
|
"CheckpointLoaderSimpleMira",
|
||||||
"CreateMaskWithCanvas",
|
"CreateMaskWithCanvas",
|
||||||
"CreateNestedPNGMask",
|
"CreateNestedPNGMask",
|
||||||
"CreateSimpleMask",
|
"CreateSimpleMask",
|
||||||
@@ -25221,6 +25389,7 @@
|
|||||||
"ImageHUE",
|
"ImageHUE",
|
||||||
"ImageRGBChannel",
|
"ImageRGBChannel",
|
||||||
"ImageSaturation",
|
"ImageSaturation",
|
||||||
|
"ImageSaverMira",
|
||||||
"ImageSharpness",
|
"ImageSharpness",
|
||||||
"ImageToneCurve",
|
"ImageToneCurve",
|
||||||
"IntMultiplication",
|
"IntMultiplication",
|
||||||
@@ -25847,6 +26016,7 @@
|
|||||||
[
|
[
|
||||||
"Nilor Categorize String",
|
"Nilor Categorize String",
|
||||||
"Nilor Count Images In Directory",
|
"Nilor Count Images In Directory",
|
||||||
|
"Nilor Extract Filename from Path",
|
||||||
"Nilor Int To List Of Bools",
|
"Nilor Int To List Of Bools",
|
||||||
"Nilor Interpolated Float List",
|
"Nilor Interpolated Float List",
|
||||||
"Nilor Inverse Map Float List",
|
"Nilor Inverse Map Float List",
|
||||||
@@ -26010,6 +26180,7 @@
|
|||||||
"https://github.com/nofunstudio/Node_Fun_ComfyUI": [
|
"https://github.com/nofunstudio/Node_Fun_ComfyUI": [
|
||||||
[
|
[
|
||||||
"DynamicQueueCounter",
|
"DynamicQueueCounter",
|
||||||
|
"Fun KSampler",
|
||||||
"IframeView",
|
"IframeView",
|
||||||
"IndexedStringSelector",
|
"IndexedStringSelector",
|
||||||
"LayeredInfiniteZoom",
|
"LayeredInfiniteZoom",
|
||||||
@@ -26312,6 +26483,19 @@
|
|||||||
"title_aux": "ComfyUI-wanBlockswap"
|
"title_aux": "ComfyUI-wanBlockswap"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/oshtz/ComfyUI-oshtz-nodes": [
|
||||||
|
[
|
||||||
|
"EasyAspectRatioNode",
|
||||||
|
"LLMAIONode",
|
||||||
|
"LoRASwitcherNode",
|
||||||
|
"LoRASwitcherNode20",
|
||||||
|
"LoRASwitcherNode40",
|
||||||
|
"StringSplitterNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "oshtz Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/osi1880vr/prompt_quill_comfyui": [
|
"https://github.com/osi1880vr/prompt_quill_comfyui": [
|
||||||
[
|
[
|
||||||
"PromptQuillGenerate",
|
"PromptQuillGenerate",
|
||||||
@@ -26980,6 +27164,7 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/rainlizard/ComfyUI-Raffle": [
|
"https://github.com/rainlizard/ComfyUI-Raffle": [
|
||||||
[
|
[
|
||||||
|
"PreviewHistory",
|
||||||
"Raffle"
|
"Raffle"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -28373,7 +28558,6 @@
|
|||||||
"BizyAirSiliconCloudLLMAPI",
|
"BizyAirSiliconCloudLLMAPI",
|
||||||
"BizyAirSiliconCloudVLMAPI",
|
"BizyAirSiliconCloudVLMAPI",
|
||||||
"BizyAirTilePreprocessor",
|
"BizyAirTilePreprocessor",
|
||||||
"BizyAirToggleServerEndpoint",
|
|
||||||
"BizyAirUniFormer_SemSegPreprocessor",
|
"BizyAirUniFormer_SemSegPreprocessor",
|
||||||
"BizyAirZoe_DepthMapPreprocessor",
|
"BizyAirZoe_DepthMapPreprocessor",
|
||||||
"BizyAir_MinusZoneChatGLM3TextEncode",
|
"BizyAir_MinusZoneChatGLM3TextEncode",
|
||||||
@@ -30165,6 +30349,17 @@
|
|||||||
"title_aux": "comfyui-webcam-node"
|
"title_aux": "comfyui-webcam-node"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/uihp/ComfyUI-String-Chain": [
|
||||||
|
[
|
||||||
|
"String Chain",
|
||||||
|
"String Concat",
|
||||||
|
"String Toggle",
|
||||||
|
"String Toggle (Multiline)"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-String-Chain"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/umiyuki/comfyui-pad-to-eight": [
|
"https://github.com/umiyuki/comfyui-pad-to-eight": [
|
||||||
[
|
[
|
||||||
"Pad To Eight"
|
"Pad To Eight"
|
||||||
@@ -30736,7 +30931,8 @@
|
|||||||
"Text_Match",
|
"Text_Match",
|
||||||
"Whitening_Node",
|
"Whitening_Node",
|
||||||
"YOLOWorld_Match",
|
"YOLOWorld_Match",
|
||||||
"YOLO_Crop"
|
"YOLO_Crop",
|
||||||
|
"YOLO_Multi_Crop"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_KimNodes"
|
"title_aux": "ComfyUI_KimNodes"
|
||||||
@@ -31282,6 +31478,7 @@
|
|||||||
"ImageRotate",
|
"ImageRotate",
|
||||||
"ImageSelector",
|
"ImageSelector",
|
||||||
"ImageUpscaleTiled",
|
"ImageUpscaleTiled",
|
||||||
|
"LoadImagesFromFolder",
|
||||||
"MaskBatchComposite",
|
"MaskBatchComposite",
|
||||||
"MaskBatchCopy",
|
"MaskBatchCopy",
|
||||||
"MaskContourFillNode",
|
"MaskContourFillNode",
|
||||||
@@ -31295,7 +31492,8 @@
|
|||||||
"MaskTopNFilter",
|
"MaskTopNFilter",
|
||||||
"TextBeforeKeyword",
|
"TextBeforeKeyword",
|
||||||
"YC Extract Number",
|
"YC Extract Number",
|
||||||
"YC Text Index Switch"
|
"YC Text Index Switch",
|
||||||
|
"YC_Image_Save"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-YCNodes"
|
"title_aux": "ComfyUI-YCNodes"
|
||||||
@@ -31767,6 +31965,7 @@
|
|||||||
"https://github.com/yushan777/ComfyUI-Y7Nodes": [
|
"https://github.com/yushan777/ComfyUI-Y7Nodes": [
|
||||||
[
|
[
|
||||||
"Y7Nodes_CLIP_TokenCounter",
|
"Y7Nodes_CLIP_TokenCounter",
|
||||||
|
"Y7Nodes_CatchEditTextNodeDual",
|
||||||
"Y7Nodes_Grid2Batch",
|
"Y7Nodes_Grid2Batch",
|
||||||
"Y7Nodes_PromptEnhancerFlux",
|
"Y7Nodes_PromptEnhancerFlux",
|
||||||
"Y7Nodes_ShowAnything",
|
"Y7Nodes_ShowAnything",
|
||||||
|
|||||||
5638
github-stats.json
5638
github-stats.json
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,77 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"author": "hunzmusic",
|
||||||
|
"title": "Comfyui-CraftsMan3DWrapper [WIP]",
|
||||||
|
"reference": "https://github.com/hunzmusic/Comfyui-CraftsMan3DWrapper",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hunzmusic/Comfyui-CraftsMan3DWrapper"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A wrapper for CraftsMan\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jax-explorer",
|
||||||
|
"title": "ComfyUI-H-flow",
|
||||||
|
"reference": "https://github.com/jax-explorer/ComfyUI-H-flow",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/jax-explorer/ComfyUI-H-flow"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Wan2-1 Image To Video, LLM Task, Save Image, Save Video, Show Text, FluxPro Ultra, IdeogramV2 Turbo, Runway Image To Video, Kling Image To Video, Replace Text, Join Text, Test Image, Test Text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Slix-M-Lestragg",
|
||||||
|
"title": "comfyui-enhanced [WIP]",
|
||||||
|
"reference": "https://github.com/Slix-M-Lestragg/comfyui-enhanced",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Slix-M-Lestragg/comfyui-enhanced"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A collection of enhanced nodes for ComfyUI that provide powerful additional functionality to your workflows.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "tzsoulcap",
|
||||||
|
"title": "ComfyUI-SaveImg-W-MetaData",
|
||||||
|
"reference": "https://github.com/tzsoulcap/ComfyUI-SaveImg-W-MetaData",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/tzsoulcap/ComfyUI-SaveImg-W-MetaData"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: CAP Checkpoint Selector, CAP Save Image w/Metadata, CAP Load Image with Metadata, CAP Tag Image, CAP Sampler Selector, CAP Scheduler Selector, CAP Seed Generator, CAP String Literal, CAP Width/Height Literal, CAP Cfg Literal, CAP Int Literal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "hylarucoder",
|
||||||
|
"title": "comfyui-copilot",
|
||||||
|
"reference": "https://github.com/hylarucoder/comfyui-copilot",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hylarucoder/comfyui-copilot"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Eagle Image Node for PNGInfo, SDXL Resolution Presets (ws), SDXL Prompt Styler, SDXL Prompt Styler Advanced"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "SS-snap",
|
||||||
|
"title": "Comfyui_SSsnap_pose-Remapping",
|
||||||
|
"reference": "https://github.com/SS-snap/Comfyui_SSsnap_pose-Remapping",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/SS-snap/Comfyui_SSsnap_pose-Remapping"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: SSsnap Apply Pose Diff ✂️, SSsnap Pose Diff Calculator 🛠️"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "AlejandroTuzzi",
|
||||||
|
"title": "TUZZI-ByPass [WIP]",
|
||||||
|
"reference": "https://github.com/AlejandroTuzzi/TUZZI-ByPass",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/AlejandroTuzzi/TUZZI-ByPass"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom nodes for automated AI pipelines\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "oxysoft",
|
"author": "oxysoft",
|
||||||
"title": "Comfy-Compel",
|
"title": "Comfy-Compel",
|
||||||
@@ -873,7 +944,7 @@
|
|||||||
"https://github.com/grinlau18/ComfyUI_XISER_Nodes"
|
"https://github.com/grinlau18/ComfyUI_XISER_Nodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "A collection of custom nodes for ComfyUI\nNOTE: The files in the repo are not organized."
|
"description": "Custom nodes for customizing workflows\nNOTE: The files in the repo are not organized."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "LAOGOU-666",
|
"author": "LAOGOU-666",
|
||||||
@@ -1624,7 +1695,7 @@
|
|||||||
"https://github.com/zyd232/ComfyUI-zyd232-Nodes"
|
"https://github.com/zyd232/ComfyUI-zyd232-Nodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: Image Pixels Compare"
|
"description": "NODES: Image Pixels Compare, Save Preview Images"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "yanhuifair",
|
"author": "yanhuifair",
|
||||||
@@ -2563,16 +2634,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES:LETM Save Image, ETM Load Image From Local"
|
"description": "NODES:LETM Save Image, ETM Load Image From Local"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "oshtz",
|
|
||||||
"title": "ComfyUI-oshtz-nodes [WIP]",
|
|
||||||
"reference": "https://github.com/oshtz/ComfyUI-oshtz-nodes",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/oshtz/ComfyUI-oshtz-nodes"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "Custom nodes for ComfyUI created for some of my workflows.\nLLM All-in-One Node, String Splitter Node, LoRA Switcher Node, Image Overlay Node\nNOTE: The files in the repo are not organized."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "m-ai-studio",
|
"author": "m-ai-studio",
|
||||||
"title": "mai-prompt-progress",
|
"title": "mai-prompt-progress",
|
||||||
@@ -2854,16 +2915,6 @@
|
|||||||
"install_type": "copy",
|
"install_type": "copy",
|
||||||
"description": "This platform extension provides ZhipuAI nodes, enabling you to configure a workflow for online video generation."
|
"description": "This platform extension provides ZhipuAI nodes, enabling you to configure a workflow for online video generation."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "HavocsCall",
|
|
||||||
"title": "comfyui_HavocsCall_Custom_Nodes",
|
|
||||||
"reference": "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES:Prompt Combiner, Sampler Config, Text Box, Int to Float, Clip Switch, Conditioning Switch, Image Switch, Latent Switch, Model Switch, String Switch, VAE Switch"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "mfg637",
|
"author": "mfg637",
|
||||||
"title": "ComfyUI-ScheduledGuider-Ext",
|
"title": "ComfyUI-ScheduledGuider-Ext",
|
||||||
|
|||||||
@@ -146,6 +146,59 @@
|
|||||||
"title_aux": "ComfyUI_Fooocus"
|
"title_aux": "ComfyUI_Fooocus"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/438443467/ComfyUI-SanMian-Nodes": [
|
||||||
|
[
|
||||||
|
"SANMIN Adapt Coordinates",
|
||||||
|
"sanmi AddTextToImage",
|
||||||
|
"sanmi Adjust Transparency By Mask",
|
||||||
|
"sanmi AdjustHexBrightness",
|
||||||
|
"sanmi Align Images with Mask",
|
||||||
|
"sanmi BinarizeMask",
|
||||||
|
"sanmi BlendICLight",
|
||||||
|
"sanmi Chinese To Character",
|
||||||
|
"sanmi Compare",
|
||||||
|
"sanmi CompareV2",
|
||||||
|
"sanmi Counter",
|
||||||
|
"sanmi CreateTxtForImages",
|
||||||
|
"sanmi Float",
|
||||||
|
"sanmi Florence2toCoordinates",
|
||||||
|
"sanmi Get Content From Excel",
|
||||||
|
"sanmi Get LastPathComponent",
|
||||||
|
"sanmi Get Mask White Region Size",
|
||||||
|
"sanmi GetFilePath",
|
||||||
|
"sanmi GetMostCommonColor",
|
||||||
|
"sanmi ImageBatchSplitter",
|
||||||
|
"sanmi Image_Rotate",
|
||||||
|
"sanmi Int90",
|
||||||
|
"sanmi IntToBOOLEAN",
|
||||||
|
"sanmi Load Image Batch",
|
||||||
|
"sanmi LoadImageFromPath",
|
||||||
|
"sanmi LoadImagesanmi",
|
||||||
|
"sanmi Mask To Box",
|
||||||
|
"sanmi MaskToBboxes",
|
||||||
|
"sanmi MaskWhiteRatioAnalyzer",
|
||||||
|
"sanmi Path Captioner",
|
||||||
|
"sanmi Path Change",
|
||||||
|
"sanmi Read Image Prompt",
|
||||||
|
"sanmi Reduce Mask",
|
||||||
|
"sanmi RestoreJson",
|
||||||
|
"sanmi Sanmi_Text_Concatenate",
|
||||||
|
"sanmi Save Image To Local",
|
||||||
|
"sanmi SimpleWildcards",
|
||||||
|
"sanmi SortTheMasksLeftRight",
|
||||||
|
"sanmi SortTheMasksSize",
|
||||||
|
"sanmi Special Counter",
|
||||||
|
"sanmi StrToPinYin",
|
||||||
|
"sanmi String Counter",
|
||||||
|
"sanmi String Counter V2",
|
||||||
|
"sanmi StringToBox",
|
||||||
|
"sanmi Time",
|
||||||
|
"sanmi Upscale And Keep Original Size"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-SanMian-Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/5x00/ComfyUI-Prompt-Plus": [
|
"https://github.com/5x00/ComfyUI-Prompt-Plus": [
|
||||||
[
|
[
|
||||||
"LoadAPI",
|
"LoadAPI",
|
||||||
@@ -164,13 +217,17 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/7BEII/Comfyui_PDuse": [
|
"https://github.com/7BEII/Comfyui_PDuse": [
|
||||||
[
|
[
|
||||||
|
"BatchChangeNodeColor",
|
||||||
"BatchJsonIncremental",
|
"BatchJsonIncremental",
|
||||||
"FileName_refixer",
|
"FileName_refixer",
|
||||||
"PD_ImageConcanate",
|
"LoRALoader_path",
|
||||||
|
"PD_GetImageSize",
|
||||||
"PD_Image_Crop_Location",
|
"PD_Image_Crop_Location",
|
||||||
|
"PD_Image_centerCrop",
|
||||||
|
"PD_MASK_SELECTION",
|
||||||
"PD_RemoveColorWords",
|
"PD_RemoveColorWords",
|
||||||
"ReadTxtFiles",
|
"PD_node",
|
||||||
"json_group_fontsize"
|
"ReadTxtFiles"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "comfyui-promptbymood [WIP]"
|
"title_aux": "comfyui-promptbymood [WIP]"
|
||||||
@@ -452,6 +509,24 @@
|
|||||||
"title_aux": "ComfyUI-Tools"
|
"title_aux": "ComfyUI-Tools"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/AlejandroTuzzi/TUZZI-ByPass": [
|
||||||
|
[
|
||||||
|
"TUZZI-Bypasser",
|
||||||
|
"TUZZI-ImageAudioToVideo",
|
||||||
|
"TUZZI-LineCounter",
|
||||||
|
"TUZZI-NumberLines",
|
||||||
|
"TUZZI-RedditPostExtractor",
|
||||||
|
"TUZZI-SaveVideo",
|
||||||
|
"TUZZI-SequentialTextReader",
|
||||||
|
"TUZZI-TextFormatter",
|
||||||
|
"TUZZI-TextFormatterPlus",
|
||||||
|
"TUZZI-YouTubeCommentExtractor",
|
||||||
|
"TUZZI-YouTubeSubtitleExtractor"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "TUZZI-ByPass [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/AlexXi19/ComfyUI-OpenAINode": [
|
"https://github.com/AlexXi19/ComfyUI-OpenAINode": [
|
||||||
[
|
[
|
||||||
"ImageWithPrompt",
|
"ImageWithPrompt",
|
||||||
@@ -678,7 +753,10 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/Burgstall-labs/ComfyUI-BS_FalAi-API-Video": [
|
"https://github.com/Burgstall-labs/ComfyUI-BS_FalAi-API-Video": [
|
||||||
[
|
[
|
||||||
"FalAPIVideoGenerator"
|
"FalAILipSyncNode",
|
||||||
|
"FalAPIOmniProNode",
|
||||||
|
"FalAPIVideoGeneratorI2V",
|
||||||
|
"FalAPIVideoGeneratorT2V"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-BS_FalAi-API-Video [WIP]"
|
"title_aux": "ComfyUI-BS_FalAi-API-Video [WIP]"
|
||||||
@@ -695,6 +773,7 @@
|
|||||||
"https://github.com/Chargeuk/ComfyUI-vts-nodes": [
|
"https://github.com/Chargeuk/ComfyUI-vts-nodes": [
|
||||||
[
|
[
|
||||||
"VTS Clean Text",
|
"VTS Clean Text",
|
||||||
|
"VTS Clear Ram",
|
||||||
"VTS Clip Text Encode",
|
"VTS Clip Text Encode",
|
||||||
"VTS Color Mask To Mask",
|
"VTS Color Mask To Mask",
|
||||||
"VTS Conditioning Set Batch Mask",
|
"VTS Conditioning Set Batch Mask",
|
||||||
@@ -753,6 +832,7 @@
|
|||||||
"DevToolsLongComboDropdown",
|
"DevToolsLongComboDropdown",
|
||||||
"DevToolsMultiSelectNode",
|
"DevToolsMultiSelectNode",
|
||||||
"DevToolsNodeWithBooleanInput",
|
"DevToolsNodeWithBooleanInput",
|
||||||
|
"DevToolsNodeWithDefaultInput",
|
||||||
"DevToolsNodeWithForceInput",
|
"DevToolsNodeWithForceInput",
|
||||||
"DevToolsNodeWithOnlyOptionalInput",
|
"DevToolsNodeWithOnlyOptionalInput",
|
||||||
"DevToolsNodeWithOptionalComboInput",
|
"DevToolsNodeWithOptionalComboInput",
|
||||||
@@ -858,7 +938,8 @@
|
|||||||
[
|
[
|
||||||
"Donut Detailer",
|
"Donut Detailer",
|
||||||
"Donut Detailer 2",
|
"Donut Detailer 2",
|
||||||
"Donut Detailer 4"
|
"Donut Detailer 4",
|
||||||
|
"Donut Detailer LoRA 6"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-DonutDetailer"
|
"title_aux": "ComfyUI-DonutDetailer"
|
||||||
@@ -1077,30 +1158,6 @@
|
|||||||
"title_aux": "GH Tools for ComfyUI"
|
"title_aux": "GH Tools for ComfyUI"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": [
|
|
||||||
[
|
|
||||||
"Clip Switch",
|
|
||||||
"Conditioning Switch",
|
|
||||||
"Float Selector",
|
|
||||||
"Float to Int",
|
|
||||||
"Float to String",
|
|
||||||
"Image Switch",
|
|
||||||
"Int Selector",
|
|
||||||
"Int to Float",
|
|
||||||
"Int to String",
|
|
||||||
"Latent Switch",
|
|
||||||
"Model Switch",
|
|
||||||
"Prompt Combiner",
|
|
||||||
"Sampler Config",
|
|
||||||
"String Switch",
|
|
||||||
"Text Box",
|
|
||||||
"VAE Switch",
|
|
||||||
"menus"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "comfyui_HavocsCall_Custom_Nodes"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit": [
|
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit": [
|
||||||
[
|
[
|
||||||
"DeepSeekImageAnalyst",
|
"DeepSeekImageAnalyst",
|
||||||
@@ -1203,9 +1260,7 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/KERRY-YUAN/ComfyUI_Python_Executor": [
|
"https://github.com/KERRY-YUAN/ComfyUI_Python_Executor": [
|
||||||
[
|
[
|
||||||
"NodeAutoSampler",
|
"NodePython"
|
||||||
"NodePython",
|
|
||||||
"NodeResizeImage"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "Python_Executor [UNSAFE]"
|
"title_aux": "Python_Executor [UNSAFE]"
|
||||||
@@ -1276,6 +1331,17 @@
|
|||||||
"title_aux": "RK_Comfyui"
|
"title_aux": "RK_Comfyui"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/Kur0butiMegane/Comfyui-StringUtils": [
|
||||||
|
[
|
||||||
|
"ExtractMarkupValue",
|
||||||
|
"PromptNormalizer",
|
||||||
|
"StringSelector",
|
||||||
|
"StringSplitter"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "Comfyui-StringUtils"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/KurtHokke/ComfyUI_KurtHokke_Nodes": [
|
"https://github.com/KurtHokke/ComfyUI_KurtHokke_Nodes": [
|
||||||
[
|
[
|
||||||
"AIO_Tuner_Pipe",
|
"AIO_Tuner_Pipe",
|
||||||
@@ -1390,14 +1456,20 @@
|
|||||||
"AnimalPosePreprocessor",
|
"AnimalPosePreprocessor",
|
||||||
"AnimeFace_SemSegPreprocessor",
|
"AnimeFace_SemSegPreprocessor",
|
||||||
"AnimeLineArtPreprocessor",
|
"AnimeLineArtPreprocessor",
|
||||||
|
"AnyLineArtPreprocessor_aux",
|
||||||
"BAE-NormalMapPreprocessor",
|
"BAE-NormalMapPreprocessor",
|
||||||
"BinaryPreprocessor",
|
"BinaryPreprocessor",
|
||||||
"CannyEdgePreprocessor",
|
"CannyEdgePreprocessor",
|
||||||
"ColorPreprocessor",
|
"ColorPreprocessor",
|
||||||
|
"ControlNetAuxSimpleAddText",
|
||||||
|
"ControlNetPreprocessorSelector",
|
||||||
|
"DSINE-NormalMapPreprocessor",
|
||||||
"DWPreprocessor",
|
"DWPreprocessor",
|
||||||
"DensePosePreprocessor",
|
"DensePosePreprocessor",
|
||||||
"DepthAnythingPreprocessor",
|
"DepthAnythingPreprocessor",
|
||||||
|
"DepthAnythingV2Preprocessor",
|
||||||
"DiffusionEdge_Preprocessor",
|
"DiffusionEdge_Preprocessor",
|
||||||
|
"ExecuteAllControlNetPreprocessors",
|
||||||
"FacialPartColoringFromPoseKps",
|
"FacialPartColoringFromPoseKps",
|
||||||
"FakeScribblePreprocessor",
|
"FakeScribblePreprocessor",
|
||||||
"HEDPreprocessor",
|
"HEDPreprocessor",
|
||||||
@@ -1422,7 +1494,11 @@
|
|||||||
"Manga2Anime_LineArt_Preprocessor",
|
"Manga2Anime_LineArt_Preprocessor",
|
||||||
"MaskOptFlow",
|
"MaskOptFlow",
|
||||||
"MediaPipe-FaceMeshPreprocessor",
|
"MediaPipe-FaceMeshPreprocessor",
|
||||||
|
"MeshGraphormer+ImpactDetector-DepthMapPreprocessor",
|
||||||
"MeshGraphormer-DepthMapPreprocessor",
|
"MeshGraphormer-DepthMapPreprocessor",
|
||||||
|
"Metric3D-DepthMapPreprocessor",
|
||||||
|
"Metric3D-NormalMapPreprocessor",
|
||||||
|
"Metric_DepthAnythingV2Preprocessor",
|
||||||
"MiDaS-DepthMapPreprocessor",
|
"MiDaS-DepthMapPreprocessor",
|
||||||
"MiDaS-NormalMapPreprocessor",
|
"MiDaS-NormalMapPreprocessor",
|
||||||
"ModelMergeBlockNumber",
|
"ModelMergeBlockNumber",
|
||||||
@@ -1436,19 +1512,26 @@
|
|||||||
"PiDiNetPreprocessor",
|
"PiDiNetPreprocessor",
|
||||||
"PixelPerfectResolution",
|
"PixelPerfectResolution",
|
||||||
"PromptExpansion",
|
"PromptExpansion",
|
||||||
|
"PyraCannyPreprocessor",
|
||||||
"ReferenceOnlySimple",
|
"ReferenceOnlySimple",
|
||||||
|
"RenderAnimalKps",
|
||||||
|
"RenderPeopleKps",
|
||||||
"RescaleClassifierFreeGuidanceTest",
|
"RescaleClassifierFreeGuidanceTest",
|
||||||
"SAMPreprocessor",
|
"SAMPreprocessor",
|
||||||
"SavePoseKpsAsJsonFile",
|
"SavePoseKpsAsJsonFile",
|
||||||
"ScribblePreprocessor",
|
"ScribblePreprocessor",
|
||||||
|
"Scribble_PiDiNet_Preprocessor",
|
||||||
"Scribble_XDoG_Preprocessor",
|
"Scribble_XDoG_Preprocessor",
|
||||||
"SemSegPreprocessor",
|
"SemSegPreprocessor",
|
||||||
"ShufflePreprocessor",
|
"ShufflePreprocessor",
|
||||||
"TEEDPreprocessor",
|
"TEEDPreprocessor",
|
||||||
|
"TTPlanet_TileGF_Preprocessor",
|
||||||
|
"TTPlanet_TileSimple_Preprocessor",
|
||||||
"TilePreprocessor",
|
"TilePreprocessor",
|
||||||
"TonemapNoiseWithRescaleCFG",
|
"TonemapNoiseWithRescaleCFG",
|
||||||
"UniFormer-SemSegPreprocessor",
|
"UniFormer-SemSegPreprocessor",
|
||||||
"Unimatch_OptFlowPreprocessor",
|
"Unimatch_OptFlowPreprocessor",
|
||||||
|
"UpperBodyTrackingFromPoseKps",
|
||||||
"Zoe-DepthMapPreprocessor",
|
"Zoe-DepthMapPreprocessor",
|
||||||
"Zoe_DepthAnythingPreprocessor"
|
"Zoe_DepthAnythingPreprocessor"
|
||||||
],
|
],
|
||||||
@@ -1695,6 +1778,16 @@
|
|||||||
"title_aux": "ComfyUI-FRED-Nodes [WIP]"
|
"title_aux": "ComfyUI-FRED-Nodes [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/QingLuanWithoutHeart/comfyui-file-image-utils": [
|
||||||
|
[
|
||||||
|
"FileManagerV2",
|
||||||
|
"IfTextEquals",
|
||||||
|
"LoadImageFromPath"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI File/Image Utils Nodes [UNSAFE]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": [
|
"https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": [
|
||||||
[
|
[
|
||||||
"CPPN Generator",
|
"CPPN Generator",
|
||||||
@@ -1783,6 +1876,15 @@
|
|||||||
"title_aux": "Snap Processing for Comfyui"
|
"title_aux": "Snap Processing for Comfyui"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/SS-snap/Comfyui_SSsnap_pose-Remapping": [
|
||||||
|
[
|
||||||
|
"ApplyPoseDiff",
|
||||||
|
"PoseDiffCalculator"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "Comfyui_SSsnap_pose-Remapping"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": [
|
"https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": [
|
||||||
[
|
[
|
||||||
"CLIPTextEncodePromptToPrompt",
|
"CLIPTextEncodePromptToPrompt",
|
||||||
@@ -1903,6 +2005,14 @@
|
|||||||
"title_aux": "ComfyUI-FreeMemory"
|
"title_aux": "ComfyUI-FreeMemory"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/Slix-M-Lestragg/comfyui-enhanced": [
|
||||||
|
[
|
||||||
|
"Range Iterator"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-enhanced [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/SoftMeng/ComfyUI-PIL": [
|
"https://github.com/SoftMeng/ComfyUI-PIL": [
|
||||||
[
|
[
|
||||||
"PIL Effects (Mexx)",
|
"PIL Effects (Mexx)",
|
||||||
@@ -2030,6 +2140,14 @@
|
|||||||
"title_aux": "ComfyUI-TSFNodes"
|
"title_aux": "ComfyUI-TSFNodes"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/Temult/TWanSigmaSampler": [
|
||||||
|
[
|
||||||
|
"TWanVideoSigmaSampler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "TWanVideoSigmaSampler: EXPERIMENTAL [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ThisModernDay/ComfyUI-InstructorOllama": [
|
"https://github.com/ThisModernDay/ComfyUI-InstructorOllama": [
|
||||||
[
|
[
|
||||||
"OllamaInstructorNode"
|
"OllamaInstructorNode"
|
||||||
@@ -2255,6 +2373,18 @@
|
|||||||
"title_aux": "ComfyUI-Diffusion-4k [WIP]"
|
"title_aux": "ComfyUI-Diffusion-4k [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/alexgenovese/ComfyUI-Reica": [
|
||||||
|
[
|
||||||
|
"ReicaGCPReadImageNode",
|
||||||
|
"ReicaGCPWriteImageNode",
|
||||||
|
"ReicaHTTPNotification",
|
||||||
|
"ReicaReadImageUrl",
|
||||||
|
"ReicaTextImageDisplay"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Reica"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/alexisrolland/ComfyUI-AuraSR": [
|
"https://github.com/alexisrolland/ComfyUI-AuraSR": [
|
||||||
[
|
[
|
||||||
"LoadAuraSR",
|
"LoadAuraSR",
|
||||||
@@ -2779,7 +2909,7 @@
|
|||||||
"https://github.com/chetusangolgi/Comfyui-supabase": [
|
"https://github.com/chetusangolgi/Comfyui-supabase": [
|
||||||
[
|
[
|
||||||
"SupabaseImageUploader",
|
"SupabaseImageUploader",
|
||||||
"SupabaseWatcherNode"
|
"SupabaseTableWatcherNode"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "Comfyui-supabase"
|
"title_aux": "Comfyui-supabase"
|
||||||
@@ -3128,6 +3258,7 @@
|
|||||||
"VPScheduler",
|
"VPScheduler",
|
||||||
"VideoLinearCFGGuidance",
|
"VideoLinearCFGGuidance",
|
||||||
"VideoTriangleCFGGuidance",
|
"VideoTriangleCFGGuidance",
|
||||||
|
"VoxelToMesh",
|
||||||
"VoxelToMeshBasic",
|
"VoxelToMeshBasic",
|
||||||
"WanFunControlToVideo",
|
"WanFunControlToVideo",
|
||||||
"WanFunInpaintToVideo",
|
"WanFunInpaintToVideo",
|
||||||
@@ -3561,7 +3692,8 @@
|
|||||||
"https://github.com/gondar-software/comfyui-custom-padding": [
|
"https://github.com/gondar-software/comfyui-custom-padding": [
|
||||||
[
|
[
|
||||||
"AdaptiveImagePadding",
|
"AdaptiveImagePadding",
|
||||||
"AdaptiveImageUnpadding"
|
"AdaptiveImageUnpadding",
|
||||||
|
"WatermarkBlend"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "comfyui-custom-padding"
|
"title_aux": "comfyui-custom-padding"
|
||||||
@@ -3885,6 +4017,17 @@
|
|||||||
"title_aux": "comfyui-hydit"
|
"title_aux": "comfyui-hydit"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/hylarucoder/comfyui-copilot": [
|
||||||
|
[
|
||||||
|
"EagleImageNode",
|
||||||
|
"SDXLPromptStyler",
|
||||||
|
"SDXLPromptStylerAdvanced",
|
||||||
|
"SDXLResolutionPresets"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-copilot"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/if-ai/ComfyUI-IF_Zonos": [
|
"https://github.com/if-ai/ComfyUI-IF_Zonos": [
|
||||||
[
|
[
|
||||||
"IF_ZonosTTS"
|
"IF_ZonosTTS"
|
||||||
@@ -3962,6 +4105,21 @@
|
|||||||
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
|
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/jax-explorer/ComfyUI-H-flow": [
|
||||||
|
[
|
||||||
|
"FluxProUltra",
|
||||||
|
"IdeogramV2Turbo",
|
||||||
|
"KlingImageToVideo",
|
||||||
|
"LLMTask",
|
||||||
|
"RunwayImageToVideo",
|
||||||
|
"SaveImage",
|
||||||
|
"SaveVideo",
|
||||||
|
"Wan2ImageToVideo"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-H-flow"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/jcomeme/ComfyUI-AsunaroTools": [
|
"https://github.com/jcomeme/ComfyUI-AsunaroTools": [
|
||||||
[
|
[
|
||||||
"AsunaroAnd",
|
"AsunaroAnd",
|
||||||
@@ -4108,6 +4266,7 @@
|
|||||||
"https://github.com/jonnydolake/ComfyUI-AIR-Nodes": [
|
"https://github.com/jonnydolake/ComfyUI-AIR-Nodes": [
|
||||||
[
|
[
|
||||||
"BrightnessContrastSaturation",
|
"BrightnessContrastSaturation",
|
||||||
|
"CreateFilenameList",
|
||||||
"DisplaceImageCPU",
|
"DisplaceImageCPU",
|
||||||
"DisplaceImageGPU",
|
"DisplaceImageGPU",
|
||||||
"ExtractBlackLines",
|
"ExtractBlackLines",
|
||||||
@@ -4115,6 +4274,7 @@
|
|||||||
"GPUTargetLocationCrop",
|
"GPUTargetLocationCrop",
|
||||||
"GPUTargetLocationPaste",
|
"GPUTargetLocationPaste",
|
||||||
"ImageCompositeChained",
|
"ImageCompositeChained",
|
||||||
|
"JoinStringLists",
|
||||||
"LTXVAddGuideAIR",
|
"LTXVAddGuideAIR",
|
||||||
"LineDetection",
|
"LineDetection",
|
||||||
"MangaPanelSegmentationNode",
|
"MangaPanelSegmentationNode",
|
||||||
@@ -4181,12 +4341,9 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/kandy/ComfyUI-KAndy": [
|
"https://github.com/kandy/ComfyUI-KAndy": [
|
||||||
[
|
[
|
||||||
"KAndyCivitImagesAPI",
|
|
||||||
"KAndyCivitPromptAPI",
|
|
||||||
"KAndyImagesByCss",
|
|
||||||
"KAndyLoadImageFromUrl",
|
"KAndyLoadImageFromUrl",
|
||||||
"KAndyNoiseCondition",
|
"KAndyTaggerModelLoader",
|
||||||
"KPornImageAPI",
|
"KAndyWD14Tagger",
|
||||||
"KPromtGen",
|
"KPromtGen",
|
||||||
"KandySimplePrompt"
|
"KandySimplePrompt"
|
||||||
],
|
],
|
||||||
@@ -4410,6 +4567,7 @@
|
|||||||
[
|
[
|
||||||
"LoadWanVideoClipTextEncoder",
|
"LoadWanVideoClipTextEncoder",
|
||||||
"LoadWanVideoT5TextEncoder",
|
"LoadWanVideoT5TextEncoder",
|
||||||
|
"ReCamMasterPoseVisualizer",
|
||||||
"WanVideoBlockSwap",
|
"WanVideoBlockSwap",
|
||||||
"WanVideoClipVisionEncode",
|
"WanVideoClipVisionEncode",
|
||||||
"WanVideoContextOptions",
|
"WanVideoContextOptions",
|
||||||
@@ -4427,6 +4585,7 @@
|
|||||||
"WanVideoLoraBlockEdit",
|
"WanVideoLoraBlockEdit",
|
||||||
"WanVideoLoraSelect",
|
"WanVideoLoraSelect",
|
||||||
"WanVideoModelLoader",
|
"WanVideoModelLoader",
|
||||||
|
"WanVideoReCamMasterCameraEmbed",
|
||||||
"WanVideoSLG",
|
"WanVideoSLG",
|
||||||
"WanVideoSampler",
|
"WanVideoSampler",
|
||||||
"WanVideoSetBlockSwap",
|
"WanVideoSetBlockSwap",
|
||||||
@@ -5267,20 +5426,6 @@
|
|||||||
"title_aux": "ComfyUI_Cluster [WIP]"
|
"title_aux": "ComfyUI_Cluster [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/oshtz/ComfyUI-oshtz-nodes": [
|
|
||||||
[
|
|
||||||
"EasyAspectRatioNode",
|
|
||||||
"ImageOverlayNode",
|
|
||||||
"LLMAIONode",
|
|
||||||
"LoRASwitcherNode",
|
|
||||||
"LoRASwitcherNode20",
|
|
||||||
"LoRASwitcherNode40",
|
|
||||||
"StringSplitterNode"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "ComfyUI-oshtz-nodes [WIP]"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/osuiso-depot/comfyui-keshigom_custom": [
|
"https://github.com/osuiso-depot/comfyui-keshigom_custom": [
|
||||||
[
|
[
|
||||||
"KANI_Checkpoint_Loader_From_String",
|
"KANI_Checkpoint_Loader_From_String",
|
||||||
@@ -5306,6 +5451,14 @@
|
|||||||
"title_aux": "ComfyUI-tilefusion"
|
"title_aux": "ComfyUI-tilefusion"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/oxysoft/Comfy-Compel": [
|
||||||
|
[
|
||||||
|
"CLIPEmbedCompel"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "Comfy-Compel"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/oyvindg/ComfyUI-TrollSuite": [
|
"https://github.com/oyvindg/ComfyUI-TrollSuite": [
|
||||||
[
|
[
|
||||||
"BinaryImageMask",
|
"BinaryImageMask",
|
||||||
@@ -5413,6 +5566,14 @@
|
|||||||
"title_aux": "ComfyUI-PixuAI"
|
"title_aux": "ComfyUI-PixuAI"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/pmarmotte2/Comfyui-VibeVoiceSelector": [
|
||||||
|
[
|
||||||
|
"VibeVoiceSelector"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "VibeVoiceSelector [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/poisenbery/NudeNet-Detector-Provider": [
|
"https://github.com/poisenbery/NudeNet-Detector-Provider": [
|
||||||
[
|
[
|
||||||
"NudeNetDetectorProvider"
|
"NudeNetDetectorProvider"
|
||||||
@@ -5773,7 +5934,8 @@
|
|||||||
"https://github.com/smthemex/ComfyUI_MangaNinjia": [
|
"https://github.com/smthemex/ComfyUI_MangaNinjia": [
|
||||||
[
|
[
|
||||||
"MangaNinjiaLoader",
|
"MangaNinjiaLoader",
|
||||||
"MangaNinjiaSampler"
|
"MangaNinjiaSampler",
|
||||||
|
"MarkImageNode"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_MangaNinjia [WIP]"
|
"title_aux": "ComfyUI_MangaNinjia [WIP]"
|
||||||
@@ -5955,6 +6117,14 @@
|
|||||||
"title_aux": "comfyui_molook_nodes [WIP]"
|
"title_aux": "comfyui_molook_nodes [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/techtruth/ComfyUI-Dreambooth": [
|
||||||
|
[
|
||||||
|
"DreamboothNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Dreambooth"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/techzuhaib/ComfyUI-CacheImageNode": [
|
"https://github.com/techzuhaib/ComfyUI-CacheImageNode": [
|
||||||
[
|
[
|
||||||
"CacheImageNode"
|
"CacheImageNode"
|
||||||
@@ -5976,9 +6146,9 @@
|
|||||||
[
|
[
|
||||||
"CLIPTokenCounter",
|
"CLIPTokenCounter",
|
||||||
"GeminiNode",
|
"GeminiNode",
|
||||||
"Gemma3VisionNode",
|
|
||||||
"KoboldCppApiNode",
|
"KoboldCppApiNode",
|
||||||
"KoboldCppLauncherNode"
|
"KoboldCppLauncherNode",
|
||||||
|
"LoraStrengthXYPlot"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "Divergent Nodes [WIP]"
|
"title_aux": "Divergent Nodes [WIP]"
|
||||||
@@ -5986,12 +6156,26 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/thisiseddy-ab/ComfyUI-Edins-Ultimate-Pack": [
|
"https://github.com/thisiseddy-ab/ComfyUI-Edins-Ultimate-Pack": [
|
||||||
[
|
[
|
||||||
|
"EUP - Adaptive Tiling Strategy Parameters",
|
||||||
|
"EUP - Adjacency Padded Tiling Strategy Parameters",
|
||||||
|
"EUP - Advanced Pixel TiledKSample Upscaler Provider",
|
||||||
|
"EUP - Advanced Pixel TiledKSample Upscaler Provider Pipe",
|
||||||
|
"EUP - Aspect Adaption Denoising Strategy Parameters",
|
||||||
|
"EUP - Context Padded Tiling Strategy Parameters",
|
||||||
"EUP - Custom Aspect Ratio",
|
"EUP - Custom Aspect Ratio",
|
||||||
|
"EUP - Hierarchical Tiling Strategy Parameters",
|
||||||
"EUP - Iterative Latent Upscaler",
|
"EUP - Iterative Latent Upscaler",
|
||||||
"EUP - Latent Merger",
|
"EUP - Latent Merger",
|
||||||
"EUP - Latent Tiler",
|
"EUP - Non-Uniform Tiling Strategy Parameters",
|
||||||
|
"EUP - Overlaping Tiling Strategy Parameters",
|
||||||
|
"EUP - Padded Tiling Strategy Parameters",
|
||||||
"EUP - Pixel TiledKSample Upscaler Provider",
|
"EUP - Pixel TiledKSample Upscaler Provider",
|
||||||
"EUP - Pixel TiledKSample Upscaler Provider Pipe",
|
"EUP - Pixel TiledKSample Upscaler Provider Pipe",
|
||||||
|
"EUP - Random Tiling Strategy Parameters",
|
||||||
|
"EUP - Random-Hierarchical Tiling Strategy Parameters",
|
||||||
|
"EUP - Sampler's Advanced Parameters",
|
||||||
|
"EUP - Simple Tiling Strategy Parameters",
|
||||||
|
"EUP - Smmooth Denoising Strategy Parameters",
|
||||||
"EUP - Tiled KSampler",
|
"EUP - Tiled KSampler",
|
||||||
"EUP - Tiled KSampler Advanced"
|
"EUP - Tiled KSampler Advanced"
|
||||||
],
|
],
|
||||||
@@ -6076,6 +6260,24 @@
|
|||||||
"title_aux": "ComfyUI-TDNodes [WIP]"
|
"title_aux": "ComfyUI-TDNodes [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/tzsoulcap/ComfyUI-SaveImg-W-MetaData": [
|
||||||
|
[
|
||||||
|
"CAP Cfg Literal",
|
||||||
|
"CAP Checkpoint Selector",
|
||||||
|
"CAP Int Literal",
|
||||||
|
"CAP Load Image with Metadata",
|
||||||
|
"CAP Sampler Selector",
|
||||||
|
"CAP Save Image w/Metadata",
|
||||||
|
"CAP Scheduler Selector",
|
||||||
|
"CAP Seed Generator",
|
||||||
|
"CAP String Literal",
|
||||||
|
"CAP Tag Image",
|
||||||
|
"CAP Width/Height Literal"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-SaveImg-W-MetaData"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/umisetokikaze/comfyui_mergekit": [
|
"https://github.com/umisetokikaze/comfyui_mergekit": [
|
||||||
[
|
[
|
||||||
"DefineSaveName",
|
"DefineSaveName",
|
||||||
@@ -6154,6 +6356,7 @@
|
|||||||
"https://github.com/watarika/ComfyUI-Text-Utility": [
|
"https://github.com/watarika/ComfyUI-Text-Utility": [
|
||||||
[
|
[
|
||||||
"LoadTextFile",
|
"LoadTextFile",
|
||||||
|
"PromptsFromTextbox",
|
||||||
"RemoveComments",
|
"RemoveComments",
|
||||||
"SaveTextFile",
|
"SaveTextFile",
|
||||||
"StringsFromTextbox"
|
"StringsFromTextbox"
|
||||||
@@ -6206,6 +6409,14 @@
|
|||||||
"title_aux": "Comfyui-zZzZz [UNSAFE]"
|
"title_aux": "Comfyui-zZzZz [UNSAFE]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/wordbrew/comfyui-wan-control-nodes": [
|
||||||
|
[
|
||||||
|
"WanWeightedControlToVideo"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "WAN Control Nodes for ComfyUI [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/wormley/comfyui-wormley-nodes": [
|
"https://github.com/wormley/comfyui-wormley-nodes": [
|
||||||
[
|
[
|
||||||
"CheckpointVAELoaderSimpleText",
|
"CheckpointVAELoaderSimpleText",
|
||||||
@@ -6307,6 +6518,77 @@
|
|||||||
"title_aux": "comfyui-deepseek [WIP]"
|
"title_aux": "comfyui-deepseek [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/yanlang0123/ComfyUI_Lam": [
|
||||||
|
[
|
||||||
|
"AppParams",
|
||||||
|
"AspectRatio",
|
||||||
|
"AutioPath",
|
||||||
|
"DoWhileEnd",
|
||||||
|
"DoWhileStart",
|
||||||
|
"EasyPromptSelecto",
|
||||||
|
"FaceFusion",
|
||||||
|
"ForEnd",
|
||||||
|
"ForInnerEnd",
|
||||||
|
"ForInnerStart",
|
||||||
|
"ForStart",
|
||||||
|
"GLM3Prompt",
|
||||||
|
"IdentifyingQR",
|
||||||
|
"IfInnerExecute",
|
||||||
|
"Image2Video",
|
||||||
|
"ImageAddMask",
|
||||||
|
"ImageBlank",
|
||||||
|
"ImageClone",
|
||||||
|
"ImageCropFaces",
|
||||||
|
"ImageLama",
|
||||||
|
"ImageToMasks",
|
||||||
|
"LAM.OpenPoseEditorPlus",
|
||||||
|
"LamCommonNames",
|
||||||
|
"LamCommonPrint",
|
||||||
|
"LamCommonPrintNoOutput",
|
||||||
|
"LamFaceAnalysisModels",
|
||||||
|
"LamGetPngInfo",
|
||||||
|
"LamLoadImageBase64",
|
||||||
|
"LamLoadPathImage",
|
||||||
|
"LamLoadVideo",
|
||||||
|
"LamSaveOnly",
|
||||||
|
"LamSwitcherCase",
|
||||||
|
"LoadDirImgPaths",
|
||||||
|
"LoadReplaceImage",
|
||||||
|
"LongTextToList",
|
||||||
|
"MultiControlNetApply",
|
||||||
|
"MultiGLIGENTextBoxApply",
|
||||||
|
"MultiIPAdapterRegional",
|
||||||
|
"MultiIntFormula",
|
||||||
|
"MultiParamFormula",
|
||||||
|
"MultiTextConcatenate",
|
||||||
|
"MultiTextEncode",
|
||||||
|
"MultiTextEncodeAdvanced",
|
||||||
|
"MultiTextSelelct",
|
||||||
|
"MultiTextSetArea",
|
||||||
|
"MultiTextSetGligen",
|
||||||
|
"MultiTextSetMask",
|
||||||
|
"OutDoWhileEnd",
|
||||||
|
"OutDoWhileStart",
|
||||||
|
"PreviewImageLam",
|
||||||
|
"PromptTranslator",
|
||||||
|
"QRCode",
|
||||||
|
"SaveImageLam",
|
||||||
|
"SaveImgOutputLam",
|
||||||
|
"SectionEnd",
|
||||||
|
"SectionStart",
|
||||||
|
"StyleSelecto",
|
||||||
|
"Text2AutioEdgeTts",
|
||||||
|
"TextListSelelct",
|
||||||
|
"VideoAddAudio",
|
||||||
|
"VideoFaceFusion",
|
||||||
|
"VideoPath",
|
||||||
|
"WaitImagSelector",
|
||||||
|
"ZhPromptTranslator"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_Lam"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/yichengup/Comfyui-NodeSpark": [
|
"https://github.com/yichengup/Comfyui-NodeSpark": [
|
||||||
[
|
[
|
||||||
"ImageCircleWarp",
|
"ImageCircleWarp",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,15 @@
|
|||||||
{
|
{
|
||||||
"custom_nodes": [
|
"custom_nodes": [
|
||||||
|
{
|
||||||
|
"author": "SanDiegoDude",
|
||||||
|
"title": "ComfyUI-HiDream-Sampler [WIP]",
|
||||||
|
"reference": "https://github.com/SanDiegoDude/ComfyUI-HiDream-Sampler",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/SanDiegoDude/ComfyUI-HiDream-Sampler"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A collection of enhanced nodes for ComfyUI that provide powerful additional functionality to your workflows.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "PramaLLC",
|
"author": "PramaLLC",
|
||||||
"title": "ComfyUI BEN - Background Erase Network",
|
"title": "ComfyUI BEN - Background Erase Network",
|
||||||
|
|||||||
@@ -10,6 +10,169 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"author": "brantje",
|
||||||
|
"title": "ComfyUI-api-tools",
|
||||||
|
"id": "comfyui_api_tools",
|
||||||
|
"reference": "https://github.com/brantje/ComfyUI-api-tools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/brantje/ComfyUI-api-tools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Adds extra API functionallity and prometheus endpoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Yuan-ManX",
|
||||||
|
"title": "ComfyUI-UNO",
|
||||||
|
"reference": "https://github.com/Yuan-ManX/ComfyUI-UNO",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Yuan-ManX/ComfyUI-UNO"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI nodes for UNO model."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ImagineerNL",
|
||||||
|
"title": "ComfyUI-IMGNR-Utils",
|
||||||
|
"reference": "https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI Utility Nodes by Imagineer. Currently 1: Catch and Edit Text, useful for grabbing AI generated prompts which you edit by hand. Doing so mutes the upstream node, improving speed and saving external calls and budget."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "mw",
|
||||||
|
"title": "MW-ComfyUI_PortraitTools",
|
||||||
|
"reference": "https://github.com/billwuhao/ComfyUI_PortraitTools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/billwuhao/ComfyUI_PortraitTools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Portrait Tools: Facial detection cropping, alignment, ID photo, etc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "uihp",
|
||||||
|
"title": "ComfyUI-String-Chain",
|
||||||
|
"reference": "https://github.com/uihp/ComfyUI-String-Chain",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/uihp/ComfyUI-String-Chain"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "String Chain: Reconnect your prompts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jerrywap",
|
||||||
|
"title": "ComfyUI_LoadImageFromHttpURL",
|
||||||
|
"id": "load-image-from-http-url",
|
||||||
|
"reference": "https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI node that fetches an image from an HTTP URL and returns it as an image tensor. Useful for API-based workflows."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "lum3on",
|
||||||
|
"title": "HiDream Sampler",
|
||||||
|
"id": "hidream-sampler",
|
||||||
|
"reference": "https://github.com/lum3on/comfyui_HiDream-Sampler",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/lum3on/comfyui_HiDream-Sampler"
|
||||||
|
],
|
||||||
|
"install_type": "copy",
|
||||||
|
"description": "A custom ComfyUI node for generating images using the HiDream AI model. Uses quantization for lower memory usage."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "HavocsCall",
|
||||||
|
"title": "HavocsCall's Custom ComfyUI Nodes",
|
||||||
|
"reference": "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Prompt Combiner, Float/Int Selector, Sampler Config, Text Box, Int to Float/String, Int to Float/String, Clip/Conditioning/Image/Latent/Model/String/VAE Switch"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "danger-electrodes",
|
||||||
|
"title": "ComfyUI_Fawfluencer_Nodes",
|
||||||
|
"reference": "https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A set of node for ComfyUI to create an influencer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Burgstall-labs",
|
||||||
|
"title": "ComfyUI-BETA-Helpernodes",
|
||||||
|
"reference": "https://github.com/Burgstall-labs/ComfyUI-BETA-Helpernodes",
|
||||||
|
"files": [
|
||||||
|
"hhttps://github.com/Burgstall-labs/ComfyUI-BETA-Helpernodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom utility nodes for ComfyUI, providing helpers for tasks like video frame manipulation and advanced audio saving. Part of the 'Burgstall Enabling The Awesomeness' suite."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "hunzmusic",
|
||||||
|
"title": "Comfyui-CraftsMan3DWrapper",
|
||||||
|
"reference": "https://github.com/hunzmusic/Comfyui-CraftsMan3DWrapper",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hunzmusic/Comfyui-CraftsMan3DWrapper"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This custom node package provides nodes for ComfyUI to generate 3D coarse meshes from images using the CraftsMan3D model, specifically the version utilizing DoraVAE."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "1038lab",
|
||||||
|
"title": "ComfyUI-MegaTTS",
|
||||||
|
"reference": "https://github.com/1038lab/ComfyUI-MegaTTS",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/1038lab/ComfyUI-MegaTTS"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI custom node based on ByteDance MegaTTS3 MegaTTS3, enabling high-quality text-to-speech synthesis with voice cloning capabilities for both Chinese and English."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ShmuelRonen",
|
||||||
|
"title": "ComfyUI-Veo2-Experimental",
|
||||||
|
"reference": "https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node extension for ComfyUI that integrates Google's Veo 2 text-to-video generation capabilities."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "badxprogramm",
|
||||||
|
"title": "GradientBlurNode for ComfyUI",
|
||||||
|
"reference": "https://github.com/badxprogramm/ComfyUI-GradientBlur",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/badxprogramm/ComfyUI-GradientBlur"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "GradientBlurNode is a custom node for ComfyUI that allows for gradient-based image blurring. This tool provides precise control over the direction, intensity, and distribution of the blur, making it ideal for creating smooth transitions, focusing attention on specific parts of an image, or adding artistic effects."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "linksluckytime",
|
||||||
|
"title": "comfyui_snacknodes",
|
||||||
|
"reference": "https://github.com/linksluckytime/comfyui_snacknodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/linksluckytime/comfyui_snacknodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A collection of custom nodes for ComfyUI"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "HM-RunningHub",
|
||||||
|
"title": "ComfyUI_RH_UNO",
|
||||||
|
"reference": "https://github.com/HM-RunningHub/ComfyUI_RH_UNO",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/HM-RunningHub/ComfyUI_RH_UNO"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is a UNO ComfyUI plugin implementation that can run the full version with 24GB VRAM, as well as quickly run the FP8 version."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "lquesada",
|
"author": "lquesada",
|
||||||
"title": "ComfyUI-Interactive",
|
"title": "ComfyUI-Interactive",
|
||||||
|
|||||||
@@ -67,6 +67,16 @@
|
|||||||
"title_aux": "ComfyUI-EdgeTTS"
|
"title_aux": "ComfyUI-EdgeTTS"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/1038lab/ComfyUI-MegaTTS": [
|
||||||
|
[
|
||||||
|
"MegaTTS3",
|
||||||
|
"MegaTTS3S",
|
||||||
|
"MegaTTS_VoiceMaker"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-MegaTTS"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/1038lab/ComfyUI-OmniGen": [
|
"https://github.com/1038lab/ComfyUI-OmniGen": [
|
||||||
[
|
[
|
||||||
"ailab_OmniGen"
|
"ailab_OmniGen"
|
||||||
@@ -1577,28 +1587,10 @@
|
|||||||
"EXPORT (JOV) \ud83d\udcfd",
|
"EXPORT (JOV) \ud83d\udcfd",
|
||||||
"FILTER MASK (JOV) \ud83e\udd3f",
|
"FILTER MASK (JOV) \ud83e\udd3f",
|
||||||
"FLATTEN (JOV) \u2b07\ufe0f",
|
"FLATTEN (JOV) \u2b07\ufe0f",
|
||||||
"GLSL (JOV) \ud83c\udf69",
|
|
||||||
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL COLOR CONVERSION (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL COLOR PALETTE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL CONICAL GRADIENT (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL DIRECTIONAL WARP (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL INVERT (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL NORMAL (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL NORMAL BLEND (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL POSTERIZE (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GLSL TRANSFORM (JOV) \ud83e\uddd9\ud83c\udffd",
|
|
||||||
"GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa",
|
"GRADIENT MAP (JOV) \ud83c\uddf2\ud83c\uddfa",
|
||||||
"GRAPH (JOV) \ud83d\udcc8",
|
"GRAPH (JOV) \ud83d\udcc8",
|
||||||
"IMAGE INFO (JOV) \ud83d\udcda",
|
"IMAGE INFO (JOV) \ud83d\udcda",
|
||||||
"LERP (JOV) \ud83d\udd30",
|
"LERP (JOV) \ud83d\udd30",
|
||||||
"MIDI FILTER (JOV) \u2733\ufe0f",
|
|
||||||
"MIDI FILTER EZ (JOV) \u2747\ufe0f",
|
|
||||||
"MIDI MESSAGE (JOV) \ud83c\udf9b\ufe0f",
|
|
||||||
"MIDI READER (JOV) \ud83c\udfb9",
|
|
||||||
"OP BINARY (JOV) \ud83c\udf1f",
|
"OP BINARY (JOV) \ud83c\udf1f",
|
||||||
"OP UNARY (JOV) \ud83c\udfb2",
|
"OP UNARY (JOV) \ud83c\udfb2",
|
||||||
"PIXEL MERGE (JOV) \ud83e\udec2",
|
"PIXEL MERGE (JOV) \ud83e\udec2",
|
||||||
@@ -1609,12 +1601,9 @@
|
|||||||
"ROUTE (JOV) \ud83d\ude8c",
|
"ROUTE (JOV) \ud83d\ude8c",
|
||||||
"SAVE OUTPUT (JOV) \ud83d\udcbe",
|
"SAVE OUTPUT (JOV) \ud83d\udcbe",
|
||||||
"SHAPE GEN (JOV) \u2728",
|
"SHAPE GEN (JOV) \u2728",
|
||||||
"SPOUT WRITER (JOV) \ud83c\udfa5",
|
|
||||||
"STACK (JOV) \u2795",
|
"STACK (JOV) \u2795",
|
||||||
"STEREOGRAM (JOV) \ud83d\udcfb",
|
"STEREOGRAM (JOV) \ud83d\udcfb",
|
||||||
"STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f",
|
"STEREOSCOPIC (JOV) \ud83d\udd76\ufe0f",
|
||||||
"STREAM READER (JOV) \ud83d\udcfa",
|
|
||||||
"STREAM WRITER (JOV) \ud83c\udf9e\ufe0f",
|
|
||||||
"STRINGER (JOV) \ud83e\ude80",
|
"STRINGER (JOV) \ud83e\ude80",
|
||||||
"SWIZZLE (JOV) \ud83d\ude35",
|
"SWIZZLE (JOV) \ud83d\ude35",
|
||||||
"TEXT GEN (JOV) \ud83d\udcdd",
|
"TEXT GEN (JOV) \ud83d\udcdd",
|
||||||
@@ -2396,7 +2385,8 @@
|
|||||||
"https://github.com/Burgstall-labs/ComfyUI-BETA-Cropnodes": [
|
"https://github.com/Burgstall-labs/ComfyUI-BETA-Cropnodes": [
|
||||||
[
|
[
|
||||||
"BETACrop",
|
"BETACrop",
|
||||||
"BETAStitch"
|
"BETAStitch",
|
||||||
|
"SaveAudioAdvanced_BETA"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-BETA-Cropnodes"
|
"title_aux": "ComfyUI-BETA-Cropnodes"
|
||||||
@@ -2658,6 +2648,7 @@
|
|||||||
"CLIPTextEncodeFluxUnguided",
|
"CLIPTextEncodeFluxUnguided",
|
||||||
"ClownRegionalConditioning",
|
"ClownRegionalConditioning",
|
||||||
"ClownRegionalConditioning3",
|
"ClownRegionalConditioning3",
|
||||||
|
"ClownRegionalConditioning_AB",
|
||||||
"ClownScheduler",
|
"ClownScheduler",
|
||||||
"ClownpileModelWanVideo",
|
"ClownpileModelWanVideo",
|
||||||
"Conditioning Recast FP64",
|
"Conditioning Recast FP64",
|
||||||
@@ -2777,6 +2768,7 @@
|
|||||||
"Tan Scheduler 2",
|
"Tan Scheduler 2",
|
||||||
"Tan Scheduler 2 Simple",
|
"Tan Scheduler 2 Simple",
|
||||||
"TemporalMaskGenerator",
|
"TemporalMaskGenerator",
|
||||||
|
"TemporalSplitAttnMask",
|
||||||
"TextBox1",
|
"TextBox1",
|
||||||
"TextBox2",
|
"TextBox2",
|
||||||
"TextBox3",
|
"TextBox3",
|
||||||
@@ -2993,6 +2985,7 @@
|
|||||||
"DynamicVAESwitch",
|
"DynamicVAESwitch",
|
||||||
"EvaluaterNode",
|
"EvaluaterNode",
|
||||||
"Modelswitch",
|
"Modelswitch",
|
||||||
|
"PeopleEvaluationNode",
|
||||||
"SanitizeFilename",
|
"SanitizeFilename",
|
||||||
"SystemPromp",
|
"SystemPromp",
|
||||||
"Textswitch",
|
"Textswitch",
|
||||||
@@ -4635,6 +4628,15 @@
|
|||||||
"title_aux": "ComfyUI_RH_OminiControl"
|
"title_aux": "ComfyUI_RH_OminiControl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/HM-RunningHub/ComfyUI_RH_UNO": [
|
||||||
|
[
|
||||||
|
"RunningHub_UNO_Loadmodel",
|
||||||
|
"RunningHub_UNO_Sampler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_RH_UNO"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [
|
"https://github.com/Haiper-ai/ComfyUI-HaiperAI-API": [
|
||||||
[
|
[
|
||||||
"HaiperImage2Video",
|
"HaiperImage2Video",
|
||||||
@@ -4719,6 +4721,29 @@
|
|||||||
"title_aux": "ComfyUI ReSharpen"
|
"title_aux": "ComfyUI ReSharpen"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": [
|
||||||
|
[
|
||||||
|
"Clip Switch",
|
||||||
|
"Conditioning Switch",
|
||||||
|
"Float Selector",
|
||||||
|
"Float to Int",
|
||||||
|
"Float to String",
|
||||||
|
"Image Switch",
|
||||||
|
"Int Selector",
|
||||||
|
"Int to Float",
|
||||||
|
"Int to String",
|
||||||
|
"Latent Switch",
|
||||||
|
"Model Switch",
|
||||||
|
"Prompt Combiner",
|
||||||
|
"Sampler Config",
|
||||||
|
"String Switch",
|
||||||
|
"Text Box",
|
||||||
|
"VAE Switch"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "HavocsCall's Custom ComfyUI Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/HaydenReeve/ComfyUI-Better-Strings": [
|
"https://github.com/HaydenReeve/ComfyUI-Better-Strings": [
|
||||||
[
|
[
|
||||||
"BetterString"
|
"BetterString"
|
||||||
@@ -4944,6 +4969,14 @@
|
|||||||
"title_aux": "Simple String Repository"
|
"title_aux": "Simple String Repository"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/ImagineerNL/ComfyUI-IMGNR-Utils": [
|
||||||
|
[
|
||||||
|
"CatchEditTextNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-IMGNR-Utils"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ImagineerNL/ComfyUI-ToSVG-Potracer": [
|
"https://github.com/ImagineerNL/ComfyUI-ToSVG-Potracer": [
|
||||||
[
|
[
|
||||||
"PotracerVectorize"
|
"PotracerVectorize"
|
||||||
@@ -5497,8 +5530,15 @@
|
|||||||
"https://github.com/Jokimbe/ComfyUI-DrawThings-gRPC": [
|
"https://github.com/Jokimbe/ComfyUI-DrawThings-gRPC": [
|
||||||
[
|
[
|
||||||
"DrawThingsControlNet",
|
"DrawThingsControlNet",
|
||||||
|
"DrawThingsHighResFix",
|
||||||
"DrawThingsLoRA",
|
"DrawThingsLoRA",
|
||||||
"DrawThingsSampler"
|
"DrawThingsNegative",
|
||||||
|
"DrawThingsPositive",
|
||||||
|
"DrawThingsRefiner",
|
||||||
|
"DrawThingsSampler",
|
||||||
|
"DrawThingsTeaCache",
|
||||||
|
"DrawThingsUpscaler",
|
||||||
|
"DrawThingsVideo"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-DrawThings-gRPC"
|
"title_aux": "ComfyUI-DrawThings-gRPC"
|
||||||
@@ -6934,6 +6974,7 @@
|
|||||||
[
|
[
|
||||||
"iToolsAddOverlay",
|
"iToolsAddOverlay",
|
||||||
"iToolsCheckerBoard",
|
"iToolsCheckerBoard",
|
||||||
|
"iToolsCompareImage",
|
||||||
"iToolsGridFiller",
|
"iToolsGridFiller",
|
||||||
"iToolsKSampler",
|
"iToolsKSampler",
|
||||||
"iToolsLineLoader",
|
"iToolsLineLoader",
|
||||||
@@ -7987,6 +8028,7 @@
|
|||||||
"FormatConcatStrings",
|
"FormatConcatStrings",
|
||||||
"FormattingSingle",
|
"FormattingSingle",
|
||||||
"FourierAnalysisNode",
|
"FourierAnalysisNode",
|
||||||
|
"ImageDifference",
|
||||||
"MosaicEffectNode",
|
"MosaicEffectNode",
|
||||||
"PWLoraNameCollector",
|
"PWLoraNameCollector",
|
||||||
"PWLoraSelector",
|
"PWLoraSelector",
|
||||||
@@ -8993,15 +9035,9 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [
|
"https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node": [
|
||||||
[
|
[
|
||||||
"ASCIIArtNode",
|
"ASCIIArtNodeV3"
|
||||||
"ASCIIArtNodev2",
|
|
||||||
"ASCIIArtSinglefontNode"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"author": "Shiba-2-shiba",
|
|
||||||
"description": "This node generates colorful ASCII art using custom character sets and fonts.",
|
|
||||||
"nickname": "ColorASCII",
|
|
||||||
"title": "Colorful ASCII Art Node",
|
|
||||||
"title_aux": "ComfyUI-color-ascii-art-node"
|
"title_aux": "ComfyUI-color-ascii-art-node"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -9172,6 +9208,16 @@
|
|||||||
"title_aux": "ComfyUI-SVDResizer"
|
"title_aux": "ComfyUI-SVDResizer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental": [
|
||||||
|
[
|
||||||
|
"VeoTextToVideo",
|
||||||
|
"VeoToVHS",
|
||||||
|
"VeoVideoPreview"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Veo2-Experimental"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler": [
|
"https://github.com/ShmuelRonen/ComfyUI-WanVideoKsampler": [
|
||||||
[
|
[
|
||||||
"WanVideoKsampler"
|
"WanVideoKsampler"
|
||||||
@@ -9589,6 +9635,7 @@
|
|||||||
"SDVN AnyDownload List",
|
"SDVN AnyDownload List",
|
||||||
"SDVN Apply Style Model",
|
"SDVN Apply Style Model",
|
||||||
"SDVN Auto Generate",
|
"SDVN Auto Generate",
|
||||||
|
"SDVN AutoSwitch",
|
||||||
"SDVN Boolean",
|
"SDVN Boolean",
|
||||||
"SDVN CLIP Download",
|
"SDVN CLIP Download",
|
||||||
"SDVN CLIP Text Encode",
|
"SDVN CLIP Text Encode",
|
||||||
@@ -9634,6 +9681,7 @@
|
|||||||
"SDVN Load Lora",
|
"SDVN Load Lora",
|
||||||
"SDVN Load Model",
|
"SDVN Load Model",
|
||||||
"SDVN Load Text",
|
"SDVN Load Text",
|
||||||
|
"SDVN LoadPinterest",
|
||||||
"SDVN Logic",
|
"SDVN Logic",
|
||||||
"SDVN Loop Inpaint Stitch",
|
"SDVN Loop Inpaint Stitch",
|
||||||
"SDVN Lora Download",
|
"SDVN Lora Download",
|
||||||
@@ -11603,6 +11651,19 @@
|
|||||||
"title_aux": "ComfyUI-StyleStudio"
|
"title_aux": "ComfyUI-StyleStudio"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/Yuan-ManX/ComfyUI-UNO": [
|
||||||
|
[
|
||||||
|
"ConfigSave",
|
||||||
|
"ImageConcat",
|
||||||
|
"ImagePathLoader",
|
||||||
|
"ImageSave",
|
||||||
|
"UNOGenerator",
|
||||||
|
"UNOParams"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-UNO"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [
|
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": [
|
||||||
[
|
[
|
||||||
"APISR_Lterative_Zho",
|
"APISR_Lterative_Zho",
|
||||||
@@ -11997,7 +12058,8 @@
|
|||||||
"Rotate Module (Bending)",
|
"Rotate Module (Bending)",
|
||||||
"Scale Module (Bending)",
|
"Scale Module (Bending)",
|
||||||
"Sobel Module (Bending)",
|
"Sobel Module (Bending)",
|
||||||
"Threshold Module (Bending)"
|
"Threshold Module (Bending)",
|
||||||
|
"Visualize Feature Map"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI Model Bending"
|
"title_aux": "ComfyUI Model Bending"
|
||||||
@@ -12322,6 +12384,7 @@
|
|||||||
"CogVideoXFunInpaintSampler",
|
"CogVideoXFunInpaintSampler",
|
||||||
"CogVideoXFunT2VSampler",
|
"CogVideoXFunT2VSampler",
|
||||||
"CogVideoXFunV2VSampler",
|
"CogVideoXFunV2VSampler",
|
||||||
|
"FunRiflex",
|
||||||
"FunTextBox",
|
"FunTextBox",
|
||||||
"LoadCogVideoXFunLora",
|
"LoadCogVideoXFunLora",
|
||||||
"LoadCogVideoXFunModel",
|
"LoadCogVideoXFunModel",
|
||||||
@@ -13202,6 +13265,14 @@
|
|||||||
"title_aux": "LoRA Tag Loader for ComfyUI"
|
"title_aux": "LoRA Tag Loader for ComfyUI"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/badxprogramm/ComfyUI-GradientBlur": [
|
||||||
|
[
|
||||||
|
"GradientBlur"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "GradientBlurNode for ComfyUI"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/baicai99/ComfyUI-FrameSkipping": [
|
"https://github.com/baicai99/ComfyUI-FrameSkipping": [
|
||||||
[
|
[
|
||||||
"FrameSelector",
|
"FrameSelector",
|
||||||
@@ -13562,7 +13633,7 @@
|
|||||||
"MultiLinePrompt"
|
"MultiLinePrompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_DiffRhythm"
|
"title_aux": "ComfyUI_DiffRhythm_MW"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/billwuhao/ComfyUI_EraX-WoW-Turbo": [
|
"https://github.com/billwuhao/ComfyUI_EraX-WoW-Turbo": [
|
||||||
@@ -13607,7 +13678,19 @@
|
|||||||
"LoadPrompt"
|
"LoadPrompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_OneButtonPrompt"
|
"title_aux": "MW-ComfyUI_OneButtonPrompt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/billwuhao/ComfyUI_PortraitTools": [
|
||||||
|
[
|
||||||
|
"AlignFace",
|
||||||
|
"BeautifyPhoto",
|
||||||
|
"DetectCropFace",
|
||||||
|
"IDPhotos",
|
||||||
|
"RMBG"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "MW-ComfyUI_PortraitTools"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/billwuhao/ComfyUI_SparkTTS": [
|
"https://github.com/billwuhao/ComfyUI_SparkTTS": [
|
||||||
@@ -14008,6 +14091,14 @@
|
|||||||
"title_aux": "braintacles-nodes"
|
"title_aux": "braintacles-nodes"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/brantje/ComfyUI-api-tools": [
|
||||||
|
[
|
||||||
|
"SimpleGenImageInterface"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-api-tools"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/brayevalerien/ComfyUI-resynthesizer": [
|
"https://github.com/brayevalerien/ComfyUI-resynthesizer": [
|
||||||
[
|
[
|
||||||
"Resynthesize"
|
"Resynthesize"
|
||||||
@@ -16320,6 +16411,7 @@
|
|||||||
"VPScheduler",
|
"VPScheduler",
|
||||||
"VideoLinearCFGGuidance",
|
"VideoLinearCFGGuidance",
|
||||||
"VideoTriangleCFGGuidance",
|
"VideoTriangleCFGGuidance",
|
||||||
|
"VoxelToMesh",
|
||||||
"VoxelToMeshBasic",
|
"VoxelToMeshBasic",
|
||||||
"WanFunControlToVideo",
|
"WanFunControlToVideo",
|
||||||
"WanFunInpaintToVideo",
|
"WanFunInpaintToVideo",
|
||||||
@@ -16906,6 +16998,54 @@
|
|||||||
"title_aux": "SDXL Auto Prompter"
|
"title_aux": "SDXL Auto Prompter"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/danger-electrodes/ComfyUI_Fawfluencer_Nodes": [
|
||||||
|
[
|
||||||
|
"FawfaceModelSpreadsheetRealismNode",
|
||||||
|
"FawfakeAuthenticImageSaveNode",
|
||||||
|
"FawfluxencerNode",
|
||||||
|
"FawfulizedAddImagesToImageList",
|
||||||
|
"FawfulizedEmptyImageList",
|
||||||
|
"FawfulizedHunyuanAddNoise",
|
||||||
|
"FawfulizedHunyuanBasicGuider",
|
||||||
|
"FawfulizedHunyuanBasicScheduler",
|
||||||
|
"FawfulizedHunyuanBetaSamplingScheduler",
|
||||||
|
"FawfulizedHunyuanCFGGuider",
|
||||||
|
"FawfulizedHunyuanControlNetApply",
|
||||||
|
"FawfulizedHunyuanControlNetApplyAdvanced",
|
||||||
|
"FawfulizedHunyuanControlNetLoader",
|
||||||
|
"FawfulizedHunyuanDiffControlNetLoader",
|
||||||
|
"FawfulizedHunyuanDisableNoise",
|
||||||
|
"FawfulizedHunyuanDualCFGGuider",
|
||||||
|
"FawfulizedHunyuanExponentialScheduler",
|
||||||
|
"FawfulizedHunyuanFlipSigmas",
|
||||||
|
"FawfulizedHunyuanKSamplerSelect",
|
||||||
|
"FawfulizedHunyuanKarrasScheduler",
|
||||||
|
"FawfulizedHunyuanLaplaceScheduler",
|
||||||
|
"FawfulizedHunyuanLatentVideo",
|
||||||
|
"FawfulizedHunyuanPolyexponentialScheduler",
|
||||||
|
"FawfulizedHunyuanRandomNoise",
|
||||||
|
"FawfulizedHunyuanSDTurboScheduler",
|
||||||
|
"FawfulizedHunyuanSamplerCustom",
|
||||||
|
"FawfulizedHunyuanSamplerCustomAdvanced",
|
||||||
|
"FawfulizedHunyuanSamplerDPMAdaptative",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_2M_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_2S_Ancestral",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_3M_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerDPMPP_SDE",
|
||||||
|
"FawfulizedHunyuanSamplerEulerAncestral",
|
||||||
|
"FawfulizedHunyuanSamplerEulerAncestralCFGPP",
|
||||||
|
"FawfulizedHunyuanSamplerLMS",
|
||||||
|
"FawfulizedHunyuanSetFirstSigma",
|
||||||
|
"FawfulizedHunyuanSetLatentNoiseMask",
|
||||||
|
"FawfulizedHunyuanSplitSigmas",
|
||||||
|
"FawfulizedHunyuanSplitSigmasDenoise",
|
||||||
|
"FawfulizedHunyuanVPScheduler",
|
||||||
|
"Img2ImgFawfluencerNodeSDXL"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_Fawfluencer_Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [
|
"https://github.com/daniabib/ComfyUI_ProPainter_Nodes": [
|
||||||
[
|
[
|
||||||
"ProPainterInpaint",
|
"ProPainterInpaint",
|
||||||
@@ -17678,7 +17818,7 @@
|
|||||||
"title_aux": "Semantic-SAM"
|
"title_aux": "Semantic-SAM"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/edelvarden/ComfyUI-ImageMetadataExtension": [
|
"https://github.com/edelvarden/comfyui_image_metadata_extension": [
|
||||||
[
|
[
|
||||||
"CreateExtraMetaData",
|
"CreateExtraMetaData",
|
||||||
"SaveImageWithMetaData"
|
"SaveImageWithMetaData"
|
||||||
@@ -18280,6 +18420,7 @@
|
|||||||
"FL_NodeLoader",
|
"FL_NodeLoader",
|
||||||
"FL_NodePackLoader",
|
"FL_NodePackLoader",
|
||||||
"FL_OllamaCaptioner",
|
"FL_OllamaCaptioner",
|
||||||
|
"FL_PDFEncryptor",
|
||||||
"FL_PDFImageExtractor",
|
"FL_PDFImageExtractor",
|
||||||
"FL_PDFLoader",
|
"FL_PDFLoader",
|
||||||
"FL_PDFMerger",
|
"FL_PDFMerger",
|
||||||
@@ -18290,6 +18431,7 @@
|
|||||||
"FL_PaperDrawn",
|
"FL_PaperDrawn",
|
||||||
"FL_PasteOnCanvas",
|
"FL_PasteOnCanvas",
|
||||||
"FL_PathTypeChecker",
|
"FL_PathTypeChecker",
|
||||||
|
"FL_PixVerseAPI",
|
||||||
"FL_PixelArtShader",
|
"FL_PixelArtShader",
|
||||||
"FL_PixelSort",
|
"FL_PixelSort",
|
||||||
"FL_ProResVideo",
|
"FL_ProResVideo",
|
||||||
@@ -18311,6 +18453,7 @@
|
|||||||
"FL_SimpleGPTVision",
|
"FL_SimpleGPTVision",
|
||||||
"FL_SystemCheck",
|
"FL_SystemCheck",
|
||||||
"FL_TetrisGame",
|
"FL_TetrisGame",
|
||||||
|
"FL_TextToPDF",
|
||||||
"FL_TimeLine",
|
"FL_TimeLine",
|
||||||
"FL_UpscaleModel",
|
"FL_UpscaleModel",
|
||||||
"FL_VideoCaptionSaver",
|
"FL_VideoCaptionSaver",
|
||||||
@@ -18857,6 +19000,7 @@
|
|||||||
"ImgTextSwitch",
|
"ImgTextSwitch",
|
||||||
"Load Remote Models",
|
"Load Remote Models",
|
||||||
"LoadText|plush",
|
"LoadText|plush",
|
||||||
|
"Model-CLIP Output Switch",
|
||||||
"ParseJSON",
|
"ParseJSON",
|
||||||
"Plush-Exif Wrangler",
|
"Plush-Exif Wrangler",
|
||||||
"Random Image Output",
|
"Random Image Output",
|
||||||
@@ -20019,17 +20163,6 @@
|
|||||||
"title_aux": "ComfyUI-Select-Any"
|
"title_aux": "ComfyUI-Select-Any"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/hylarucoder/comfyui-copilot": [
|
|
||||||
[
|
|
||||||
"EagleImageNode",
|
|
||||||
"SDXLPromptStyler",
|
|
||||||
"SDXLPromptStylerAdvanced",
|
|
||||||
"SDXLResolutionPresets"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "comfyui-copilot"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/hyunamy/comfy-ui-on-complete-email-me": [
|
"https://github.com/hyunamy/comfy-ui-on-complete-email-me": [
|
||||||
[
|
[
|
||||||
"OnCompleteEmailMe",
|
"OnCompleteEmailMe",
|
||||||
@@ -20240,12 +20373,17 @@
|
|||||||
"title_aux": "IF_AI_LoadImages"
|
"title_aux": "IF_AI_LoadImages"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/ifmylove2011/comfyui-missing-tool": [
|
"https://github.com/ifmylove2011/comfyui-missed-tool": [
|
||||||
[
|
[
|
||||||
"ImageQueueLoader",
|
"ImageQueueLoader",
|
||||||
"LoadImageA",
|
"LoadImageA",
|
||||||
|
"LoraLoad",
|
||||||
|
"LoraMerge",
|
||||||
|
"LoraSaver",
|
||||||
|
"ScaleMultilplePixels",
|
||||||
"TrimBG",
|
"TrimBG",
|
||||||
"TrimBGAdvanced"
|
"TrimBGAdvanced",
|
||||||
|
"TxtSave"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "comfyui-missing-tool"
|
"title_aux": "comfyui-missing-tool"
|
||||||
@@ -20256,7 +20394,10 @@
|
|||||||
"Light-Tool: AddBackground",
|
"Light-Tool: AddBackground",
|
||||||
"Light-Tool: AddBackgroundV2",
|
"Light-Tool: AddBackgroundV2",
|
||||||
"Light-Tool: BoundingBoxCropping",
|
"Light-Tool: BoundingBoxCropping",
|
||||||
|
"Light-Tool: Calculate",
|
||||||
|
"Light-Tool: DeserializeJsonString",
|
||||||
"Light-Tool: GetImageSize",
|
"Light-Tool: GetImageSize",
|
||||||
|
"Light-Tool: GetImagesCount",
|
||||||
"Light-Tool: Hex2Rgb",
|
"Light-Tool: Hex2Rgb",
|
||||||
"Light-Tool: ImageConcat",
|
"Light-Tool: ImageConcat",
|
||||||
"Light-Tool: ImageMaskApply",
|
"Light-Tool: ImageMaskApply",
|
||||||
@@ -20270,6 +20411,7 @@
|
|||||||
"Light-Tool: LoadImage",
|
"Light-Tool: LoadImage",
|
||||||
"Light-Tool: LoadImageFromURL",
|
"Light-Tool: LoadImageFromURL",
|
||||||
"Light-Tool: LoadImagesFromDir",
|
"Light-Tool: LoadImagesFromDir",
|
||||||
|
"Light-Tool: LoadMetadataFromURL",
|
||||||
"Light-Tool: LoadVideo",
|
"Light-Tool: LoadVideo",
|
||||||
"Light-Tool: MaskBoundingBoxCropping",
|
"Light-Tool: MaskBoundingBoxCropping",
|
||||||
"Light-Tool: MaskContourExtractor",
|
"Light-Tool: MaskContourExtractor",
|
||||||
@@ -20281,9 +20423,11 @@
|
|||||||
"Light-Tool: RGB2RGBA",
|
"Light-Tool: RGB2RGBA",
|
||||||
"Light-Tool: RGBA2RGB",
|
"Light-Tool: RGBA2RGB",
|
||||||
"Light-Tool: ResizeImage",
|
"Light-Tool: ResizeImage",
|
||||||
|
"Light-Tool: SaveMetadata",
|
||||||
"Light-Tool: SaveToAliyunOSS",
|
"Light-Tool: SaveToAliyunOSS",
|
||||||
"Light-Tool: SaveVideo",
|
"Light-Tool: SaveVideo",
|
||||||
"Light-Tool: ScaleImage",
|
"Light-Tool: ScaleImage",
|
||||||
|
"Light-Tool: SerializeJsonObject",
|
||||||
"Light-Tool: ShowText",
|
"Light-Tool: ShowText",
|
||||||
"Light-Tool: SimpleImageOverlay",
|
"Light-Tool: SimpleImageOverlay",
|
||||||
"Light-Tool: SimpleTextConnect",
|
"Light-Tool: SimpleTextConnect",
|
||||||
@@ -20967,7 +21111,8 @@
|
|||||||
"EasyControlGenerate",
|
"EasyControlGenerate",
|
||||||
"EasyControlLoadFlux",
|
"EasyControlLoadFlux",
|
||||||
"EasyControlLoadLora",
|
"EasyControlLoadLora",
|
||||||
"EasyControlLoadMultiLora"
|
"EasyControlLoadMultiLora",
|
||||||
|
"EasyControlLoadStyleLora"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-easycontrol"
|
"title_aux": "ComfyUI-easycontrol"
|
||||||
@@ -21042,6 +21187,14 @@
|
|||||||
"title_aux": "ComfyUI-My-Mask"
|
"title_aux": "ComfyUI-My-Mask"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/jerrywap/ComfyUI_LoadImageFromHttpURL": [
|
||||||
|
[
|
||||||
|
"LoadImageFromHttpURL"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_LoadImageFromHttpURL"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/jerrywap/ComfyUI_UploadToWebhookHTTP": [
|
"https://github.com/jerrywap/ComfyUI_UploadToWebhookHTTP": [
|
||||||
[
|
[
|
||||||
"UploadToWebHookHTTP"
|
"UploadToWebHookHTTP"
|
||||||
@@ -21293,7 +21446,13 @@
|
|||||||
"https://github.com/joeriben/ai4artsed_comfyui": [
|
"https://github.com/joeriben/ai4artsed_comfyui": [
|
||||||
[
|
[
|
||||||
"ai4artsed_ollama",
|
"ai4artsed_ollama",
|
||||||
"ai4artsed_openrouter"
|
"ai4artsed_ollama_imageanalysis",
|
||||||
|
"ai4artsed_openrouter",
|
||||||
|
"ai4artsed_openrouter_imageanalysis",
|
||||||
|
"ai4artsed_random_artform_generator",
|
||||||
|
"ai4artsed_random_instruction_generator",
|
||||||
|
"ai4artsed_random_language_selector",
|
||||||
|
"ai4artsed_text_remix"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "AI4ArtsEd Ollama Prompt Node"
|
"title_aux": "AI4ArtsEd Ollama Prompt Node"
|
||||||
@@ -23278,6 +23437,14 @@
|
|||||||
"title_aux": "comfyui_kj"
|
"title_aux": "comfyui_kj"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/linksluckytime/comfyui_snacknodes": [
|
||||||
|
[
|
||||||
|
"SnackImageScaler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui_snacknodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/linshier/comfyui-remote-tools": [
|
"https://github.com/linshier/comfyui-remote-tools": [
|
||||||
[
|
[
|
||||||
"LoadBase64(js)",
|
"LoadBase64(js)",
|
||||||
@@ -25196,6 +25363,7 @@
|
|||||||
"CanvasCreatorAdvanced",
|
"CanvasCreatorAdvanced",
|
||||||
"CanvasCreatorBasic",
|
"CanvasCreatorBasic",
|
||||||
"CanvasCreatorSimple",
|
"CanvasCreatorSimple",
|
||||||
|
"CheckpointLoaderSimpleMira",
|
||||||
"CreateMaskWithCanvas",
|
"CreateMaskWithCanvas",
|
||||||
"CreateNestedPNGMask",
|
"CreateNestedPNGMask",
|
||||||
"CreateSimpleMask",
|
"CreateSimpleMask",
|
||||||
@@ -25221,6 +25389,7 @@
|
|||||||
"ImageHUE",
|
"ImageHUE",
|
||||||
"ImageRGBChannel",
|
"ImageRGBChannel",
|
||||||
"ImageSaturation",
|
"ImageSaturation",
|
||||||
|
"ImageSaverMira",
|
||||||
"ImageSharpness",
|
"ImageSharpness",
|
||||||
"ImageToneCurve",
|
"ImageToneCurve",
|
||||||
"IntMultiplication",
|
"IntMultiplication",
|
||||||
@@ -25847,6 +26016,7 @@
|
|||||||
[
|
[
|
||||||
"Nilor Categorize String",
|
"Nilor Categorize String",
|
||||||
"Nilor Count Images In Directory",
|
"Nilor Count Images In Directory",
|
||||||
|
"Nilor Extract Filename from Path",
|
||||||
"Nilor Int To List Of Bools",
|
"Nilor Int To List Of Bools",
|
||||||
"Nilor Interpolated Float List",
|
"Nilor Interpolated Float List",
|
||||||
"Nilor Inverse Map Float List",
|
"Nilor Inverse Map Float List",
|
||||||
@@ -26010,6 +26180,7 @@
|
|||||||
"https://github.com/nofunstudio/Node_Fun_ComfyUI": [
|
"https://github.com/nofunstudio/Node_Fun_ComfyUI": [
|
||||||
[
|
[
|
||||||
"DynamicQueueCounter",
|
"DynamicQueueCounter",
|
||||||
|
"Fun KSampler",
|
||||||
"IframeView",
|
"IframeView",
|
||||||
"IndexedStringSelector",
|
"IndexedStringSelector",
|
||||||
"LayeredInfiniteZoom",
|
"LayeredInfiniteZoom",
|
||||||
@@ -26312,6 +26483,19 @@
|
|||||||
"title_aux": "ComfyUI-wanBlockswap"
|
"title_aux": "ComfyUI-wanBlockswap"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/oshtz/ComfyUI-oshtz-nodes": [
|
||||||
|
[
|
||||||
|
"EasyAspectRatioNode",
|
||||||
|
"LLMAIONode",
|
||||||
|
"LoRASwitcherNode",
|
||||||
|
"LoRASwitcherNode20",
|
||||||
|
"LoRASwitcherNode40",
|
||||||
|
"StringSplitterNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "oshtz Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/osi1880vr/prompt_quill_comfyui": [
|
"https://github.com/osi1880vr/prompt_quill_comfyui": [
|
||||||
[
|
[
|
||||||
"PromptQuillGenerate",
|
"PromptQuillGenerate",
|
||||||
@@ -26980,6 +27164,7 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/rainlizard/ComfyUI-Raffle": [
|
"https://github.com/rainlizard/ComfyUI-Raffle": [
|
||||||
[
|
[
|
||||||
|
"PreviewHistory",
|
||||||
"Raffle"
|
"Raffle"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -28373,7 +28558,6 @@
|
|||||||
"BizyAirSiliconCloudLLMAPI",
|
"BizyAirSiliconCloudLLMAPI",
|
||||||
"BizyAirSiliconCloudVLMAPI",
|
"BizyAirSiliconCloudVLMAPI",
|
||||||
"BizyAirTilePreprocessor",
|
"BizyAirTilePreprocessor",
|
||||||
"BizyAirToggleServerEndpoint",
|
|
||||||
"BizyAirUniFormer_SemSegPreprocessor",
|
"BizyAirUniFormer_SemSegPreprocessor",
|
||||||
"BizyAirZoe_DepthMapPreprocessor",
|
"BizyAirZoe_DepthMapPreprocessor",
|
||||||
"BizyAir_MinusZoneChatGLM3TextEncode",
|
"BizyAir_MinusZoneChatGLM3TextEncode",
|
||||||
@@ -30165,6 +30349,17 @@
|
|||||||
"title_aux": "comfyui-webcam-node"
|
"title_aux": "comfyui-webcam-node"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/uihp/ComfyUI-String-Chain": [
|
||||||
|
[
|
||||||
|
"String Chain",
|
||||||
|
"String Concat",
|
||||||
|
"String Toggle",
|
||||||
|
"String Toggle (Multiline)"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-String-Chain"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/umiyuki/comfyui-pad-to-eight": [
|
"https://github.com/umiyuki/comfyui-pad-to-eight": [
|
||||||
[
|
[
|
||||||
"Pad To Eight"
|
"Pad To Eight"
|
||||||
@@ -30736,7 +30931,8 @@
|
|||||||
"Text_Match",
|
"Text_Match",
|
||||||
"Whitening_Node",
|
"Whitening_Node",
|
||||||
"YOLOWorld_Match",
|
"YOLOWorld_Match",
|
||||||
"YOLO_Crop"
|
"YOLO_Crop",
|
||||||
|
"YOLO_Multi_Crop"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI_KimNodes"
|
"title_aux": "ComfyUI_KimNodes"
|
||||||
@@ -31282,6 +31478,7 @@
|
|||||||
"ImageRotate",
|
"ImageRotate",
|
||||||
"ImageSelector",
|
"ImageSelector",
|
||||||
"ImageUpscaleTiled",
|
"ImageUpscaleTiled",
|
||||||
|
"LoadImagesFromFolder",
|
||||||
"MaskBatchComposite",
|
"MaskBatchComposite",
|
||||||
"MaskBatchCopy",
|
"MaskBatchCopy",
|
||||||
"MaskContourFillNode",
|
"MaskContourFillNode",
|
||||||
@@ -31295,7 +31492,8 @@
|
|||||||
"MaskTopNFilter",
|
"MaskTopNFilter",
|
||||||
"TextBeforeKeyword",
|
"TextBeforeKeyword",
|
||||||
"YC Extract Number",
|
"YC Extract Number",
|
||||||
"YC Text Index Switch"
|
"YC Text Index Switch",
|
||||||
|
"YC_Image_Save"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-YCNodes"
|
"title_aux": "ComfyUI-YCNodes"
|
||||||
@@ -31767,6 +31965,7 @@
|
|||||||
"https://github.com/yushan777/ComfyUI-Y7Nodes": [
|
"https://github.com/yushan777/ComfyUI-Y7Nodes": [
|
||||||
[
|
[
|
||||||
"Y7Nodes_CLIP_TokenCounter",
|
"Y7Nodes_CLIP_TokenCounter",
|
||||||
|
"Y7Nodes_CatchEditTextNodeDual",
|
||||||
"Y7Nodes_Grid2Batch",
|
"Y7Nodes_Grid2Batch",
|
||||||
"Y7Nodes_PromptEnhancerFlux",
|
"Y7Nodes_PromptEnhancerFlux",
|
||||||
"Y7Nodes_ShowAnything",
|
"Y7Nodes_ShowAnything",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
[project]
|
[project]
|
||||||
name = "comfyui-manager"
|
name = "comfyui-manager"
|
||||||
license = { text = "GPL-3.0-only" }
|
license = { text = "GPL-3.0-only" }
|
||||||
version = "4.0"
|
version = "4.0.0-beta.1"
|
||||||
requires-python = ">= 3.9"
|
requires-python = ">= 3.9"
|
||||||
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
@@ -25,16 +25,16 @@ classifiers = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"GitPython",
|
"GitPython",
|
||||||
"PyGithub",
|
"PyGithub",
|
||||||
"matrix-client==0.4.0",
|
"matrix-client==0.4.0",
|
||||||
"transformers",
|
"transformers",
|
||||||
"huggingface-hub>0.20",
|
"huggingface-hub>0.20",
|
||||||
"typer",
|
"typer",
|
||||||
"rich",
|
"rich",
|
||||||
"typing-extensions",
|
"typing-extensions",
|
||||||
"toml",
|
"toml",
|
||||||
"uv",
|
"uv",
|
||||||
"chardet"
|
"chardet"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user