Merge branch 'ltdrdata:main' into main

This commit is contained in:
kaibioinfo 2024-11-24 21:32:51 +01:00 committed by GitHub
commit 890ce93297
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 2688 additions and 2369 deletions

View File

@ -152,17 +152,6 @@
"install_type": "git-clone",
"description": "A custom node suite for Video Frame Interpolation in ComfyUI"
},
{
"author": "Fannovel16",
"title": "ComfyUI Loopchain",
"id": "loopchain",
"reference": "https://github.com/Fannovel16/ComfyUI-Loopchain",
"files": [
"https://github.com/Fannovel16/ComfyUI-Loopchain"
],
"install_type": "git-clone",
"description": "A collection of nodes which can be useful for animation in ComfyUI. The main focus of this extension is implementing a mechanism called loopchain. A loopchain in this case is the chain of nodes only executed repeatly in the workflow. If a node chain contains a loop node from this extension, it will become a loop chain."
},
{
"author": "Fannovel16",
"title": "ComfyUI MotionDiff",
@ -7052,16 +7041,6 @@
"install_type": "git-clone",
"description": "A set of custom ComfyUI nodes for performing basic post-processing effects including Film Grain and Vignette. These effects can help to take the edge off AI imagery and make them feel more natural."
},
{
"author": "DonBaronFactory",
"title": "ComfyUI-Cre8it-Nodes",
"reference": "https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes",
"files": [
"https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes"
],
"install_type": "git-clone",
"description": "Nodes:CRE8IT Serial Prompter, CRE8IT Apply Serial Prompter, CRE8IT Image Sizer. A few simple nodes to facilitate working wiht ComfyUI Workflows"
},
{
"author": "deforum",
"title": "Deforum Nodes",
@ -7216,6 +7195,16 @@
"install_type": "git-clone",
"description": "A custom node for ComfyUI that enables smooth, keyframe-based animations for image generation. Create dynamic sequences with control over motion, zoom, rotation, and easing effects. Ideal for AI-assisted animation and video content creation."
},
{
"author": "ShmuelRonen",
"title": "Apply Style Model Adjust for ComfyUI",
"reference": "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust"
],
"install_type": "git-clone",
"description": "A custom node that provides enhanced control over style transfer balance when using FLUX style models in ComfyUI. This node offers better control over the influence of text prompts versus style reference images."
},
{
"author": "redhottensors",
"title": "ComfyUI-Prediction",
@ -7525,6 +7514,16 @@
"install_type": "git-clone",
"description": "ComfyUI nodes to edit videos using Genmo Mochi"
},
{
"author": "logtd",
"title": "ComfyUI-LTXTricks",
"reference": "https://github.com/logtd/ComfyUI-LTXTricks",
"files": [
"https://github.com/logtd/ComfyUI-LTXTricks"
],
"install_type": "git-clone",
"description": "A set of nodes that provide additional controls for the LTX Video model"
},
{
"author": "Big-Idea-Technology",
"title": "ComfyUI-Book-Tools Nodes for ComfyUI",
@ -15558,7 +15557,7 @@
"https://github.com/acorderob/sd-webui-prompt-postprocessor"
],
"install_type": "git-clone",
"description": "The Prompt PostProcessor (PPP), formerly known as 'sd-webui-sendtonegative', is an extension designed to process the prompt, possibly after other extensions have modified it."
"description": "Stable Diffusion WebUI & ComfyUI extension to post-process the prompt, including sending content from the prompt to the negative prompt and wildcards."
},
{
"author": "Moooonet",
@ -16789,7 +16788,7 @@
"https://github.com/DoctorDiffusion/ComfyUI-MediaMixer"
],
"install_type": "git-clone",
"description": "Nodes:Youtube Downloader, Video Merge, Final Frame Selector. Combine two videos into one, output the last frame of a video and download audio and video from youtube within comfyUI"
"description": "A node suite for downloading audio and video from youtube as we all sevral useful video utilits such as a final frame selector and a node that merges two videos into one."
},
{
"author": "robtl2",
@ -16944,6 +16943,16 @@
"install_type": "git-clone",
"description": "A ComfyUI custom node for image compression that supports multiple compression formats and parameter adjustments."
},
{
"author": "liuqianhonga",
"title": "ComfyUI-Html2Image",
"reference": "https://github.com/liuqianhonga/ComfyUI-Html2Image",
"files": [
"https://github.com/liuqianhonga/ComfyUI-Html2Image"
],
"install_type": "git-clone",
"description": "NODES:Webpage Screenshot, Camera Watermark"
},
{
"author": "duhaifeng",
"title": "ComfyUI-BiRefNet-lite",
@ -16966,7 +16975,7 @@
},
{
"author": "tanglup",
"title": "Comfyui-Ycnode",
"title": "Comfyui-Ycanvas",
"reference": "https://github.com/tanglup/Comfyui-Ycnode",
"files": [
"https://github.com/tanglup/Comfyui-Ycnode"
@ -17130,6 +17139,27 @@
"install_type": "git-clone",
"description": "ComfyUI nodes for LTXVideo model."
},
{
"author": "Kai Duehrkop",
"title": "Advanced Reflux control",
"id": "advancedRefluxControl",
"reference": "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl",
"files": [
"https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl"
],
"install_type": "git-clone",
"description": "This extension offers a new Apply-Style node for Reflux that allows for changing the influence of the conditioning image on the final outcome. This effectively allows for changing the style or content of an image using a prompt while using Reflux."
},
{
"author": "ramesh-x90",
"title": "ComfyUI_pyannote",
"reference": "https://github.com/ramesh-x90/ComfyUI_pyannote",
"files": [
"https://github.com/ramesh-x90/ComfyUI_pyannote"
],
"install_type": "git-clone",
"description": "This repository provides custom nodes for ComfyUI designed to process audio files, performing speaker diarization and integrating speaker data into whisper-transcribed segments. These nodes utilize the PyAnnote library for speaker identification and pandas for efficient data handling."
},

View File

@ -2297,8 +2297,8 @@
"https://github.com/DoctorDiffusion/ComfyUI-MediaMixer": [
[
"FinalFrameSelector",
"PromptJournal",
"VideoMerge",
"VideoPromptGenerator",
"YouTubeVideoDownloader"
],
{
@ -2314,20 +2314,6 @@
"title_aux": "Schedulizer"
}
],
"https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes": [
[
"ApplySerialPrompter",
"ImageSizer",
"SerialPrompter"
],
{
"author": "CRE8IT GmbH",
"description": "This extension offers various nodes.",
"nickname": "cre8Nodes",
"title": "cr8SerialPrompter",
"title_aux": "ComfyUI-Cre8it-Nodes"
}
],
"https://github.com/DrMWeigand/ComfyUI-StereoVision": [
[
"AutostereogramGenerator",
@ -2611,21 +2597,6 @@
"title_aux": "ComfyUI Frame Interpolation"
}
],
"https://github.com/Fannovel16/ComfyUI-Loopchain": [
[
"EmptyLatentImageLoop",
"FolderToImageStorage",
"ImageStorageExportLoop",
"ImageStorageImport",
"ImageStorageReset",
"LatentStorageExportLoop",
"LatentStorageImport",
"LatentStorageReset"
],
{
"title_aux": "ComfyUI Loopchain"
}
],
"https://github.com/Fannovel16/ComfyUI-MagickWand": [
[
"ImageMagick Adaptive Blur",
@ -6537,6 +6508,14 @@
"title_aux": "Shibiko AI ComfyUI Tools"
}
],
"https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust": [
[
"ApplyStyleModelAdjust"
],
{
"title_aux": "Apply Style Model Adjust for ComfyUI"
}
],
"https://github.com/ShmuelRonen/ComfyUI-AstralAnimator": [
[
"AstralAnimator"
@ -6739,6 +6718,7 @@
"Multiline Concatenate Strings",
"Output Filename",
"Prompt Cache",
"Prompt X Lora",
"Range(Num Steps) - Float",
"Range(Num Steps) - Int",
"Range(Step) - Float",
@ -7808,6 +7788,7 @@
"VrchChannelX4OSCControlNode",
"VrchFloatKeyControlNode",
"VrchFloatOSCControlNode",
"VrchImageFlipBookWebViewerNode",
"VrchImageSaverNode",
"VrchImageSwitchOSCControlNode",
"VrchImageWebViewerNode",
@ -8855,6 +8836,7 @@
"CustomLatentImageSimple",
"FloatSlider-NYJY",
"JoyCaption",
"JoyCaptionAlpha1Online",
"JoyCaptionAlpha2Online",
"JoyTag",
"Translate"
@ -9130,6 +9112,8 @@
"https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [
[
"InputText",
"OllamaCaptionerExtraOptions",
"OllamaImageCaptioner",
"OllamaImageDescriber",
"OllamaTextDescriber",
"ShowText",
@ -9325,10 +9309,14 @@
"https://github.com/arcum42/ComfyUI_SageUtils": [
[
"Sage_CheckpointLoaderSimple",
"Sage_CollectKeywordsFromLoraStack",
"Sage_ConditioningZeroOut",
"Sage_ConstructMetadata",
"Sage_DualCLIPTextEncode",
"Sage_GetFileHash",
"Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash",
"Sage_JoinText",
"Sage_KSampler",
"Sage_LoraStack",
"Sage_LoraStackDebugString",
@ -9363,6 +9351,7 @@
"https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [
[
"AdaptiveGuidance",
"AdaptiveProjectedGuidance",
"PerpNegAdaptiveGuidanceGuider"
],
{
@ -9796,6 +9785,7 @@
"BlehDisableNoise",
"BlehDiscardPenultimateSigma",
"BlehForceSeedSampler",
"BlehGlobalSageAttention",
"BlehHyperTile",
"BlehInsaneChainSampler",
"BlehLatentOps",
@ -9803,6 +9793,7 @@
"BlehModelPatchConditional",
"BlehPlug",
"BlehRefinerAfter",
"BlehSageAttentionSampler",
"BlehSetSamplerPreset"
],
{
@ -11396,6 +11387,7 @@
"DualCFGGuider",
"DualCLIPLoader",
"EmptyImage",
"EmptyLTXVLatentVideo",
"EmptyLatentAudio",
"EmptyLatentImage",
"EmptyMochiLatentVideo",
@ -11438,6 +11430,9 @@
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LTXVConditioning",
"LTXVImgToVideo",
"LTXVScheduler",
"LaplaceScheduler",
"LatentAdd",
"LatentApplyOperation",
@ -11484,6 +11479,7 @@
"ModelSamplingContinuousV",
"ModelSamplingDiscrete",
"ModelSamplingFlux",
"ModelSamplingLTXV",
"ModelSamplingSD3",
"ModelSamplingStableCascade",
"ModelSave",
@ -12073,6 +12069,7 @@
"D2 XY Grid Image",
"D2 XY List To Plot",
"D2 XY Lora List",
"D2 XY Model List",
"D2 XY Plot",
"D2 XY Prompt SR",
"D2 XY Prompt SR2",
@ -13138,6 +13135,7 @@
"FL_FractalKSampler",
"FL_GPT_Vision",
"FL_Glitch",
"FL_GoogleDriveDownloader",
"FL_GradGenerator",
"FL_HFHubModelUploader",
"FL_HF_Character",
@ -13170,6 +13168,8 @@
"FL_Math",
"FL_MirrorAndAppendCaptions",
"FL_NFTGenerator",
"FL_NodeLoader",
"FL_NodePackLoader",
"FL_OllamaCaptioner",
"FL_PDFImageExtractor",
"FL_PDFLoader",
@ -14443,6 +14443,7 @@
"load_int",
"load_keyword",
"load_llm_lora",
"load_memo",
"load_name",
"load_openai_ebd",
"load_persona",
@ -14478,6 +14479,7 @@
"red_book_text_persona",
"replace_string",
"save_ebd_database",
"save_memo",
"save_openai_ebd",
"savepersona",
"searxng_tool",
@ -15803,6 +15805,16 @@
"title_aux": "ComfyUI-YOLO"
}
],
"https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl": [
[
"StyleModelApplyAdvanced",
"StyleModelApplyInterpolation",
"StyleModelApplySimple"
],
{
"title_aux": "Advanced Reflux control"
}
],
"https://github.com/kale4eat/ComfyUI-path-util": [
[
"path_util_PathAbspath",
@ -16365,6 +16377,7 @@
"StyleModelApplyAdvanced",
"Superprompt",
"TorchCompileControlNet",
"TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced",
"TorchCompileVAE",
"TransitionImagesInBatch",
@ -17099,6 +17112,15 @@
"title_aux": "comfyui-remote-tools"
}
],
"https://github.com/liuqianhonga/ComfyUI-Html2Image": [
[
"CameraWatermark",
"WebpageScreenshot"
],
{
"title_aux": "ComfyUI-Html2Image"
}
],
"https://github.com/liuqianhonga/ComfyUI-Image-Compressor": [
[
"ImageCompressor"
@ -17396,6 +17418,22 @@
"title_aux": "ComfyUI-InversedNoise"
}
],
"https://github.com/logtd/ComfyUI-LTXTricks": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXForwardModelSamplingPred",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXTricks"
}
],
"https://github.com/logtd/ComfyUI-MochiEdit": [
[
"MochiPrepareSigmas",
@ -17993,6 +18031,8 @@
[
"LF_BlurImages",
"LF_Boolean",
"LF_Brightness",
"LF_Brush",
"LF_CharacterImpersonator",
"LF_CheckpointSelector",
"LF_CivitAIMetadataSetup",
@ -18012,6 +18052,7 @@
"LF_ExtractPromptFromLoraTag",
"LF_ExtractString",
"LF_Float",
"LF_GaussianBlur",
"LF_GetRandomKeyFromJSON",
"LF_GetValueFromJSON",
"LF_ImageClassifier",
@ -19761,6 +19802,15 @@
"title_aux": "queuetools"
}
],
"https://github.com/ramesh-x90/ComfyUI_pyannote": [
[
"Speaker Diarization",
"Whisper Segments to Speaker"
],
{
"title_aux": "ComfyUI_pyannote"
}
],
"https://github.com/ramyma/A8R8_ComfyUI_nodes": [
[
"AttentionCouple",
@ -21766,10 +21816,10 @@
],
"https://github.com/tanglup/Comfyui-Ycnode": [
[
"CanvasView"
"CanvasNode"
],
{
"title_aux": "Comfyui-Ycnode"
"title_aux": "Comfyui-Ycanvas"
}
],
"https://github.com/teward/ComfyUI-Helper-Nodes": [

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ sys.path.append(glob_path)
import cm_global
from manager_util import *
version = [2, 51, 9]
version = [2, 52]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
@ -408,6 +408,7 @@ def execute_install_script(url, repo_path, lazy_mode=False, instant_execution=Fa
else:
if os.path.exists(requirements_path):
print("Install: pip packages")
pip_fixer = PIPFixer(get_installed_packages())
with open(requirements_path, "r") as requirements_file:
for line in requirements_file:
#handle comments
@ -430,6 +431,8 @@ def execute_install_script(url, repo_path, lazy_mode=False, instant_execution=Fa
if package_name.strip() != "" and not package_name.startswith('#'):
try_install_script(url, repo_path, install_cmd, instant_execution=instant_execution)
pip_fixer.fix_broken()
if os.path.exists(install_script_path):
print(f"Install: install script")
install_cmd = [sys.executable, "install.py"]

View File

@ -1216,6 +1216,11 @@ def restart(self):
exit(0)
print(f"\nRestarting... [Legacy Mode]\n\n")
sys_argv = sys.argv.copy()
if '--windows-standalone-build' in sys_argv:
sys_argv.remove('--windows-standalone-build')
if sys.platform.startswith('win32'):
return os.execv(sys.executable, ['"' + sys.executable + '"', '"' + sys.argv[0] + '"'] + sys.argv[1:])
else:

View File

@ -1,3 +1,6 @@
import subprocess
import sys
# DON'T USE StrictVersion - cannot handle pre_release version
# try:
# from distutils.version import StrictVersion
@ -62,3 +65,150 @@ class StrictVersion:
def __ne__(self, other):
return not self == other
pip_map = None
def get_installed_packages(renew=False):
global pip_map
if renew or pip_map is None:
try:
result = subprocess.check_output([sys.executable, '-m', 'pip', 'list'], universal_newlines=True)
pip_map = {}
for line in result.split('\n'):
x = line.strip()
if x:
y = line.split()
if y[0] == 'Package' or y[0].startswith('-'):
continue
pip_map[y[0]] = y[1]
except subprocess.CalledProcessError as e:
print(f"[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
return set()
return pip_map
def clear_pip_cache():
global pip_map
pip_map = None
torch_torchvision_version_map = {
'2.5.1': '0.20.1',
'2.5.0': '0.20.0',
'2.4.1': '0.19.1',
'2.4.0': '0.19.0',
'2.3.1': '0.18.1',
'2.3.0': '0.18.0',
'2.2.2': '0.17.2',
'2.2.1': '0.17.1',
'2.2.0': '0.17.0',
'2.1.2': '0.16.2',
'2.1.1': '0.16.1',
'2.1.0': '0.16.0',
'2.0.1': '0.15.2',
'2.0.0': '0.15.1',
}
class PIPFixer:
def __init__(self, prev_pip_versions):
self.prev_pip_versions = { **prev_pip_versions }
def torch_rollback(self):
spec = self.prev_pip_versions['torch'].split('+')
if len(spec) > 0:
platform = spec[1]
else:
cmd = [sys.executable, '-m', 'pip', 'install', '--force', 'torch', 'torchvision', 'torchaudio']
subprocess.check_output(cmd, universal_newlines=True)
print(cmd)
return
torch_ver = StrictVersion(spec[0])
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
torchvision_ver = torch_torchvision_version_map.get(torch_ver)
if torchvision_ver is None:
cmd = [sys.executable, '-m', 'pip', 'install', '--pre',
'torch', 'torchvision', 'torchaudio',
'--index-url', f"https://download.pytorch.org/whl/nightly/{platform}"]
print("[manager-core] restore PyTorch to nightly version")
else:
cmd = [sys.executable, '-m', 'pip', 'install',
f'torch=={torch_ver}', f'torchvision=={torchvision_ver}', f"torchaudio=={torch_ver}",
'--index-url', f"https://download.pytorch.org/whl/{platform}"]
print(f"[manager-core] restore PyTorch to {torch_ver}+{platform}")
subprocess.check_output(cmd, universal_newlines=True)
def fix_broken(self):
new_pip_versions = get_installed_packages(True)
# remove `comfy` python package
try:
if 'comfy' in new_pip_versions:
cmd = [sys.executable, '-m', 'pip', 'uninstall', 'comfy']
subprocess.check_output(cmd, universal_newlines=True)
print(f"[manager-core] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
except Exception as e:
print(f"[manager-core] Failed to uninstall `comfy` python package")
print(e)
# fix torch - reinstall torch packages if version is changed
try:
if self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
self.torch_rollback()
except Exception as e:
print(f"[manager-core] Failed to restore PyTorch")
print(e)
# fix opencv
try:
ocp = new_pip_versions.get('opencv-contrib-python')
ocph = new_pip_versions.get('opencv-contrib-python-headless')
op = new_pip_versions.get('opencv-python')
oph = new_pip_versions.get('opencv-python-headless')
versions = [ocp, ocph, op, oph]
versions = [StrictVersion(x) for x in versions if x is not None]
versions.sort(reverse=True)
if len(versions) > 0:
# upgrade to maximum version
targets = []
cur = versions[0]
if ocp is not None and StrictVersion(ocp) != cur:
targets.append('opencv-contrib-python')
if ocph is not None and StrictVersion(ocph) != cur:
targets.append('opencv-contrib-python-headless')
if op is not None and StrictVersion(op) != cur:
targets.append('opencv-python')
if oph is not None and StrictVersion(oph) != cur:
targets.append('opencv-python-headless')
if len(targets) > 0:
for x in targets:
cmd = [sys.executable, '-m', 'pip', 'install', f"{x}=={versions[0].version_string}"]
subprocess.check_output(cmd, universal_newlines=True)
print(f"[manager-core] 'opencv' dependencies were fixed: {targets}")
except Exception as e:
print(f"[manager-core] Failed to restore opencv")
print(e)
# fix numpy
try:
np = new_pip_versions.get('numpy')
if np is not None:
if StrictVersion(np) >= StrictVersion('2'):
subprocess.check_output([sys.executable, '-m', 'pip', 'install', f"numpy<2"], universal_newlines=True)
except Exception as e:
print(f"[manager-core] Failed to restore numpy")
print(e)

View File

@ -241,6 +241,7 @@
],
"https://github.com/AIFSH/UtilNodes-ComfyUI": [
[
"GetRGBEmptyImgae",
"LoadVideo",
"PreViewVideo",
"PromptTextNode"
@ -416,14 +417,6 @@
"title_aux": "ComfyUI-LogicGates"
}
],
"https://github.com/Black-Lioness/ComfyUI-FilenameGenerator": [
[
"FilenameGenerator"
],
{
"title_aux": "Filename Generator Node for ComfyUI [UNSAFE]"
}
],
"https://github.com/BlueDangerX/ComfyUI-BDXNodes": [
[
"BDXTestInt",
@ -584,8 +577,8 @@
"https://github.com/DoctorDiffusion/Doctor-Tools": [
[
"FinalFrameSelector",
"PromptJournal",
"VideoMerge",
"VideoPromptGenerator",
"YouTubeVideoDownloader"
],
{
@ -1178,6 +1171,14 @@
"title_aux": "Comfyui_CXH_CRM"
}
],
"https://github.com/StartHua/Comfyui_Flux_Style_Ctr": [
[
"CXH_StyleModelApply"
],
{
"title_aux": "Comfyui_Flux_Style_Ctr [WIP]"
}
],
"https://github.com/T8star1984/comfyui-purgevram": [
[
"PurgeVRAM"
@ -1751,6 +1752,7 @@
"DualCFGGuider",
"DualCLIPLoader",
"EmptyImage",
"EmptyLTXVLatentVideo",
"EmptyLatentAudio",
"EmptyLatentImage",
"EmptyMochiLatentVideo",
@ -1793,6 +1795,9 @@
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LTXVConditioning",
"LTXVImgToVideo",
"LTXVScheduler",
"LaplaceScheduler",
"LatentAdd",
"LatentApplyOperation",
@ -1839,6 +1844,7 @@
"ModelSamplingContinuousV",
"ModelSamplingDiscrete",
"ModelSamplingFlux",
"ModelSamplingLTXV",
"ModelSamplingSD3",
"ModelSamplingStableCascade",
"ModelSave",
@ -2406,6 +2412,8 @@
"KillMeNode",
"LinkMasterNode",
"OkayBuddyNode",
"OutlineRealNode",
"OutlineStandardNode",
"PixelPerfectResolution",
"SuckerPunch",
"UWU_Preprocessor",
@ -3681,6 +3689,14 @@
"title_aux": "ComfyUI-Dist [WIP]"
}
],
"https://github.com/vahidzxc/ComfyUI-My-Handy-Nodes": [
[
"VahCropImage"
],
{
"title_aux": "ComfyUI-My-Handy-Nodes"
}
],
"https://github.com/void15700/VoidCustomNodes": [
[
"Prompt Parser",

File diff suppressed because it is too large Load Diff

View File

@ -9,6 +9,28 @@
"description": "If you see this message, your ComfyUI-Manager is outdated.\nLegacy channel provides only the list of the deprecated nodes. If you want to find the complete node list, please go to the Default channel."
},
{
"author": "Fannovel16",
"title": "ComfyUI Loopchain [DEPRECATED]",
"id": "loopchain",
"reference": "https://github.com/Fannovel16/ComfyUI-Loopchain",
"files": [
"https://github.com/Fannovel16/ComfyUI-Loopchain"
],
"install_type": "git-clone",
"description": "A collection of nodes which can be useful for animation in ComfyUI. The main focus of this extension is implementing a mechanism called loopchain. A loopchain in this case is the chain of nodes only executed repeatly in the workflow. If a node chain contains a loop node from this extension, it will become a loop chain."
},
{
"author": "DonBaronFactory",
"title": "ComfyUI-Cre8it-Nodes [DEPRECATED]",
"reference": "https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes",
"files": [
"https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes"
],
"install_type": "git-clone",
"description": "Nodes:CRE8IT Serial Prompter, CRE8IT Apply Serial Prompter, CRE8IT Image Sizer. A few simple nodes to facilitate working wiht ComfyUI Workflows"
},
{
"author": "thecooltechguy",
"title": "ComfyUI-ComfyRun [DEPRECATED/UNSAFE]",

View File

@ -10,6 +10,57 @@
{
"author": "logtd",
"title": "ComfyUI-LTXTricks",
"reference": "https://github.com/logtd/ComfyUI-LTXTricks",
"files": [
"https://github.com/logtd/ComfyUI-LTXTricks"
],
"install_type": "git-clone",
"description": "A set of nodes that provide additional controls for the LTX Video model"
},
{
"author": "Kai Duehrkop",
"title": "Advanced Reflux control",
"id": "advancedRefluxControl",
"reference": "https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl",
"files": [
"https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl"
],
"install_type": "git-clone",
"description": "This extension offers a new Apply-Style node for Reflux that allows for changing the influence of the conditioning image on the final outcome. This effectively allows for changing the style or content of an image using a prompt while using Reflux."
},
{
"author": "ramesh-x90",
"title": "ComfyUI_pyannote",
"reference": "https://github.com/ramesh-x90/ComfyUI_pyannote",
"files": [
"https://github.com/ramesh-x90/ComfyUI_pyannote"
],
"install_type": "git-clone",
"description": "This repository provides custom nodes for ComfyUI designed to process audio files, performing speaker diarization and integrating speaker data into whisper-transcribed segments. These nodes utilize the PyAnnote library for speaker identification and pandas for efficient data handling."
},
{
"author": "ShmuelRonen",
"title": "Apply Style Model Adjust for ComfyUI",
"reference": "https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust"
],
"install_type": "git-clone",
"description": "A custom node that provides enhanced control over style transfer balance when using FLUX style models in ComfyUI. This node offers better control over the influence of text prompts versus style reference images."
},
{
"author": "liuqianhonga",
"title": "ComfyUI-Html2Image",
"reference": "https://github.com/liuqianhonga/ComfyUI-Html2Image",
"files": [
"https://github.com/liuqianhonga/ComfyUI-Html2Image"
],
"install_type": "git-clone",
"description": "NODES:Webpage Screenshot, Camera Watermark"
},
{
"author": "lightricks",
"title": "ComfyUI-LTXVideo",
@ -447,7 +498,7 @@
"https://github.com/DoctorDiffusion/ComfyUI-MediaMixer"
],
"install_type": "git-clone",
"description": "Nodes:Youtube Downloader, Video Merge, Final Frame Selector. Combine two videos into one, output the last frame of a video and download audio and video from youtube within comfyUI"
"description": "A node suite for downloading audio and video from youtube as we all sevral useful video utilits such as a final frame selector and a node that merges two videos into one."
},
{
"author": "AIFSH",
@ -641,59 +692,6 @@
],
"install_type": "git-clone",
"description": "ComfyUI Hunyuan3D-1-wrapper is a custom node that allows you to run [a/Tencent/Hunyuan3D-1](https://github.com/Tencent/Hunyuan3D-1) in ComfyUI as a wrapper."
},
{
"author": "kijai",
"title": "ComfyUI-GIMM-VFI",
"reference": "https://github.com/kijai/ComfyUI-GIMM-VFI",
"files": [
"https://github.com/kijai/ComfyUI-GIMM-VFI"
],
"install_type": "git-clone",
"description": "ComfyUI nodes to use GIMM-VFI frame interpolation"
},
{
"author": "w00dycomfyuirun",
"title": "ComfyUI_Appstore",
"id": "ComfyUI_Appstore",
"reference": "https://github.com/ronaldzgithub/ComfyUI_Appstore",
"files": [
"https://github.com/ronaldzgithub/ComfyUI_Appstore"
],
"install_type": "git-clone",
"description": "ComfyUI_Appstore, a tool that converts ComfyUI workflows into web apps on huaxiaobao.net with one click, and supports payments, like ComfyUI_Bxb (Bxb) does. Providing a way for the comfyui authors to get profit from."
},
{
"author": "kycg",
"title": "Kw_Json_Lora_CivitAIDownloader",
"reference": "https://github.com/kycg/comfyui-Lora-auto-downloader",
"files": [
"https://github.com/kycg/comfyui-Lora-auto-downloader"
],
"description": "This tool allows you to download models from CivitAI based on a JSON configuration that defines LORA and checkpoint models. It uses token-based authentication to download files from specified URLs and saves them to specified directories. based on CivitAIDownloader",
"install_type": "git-clone"
},
{
"author": "basix",
"title": "Basix Image Filters",
"id": "basix_image_filters",
"reference": "https://github.com/maludwig/basix_image_filters",
"files": [
"https://github.com/maludwig/basix_image_filters"
],
"install_type": "git-clone",
"description": "A handful of image filters for ComfyUI (darken, lighten, levels, saturate, hue)"
},
{
"author": "nkrcrft",
"title": "ComfyUI-RecraftAI",
"id": "recraftai",
"reference": "https://github.com/recraft-ai/ComfyUI-RecraftAI",
"files": [
"https://github.com/recraft-ai/ComfyUI-RecraftAI"
],
"install_type": "git-clone",
"description": "Recraft AI official ComfyUI custom nodes. Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, images in a wide list of styles, including custom brand styles."
}
]
}

View File

@ -2297,8 +2297,8 @@
"https://github.com/DoctorDiffusion/ComfyUI-MediaMixer": [
[
"FinalFrameSelector",
"PromptJournal",
"VideoMerge",
"VideoPromptGenerator",
"YouTubeVideoDownloader"
],
{
@ -2314,20 +2314,6 @@
"title_aux": "Schedulizer"
}
],
"https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes": [
[
"ApplySerialPrompter",
"ImageSizer",
"SerialPrompter"
],
{
"author": "CRE8IT GmbH",
"description": "This extension offers various nodes.",
"nickname": "cre8Nodes",
"title": "cr8SerialPrompter",
"title_aux": "ComfyUI-Cre8it-Nodes"
}
],
"https://github.com/DrMWeigand/ComfyUI-StereoVision": [
[
"AutostereogramGenerator",
@ -2611,21 +2597,6 @@
"title_aux": "ComfyUI Frame Interpolation"
}
],
"https://github.com/Fannovel16/ComfyUI-Loopchain": [
[
"EmptyLatentImageLoop",
"FolderToImageStorage",
"ImageStorageExportLoop",
"ImageStorageImport",
"ImageStorageReset",
"LatentStorageExportLoop",
"LatentStorageImport",
"LatentStorageReset"
],
{
"title_aux": "ComfyUI Loopchain"
}
],
"https://github.com/Fannovel16/ComfyUI-MagickWand": [
[
"ImageMagick Adaptive Blur",
@ -6537,6 +6508,14 @@
"title_aux": "Shibiko AI ComfyUI Tools"
}
],
"https://github.com/ShmuelRonen/ComfyUI-Apply_Style_Model_Adjust": [
[
"ApplyStyleModelAdjust"
],
{
"title_aux": "Apply Style Model Adjust for ComfyUI"
}
],
"https://github.com/ShmuelRonen/ComfyUI-AstralAnimator": [
[
"AstralAnimator"
@ -6739,6 +6718,7 @@
"Multiline Concatenate Strings",
"Output Filename",
"Prompt Cache",
"Prompt X Lora",
"Range(Num Steps) - Float",
"Range(Num Steps) - Int",
"Range(Step) - Float",
@ -7808,6 +7788,7 @@
"VrchChannelX4OSCControlNode",
"VrchFloatKeyControlNode",
"VrchFloatOSCControlNode",
"VrchImageFlipBookWebViewerNode",
"VrchImageSaverNode",
"VrchImageSwitchOSCControlNode",
"VrchImageWebViewerNode",
@ -8855,6 +8836,7 @@
"CustomLatentImageSimple",
"FloatSlider-NYJY",
"JoyCaption",
"JoyCaptionAlpha1Online",
"JoyCaptionAlpha2Online",
"JoyTag",
"Translate"
@ -9130,6 +9112,8 @@
"https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [
[
"InputText",
"OllamaCaptionerExtraOptions",
"OllamaImageCaptioner",
"OllamaImageDescriber",
"OllamaTextDescriber",
"ShowText",
@ -9325,10 +9309,14 @@
"https://github.com/arcum42/ComfyUI_SageUtils": [
[
"Sage_CheckpointLoaderSimple",
"Sage_CollectKeywordsFromLoraStack",
"Sage_ConditioningZeroOut",
"Sage_ConstructMetadata",
"Sage_DualCLIPTextEncode",
"Sage_GetFileHash",
"Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash",
"Sage_JoinText",
"Sage_KSampler",
"Sage_LoraStack",
"Sage_LoraStackDebugString",
@ -9363,6 +9351,7 @@
"https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [
[
"AdaptiveGuidance",
"AdaptiveProjectedGuidance",
"PerpNegAdaptiveGuidanceGuider"
],
{
@ -9796,6 +9785,7 @@
"BlehDisableNoise",
"BlehDiscardPenultimateSigma",
"BlehForceSeedSampler",
"BlehGlobalSageAttention",
"BlehHyperTile",
"BlehInsaneChainSampler",
"BlehLatentOps",
@ -9803,6 +9793,7 @@
"BlehModelPatchConditional",
"BlehPlug",
"BlehRefinerAfter",
"BlehSageAttentionSampler",
"BlehSetSamplerPreset"
],
{
@ -11396,6 +11387,7 @@
"DualCFGGuider",
"DualCLIPLoader",
"EmptyImage",
"EmptyLTXVLatentVideo",
"EmptyLatentAudio",
"EmptyLatentImage",
"EmptyMochiLatentVideo",
@ -11438,6 +11430,9 @@
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LTXVConditioning",
"LTXVImgToVideo",
"LTXVScheduler",
"LaplaceScheduler",
"LatentAdd",
"LatentApplyOperation",
@ -11484,6 +11479,7 @@
"ModelSamplingContinuousV",
"ModelSamplingDiscrete",
"ModelSamplingFlux",
"ModelSamplingLTXV",
"ModelSamplingSD3",
"ModelSamplingStableCascade",
"ModelSave",
@ -12073,6 +12069,7 @@
"D2 XY Grid Image",
"D2 XY List To Plot",
"D2 XY Lora List",
"D2 XY Model List",
"D2 XY Plot",
"D2 XY Prompt SR",
"D2 XY Prompt SR2",
@ -13138,6 +13135,7 @@
"FL_FractalKSampler",
"FL_GPT_Vision",
"FL_Glitch",
"FL_GoogleDriveDownloader",
"FL_GradGenerator",
"FL_HFHubModelUploader",
"FL_HF_Character",
@ -13170,6 +13168,8 @@
"FL_Math",
"FL_MirrorAndAppendCaptions",
"FL_NFTGenerator",
"FL_NodeLoader",
"FL_NodePackLoader",
"FL_OllamaCaptioner",
"FL_PDFImageExtractor",
"FL_PDFLoader",
@ -14443,6 +14443,7 @@
"load_int",
"load_keyword",
"load_llm_lora",
"load_memo",
"load_name",
"load_openai_ebd",
"load_persona",
@ -14478,6 +14479,7 @@
"red_book_text_persona",
"replace_string",
"save_ebd_database",
"save_memo",
"save_openai_ebd",
"savepersona",
"searxng_tool",
@ -15803,6 +15805,16 @@
"title_aux": "ComfyUI-YOLO"
}
],
"https://github.com/kaibioinfo/ComfyUI_AdvancedRefluxControl": [
[
"StyleModelApplyAdvanced",
"StyleModelApplyInterpolation",
"StyleModelApplySimple"
],
{
"title_aux": "Advanced Reflux control"
}
],
"https://github.com/kale4eat/ComfyUI-path-util": [
[
"path_util_PathAbspath",
@ -16365,6 +16377,7 @@
"StyleModelApplyAdvanced",
"Superprompt",
"TorchCompileControlNet",
"TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced",
"TorchCompileVAE",
"TransitionImagesInBatch",
@ -17099,6 +17112,15 @@
"title_aux": "comfyui-remote-tools"
}
],
"https://github.com/liuqianhonga/ComfyUI-Html2Image": [
[
"CameraWatermark",
"WebpageScreenshot"
],
{
"title_aux": "ComfyUI-Html2Image"
}
],
"https://github.com/liuqianhonga/ComfyUI-Image-Compressor": [
[
"ImageCompressor"
@ -17396,6 +17418,22 @@
"title_aux": "ComfyUI-InversedNoise"
}
],
"https://github.com/logtd/ComfyUI-LTXTricks": [
[
"AddLatentGuide",
"LTXAttentioOverride",
"LTXAttentionBank",
"LTXForwardModelSamplingPred",
"LTXPrepareAttnInjections",
"LTXRFForwardODESampler",
"LTXRFReverseODESampler",
"LTXReverseModelSamplingPred",
"ModifyLTXModel"
],
{
"title_aux": "ComfyUI-LTXTricks"
}
],
"https://github.com/logtd/ComfyUI-MochiEdit": [
[
"MochiPrepareSigmas",
@ -17993,6 +18031,8 @@
[
"LF_BlurImages",
"LF_Boolean",
"LF_Brightness",
"LF_Brush",
"LF_CharacterImpersonator",
"LF_CheckpointSelector",
"LF_CivitAIMetadataSetup",
@ -18012,6 +18052,7 @@
"LF_ExtractPromptFromLoraTag",
"LF_ExtractString",
"LF_Float",
"LF_GaussianBlur",
"LF_GetRandomKeyFromJSON",
"LF_GetValueFromJSON",
"LF_ImageClassifier",
@ -19761,6 +19802,15 @@
"title_aux": "queuetools"
}
],
"https://github.com/ramesh-x90/ComfyUI_pyannote": [
[
"Speaker Diarization",
"Whisper Segments to Speaker"
],
{
"title_aux": "ComfyUI_pyannote"
}
],
"https://github.com/ramyma/A8R8_ComfyUI_nodes": [
[
"AttentionCouple",
@ -21766,10 +21816,10 @@
],
"https://github.com/tanglup/Comfyui-Ycnode": [
[
"CanvasView"
"CanvasNode"
],
{
"title_aux": "Comfyui-Ycnode"
"title_aux": "Comfyui-Ycanvas"
}
],
"https://github.com/teward/ComfyUI-Helper-Nodes": [

View File

@ -385,30 +385,7 @@ check_bypass_ssl()
# Perform install
processed_install = set()
script_list_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "startup-scripts", "install-scripts.txt")
pip_map = None
def get_installed_packages():
global pip_map
if pip_map is None:
try:
result = subprocess.check_output([sys.executable, '-m', 'pip', 'list'], universal_newlines=True)
pip_map = {}
for line in result.split('\n'):
x = line.strip()
if x:
y = line.split()
if y[0] == 'Package' or y[0].startswith('-'):
continue
pip_map[y[0]] = y[1]
except subprocess.CalledProcessError as e:
print(f"[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.")
return set()
return pip_map
pip_fixer = PIPFixer(get_installed_packages())
def is_installed(name):
@ -620,8 +597,11 @@ if os.path.exists(script_list_path):
print("\n[ComfyUI-Manager] Startup script completed.")
print("#######################################################################\n")
pip_fixer.fix_broken()
del processed_install
del pip_map
del pip_fixer
clear_pip_cache()
def check_windows_event_loop_policy():

View File

@ -1,7 +1,7 @@
[project]
name = "comfyui-manager"
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
version = "2.51.9"
version = "2.52"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]