Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4227b17e5 | ||
|
|
7538169251 | ||
|
|
31e300e4e8 | ||
|
|
599bf78f20 | ||
|
|
f53fdb8d7a | ||
|
|
3b4bfeab22 | ||
|
|
8c1f828c1f | ||
|
|
f896755a31 | ||
|
|
e406f8be81 | ||
|
|
84107d2b65 | ||
|
|
d890984c70 | ||
|
|
72e4c84f8a | ||
|
|
acd41d985c | ||
|
|
1312657aca | ||
|
|
a502bb9529 | ||
|
|
5947dee9f9 | ||
|
|
e68d59098f | ||
|
|
61efd60681 | ||
|
|
d3654b2ee4 | ||
|
|
ef943a588d | ||
|
|
8c6ebc665d | ||
|
|
2d2df3fc2c | ||
|
|
958ddcb49c | ||
|
|
5e9e988a96 | ||
|
|
34f3409f9b | ||
|
|
49c548494e | ||
|
|
7ba41fbb7d |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -12,4 +12,6 @@ matrix_auth
|
||||
channels.list
|
||||
comfyworkflows_sharekey
|
||||
github-stats-cache.json
|
||||
pip_overrides.json
|
||||
pip_overrides.json
|
||||
*.json
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
||||
|
||||
if not os.path.exists(cli_mode_flag):
|
||||
from .glob import manager_server
|
||||
from .glob import share_3rdparty
|
||||
WEB_DIRECTORY = "js"
|
||||
else:
|
||||
print(f"\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")
|
||||
|
||||
@@ -35,6 +35,7 @@ restore_snapshot_path = os.path.join(startup_script_path, "restore-snapshot.json
|
||||
pip_overrides_path = os.path.join(comfyui_manager_path, "pip_overrides.json")
|
||||
git_script_path = os.path.join(comfyui_manager_path, "git_helper.py")
|
||||
|
||||
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
|
||||
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||
cm_global.pip_overrides = {}
|
||||
if os.path.exists(pip_overrides_path):
|
||||
|
||||
@@ -415,18 +415,7 @@
|
||||
{
|
||||
"author": "SaltAI",
|
||||
"title": "SaltAI_Language_Toolkit",
|
||||
"id": "saltai-llamaindex",
|
||||
"reference": "https://github.com/get-salt-AI/SaltAI_Language_Toolkit",
|
||||
"files": [
|
||||
"https://github.com/get-salt-AI/SaltAI_Language_Toolkit"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "An implementation of the RAG LlamaIndex with Agents from AutoGen.[w/SaltAI_LlamaIndex is renamed to SaltAI_Language_Toolkit. Please reinstall.]"
|
||||
},
|
||||
{
|
||||
"author": "SaltAI",
|
||||
"title": "SaltAI Language Toolkit",
|
||||
"id": "saltai-langtool",
|
||||
"id": "saltai_language_toolkit",
|
||||
"reference": "https://github.com/get-salt-AI/SaltAI_Language_Toolkit",
|
||||
"files": [
|
||||
"https://github.com/get-salt-AI/SaltAI_Language_Toolkit"
|
||||
@@ -656,6 +645,17 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "This extension aims to add support for various random image diffusion models to ComfyUI."
|
||||
},
|
||||
{
|
||||
"author": "city96",
|
||||
"title": "ComfyUI-GGUF",
|
||||
"id": "gguf",
|
||||
"reference": "https://github.com/city96/ComfyUI-GGUF",
|
||||
"files": [
|
||||
"https://github.com/city96/ComfyUI-GGUF"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "GGUF Quantization support for native ComfyUI models\nThis is currently very much WIP. These custom nodes provide support for model files stored in the GGUF format popularized by llama.cpp.\nWhile quantization wasn't feasible for regular UNET models (conv2d), transformer/DiT models such as flux seem less affected by quantization. This allows running it in much lower bits per weight variable bitrate quants on low-end GPUs."
|
||||
},
|
||||
{
|
||||
"author": "SLAPaper",
|
||||
"title": "ComfyUI-Image-Selector",
|
||||
@@ -1456,7 +1456,7 @@
|
||||
{
|
||||
"author": "asagi4",
|
||||
"title": "Adaptive Guidance for ComfyUI",
|
||||
"id": "asagi-nodes",
|
||||
"id": "comfyui-adaptive-guidance",
|
||||
"reference": "https://github.com/asagi4/ComfyUI-Adaptive-Guidance",
|
||||
"files": [
|
||||
"https://github.com/asagi4/ComfyUI-Adaptive-Guidance"
|
||||
@@ -1595,7 +1595,7 @@
|
||||
"https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes: VHS_VideoCombine. Nodes related to video workflows"
|
||||
"description": "Nodes related to video workflows"
|
||||
},
|
||||
{
|
||||
"author": "Gourieff",
|
||||
@@ -1632,7 +1632,8 @@
|
||||
},
|
||||
{
|
||||
"author": "Chaoses-Ib",
|
||||
"title": "ComfyUI_Ib_CustomNodes","id": "ib-nodes",
|
||||
"title": "ComfyUI_Ib_CustomNodes",
|
||||
"id": "ib-nodes",
|
||||
"reference": "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes",
|
||||
"files": [
|
||||
"https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes"
|
||||
@@ -2761,14 +2762,14 @@
|
||||
},
|
||||
{
|
||||
"author": "chrisgoringe",
|
||||
"title": "Variation seeds",
|
||||
"id": "variation-seed",
|
||||
"reference": "https://github.com/chrisgoringe/cg-noise",
|
||||
"title": "Noise variation and batch noise tools",
|
||||
"id": "cg-noisetools",
|
||||
"reference": "https://github.com/chrisgoringe/cg-noisetools",
|
||||
"files": [
|
||||
"https://github.com/chrisgoringe/cg-noise"
|
||||
"https://github.com/chrisgoringe/cg-noisetools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Adds KSampler custom nodes with variation seed and variation strength."
|
||||
"description": "Nodes to create small variations on noise, to shape noise, and to control noise in batches. Replaces the old 'variation-seed' nodes."
|
||||
},
|
||||
{
|
||||
"author": "chrisgoringe",
|
||||
@@ -3108,6 +3109,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes to use [a/segment-anything-2](https://github.com/facebookresearch/segment-anything-2) for image or video segmentation."
|
||||
},
|
||||
{
|
||||
"author": "kijai",
|
||||
"title": "ComfyUI nodes for ControlNext-SVD v2",
|
||||
"reference": "https://github.com/kijai/ComfyUI-ControlNeXt-SVD",
|
||||
"files": [
|
||||
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "These nodes include my wrapper for the original diffusers pipeline, as well as work in progress native ComfyUI implementation.\nFor the diffusers wrapper models should be downloaded automatically, for the native version you can get the unet [a/here](https://huggingface.co/Kijai/ControlNeXt-SVD-V2-Comfy/blob/main/controlnext-svd_v2-unet-fp16_converted.safetensors)."
|
||||
},
|
||||
{
|
||||
"author": "hhhzzyang",
|
||||
"title": "Comfyui-Lama",
|
||||
@@ -4717,7 +4728,7 @@
|
||||
},
|
||||
{
|
||||
"author": "mmaker",
|
||||
"title": "Color Enhance",
|
||||
"title": "mmaker/Color Enhance",
|
||||
"reference": "https://git.mmaker.moe/mmaker/sd-webui-color-enhance",
|
||||
"files": [
|
||||
"https://git.mmaker.moe/mmaker/sd-webui-color-enhance"
|
||||
@@ -5227,14 +5238,25 @@
|
||||
},
|
||||
{
|
||||
"author": "aiXander",
|
||||
"title": "Various custom nodes by Eden.art",
|
||||
"title": "Eden.art nodesuite",
|
||||
"id": "Eden",
|
||||
"reference": "https://github.com/edenartlab/eden_comfy_pipelines",
|
||||
"files": [
|
||||
"https://github.com/edenartlab/eden_comfy_pipelines"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A set of custom nodes for various purposed, maintained by Eden.art"
|
||||
"description": "Maintained by Eden.art, this is a growing suite of custom nodes for building advanced pipelines."
|
||||
},
|
||||
{
|
||||
"author": "aiXander",
|
||||
"title": "Eden.art LoRa Trainer",
|
||||
"id": "Eden",
|
||||
"reference": "https://github.com/edenartlab/sd-lora-trainer",
|
||||
"files": [
|
||||
"https://github.com/edenartlab/sd-lora-trainer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Maintained by Eden.art, this is a very fast, well tuned trainer for SDXL and SD15"
|
||||
},
|
||||
{
|
||||
"author": "pkpk",
|
||||
@@ -5381,6 +5403,17 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "This is a set of custom nodes for ComfyUI. The nodes utilize the [a/face parsing model](https://huggingface.co/jonathandinu/face-parsing) to provide detailed segmantation of face. To improve face segmantation accuracy, [a/yolov8 face model](https://huggingface.co/Bingsu/adetailer/) is used to first extract face from an image. There are also auxiliary nodes for image and mask processing. A guided filter is also provided for skin smoothing."
|
||||
},
|
||||
{
|
||||
"author": "Ryuukeisyou",
|
||||
"title": "ComfyUI-SyncTalk",
|
||||
"id": "synctalk",
|
||||
"reference": "https://github.com/Ryuukeisyou/ComfyUI-SyncTalk",
|
||||
"files": [
|
||||
"https://github.com/Ryuukeisyou/ComfyUI-SyncTalk"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI implemntation for [a/SyncTalk](https://github.com/ZiqiaoPeng/SyncTalk)"
|
||||
},
|
||||
{
|
||||
"author": "tocubed",
|
||||
"title": "ComfyUI-AudioReactor",
|
||||
@@ -5805,7 +5838,7 @@
|
||||
{
|
||||
"author": "alexopus",
|
||||
"title": "ComfyUI Image Saver",
|
||||
"id": "image-saver",
|
||||
"id": "comfyui-image-saver",
|
||||
"reference": "https://github.com/alexopus/ComfyUI-Image-Saver",
|
||||
"files": [
|
||||
"https://github.com/alexopus/ComfyUI-Image-Saver"
|
||||
@@ -6516,14 +6549,14 @@
|
||||
},
|
||||
{
|
||||
"author": "blepping",
|
||||
"title": "ComfyUI jank HiDiffusion",
|
||||
"title": "comfyui_jankhidiffusion",
|
||||
"id": "jank-hidiffusion",
|
||||
"reference": "https://github.com/blepping/comfyui_jankhidiffusion",
|
||||
"files": [
|
||||
"https://github.com/blepping/comfyui_jankhidiffusion"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Janky experimental attempt at implementing [a/HiDiffusion](https://github.com/megvii-research/HiDiffusion) for ComfyUI."
|
||||
"description": "Janky implementation of [a/HiDiffusion](https://github.com/megvii-research/HiDiffusion) for ComfyUI. Enables generating at resolutions higher than what the model was trained for. Only supports SD 1.x (maybe 2.x) and SDXL."
|
||||
},
|
||||
{
|
||||
"author": "blepping",
|
||||
@@ -6665,6 +6698,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Original project: [a/link](https://github.com/tencent-ailab/PCDMs)\nBased on testing, the author's original images work very well, but using my own images generally requires some luck!"
|
||||
},
|
||||
{
|
||||
"author": "StartHua",
|
||||
"title": "Comfyui_CXH_joy_caption",
|
||||
"reference": "https://github.com/StartHua/Comfyui_CXH_joy_caption",
|
||||
"files": [
|
||||
"https://github.com/StartHua/Comfyui_CXH_joy_caption"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Joy_caption_load, Joy_caption"
|
||||
},
|
||||
{
|
||||
"author": "ricklove",
|
||||
"title": "comfyui-ricklove",
|
||||
@@ -7121,7 +7164,7 @@
|
||||
{
|
||||
"author": "logtd",
|
||||
"title": "ComfyUI-RAVE Attention",
|
||||
"id": "rave",
|
||||
"id": "rave-attn",
|
||||
"reference": "https://github.com/logtd/ComfyUI-RAVE_ATTN",
|
||||
"files": [
|
||||
"https://github.com/logtd/ComfyUI-RAVE_ATTN"
|
||||
@@ -7490,7 +7533,7 @@
|
||||
{
|
||||
"author": "11dogzi",
|
||||
"title": "Comfyui-ergouzi-kaiguan",
|
||||
"id": "ergouzi-nodes",
|
||||
"id": "ergouzi-kaiguan",
|
||||
"reference": "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan",
|
||||
"files": [
|
||||
"https://github.com/11dogzi/Comfyui-ergouzi-kaiguan"
|
||||
@@ -7501,7 +7544,7 @@
|
||||
{
|
||||
"author": "11dogzi",
|
||||
"title": "ComfUI-EGAdapterMadAssistant",
|
||||
"id": "ergouzi-samplers",
|
||||
"id": "madassistant",
|
||||
"reference": "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant",
|
||||
"files": [
|
||||
"https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant"
|
||||
@@ -8084,7 +8127,7 @@
|
||||
{
|
||||
"author": "viperyl",
|
||||
"title": "ComfyUI-BiRefNet",
|
||||
"id": "birefnet",
|
||||
"id": "comfyui-birefnet",
|
||||
"reference": "https://github.com/viperyl/ComfyUI-BiRefNet",
|
||||
"files": [
|
||||
"https://github.com/viperyl/ComfyUI-BiRefNet"
|
||||
@@ -8231,6 +8274,56 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Load image and partially workflow with javascript."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "connect-from-afar",
|
||||
"reference": "https://github.com/shinich39/comfyui-connect-from-afar",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-connect-from-afar"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Connect a new link from out of screen."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-target-search",
|
||||
"reference": "https://github.com/shinich39/comfyui-target-search",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-target-search"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Move canvas to target on dragging connection."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-group-selection",
|
||||
"reference": "https://github.com/shinich39/comfyui-group-selection",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-group-selection"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Create a new group of nodes."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-group-selection",
|
||||
"reference": "https://github.com/shinich39/comfyui-group-selection",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-group-selection"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Create a new group of nodes."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-textarea-keybindings",
|
||||
"reference": "https://github.com/shinich39/comfyui-textarea-keybindings",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-textarea-keybindings"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Add keybindings to textarea."
|
||||
},
|
||||
{
|
||||
"author": "wei30172",
|
||||
"title": "comfygen",
|
||||
@@ -8647,7 +8740,7 @@
|
||||
{
|
||||
"author": "discus0434",
|
||||
"title": "ComfyUI Aesthetic Predictor V2.5",
|
||||
"id": "caching-embeddings",
|
||||
"id": "aesthetic-predictor",
|
||||
"reference": "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5",
|
||||
"files": [
|
||||
"https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5"
|
||||
@@ -9183,6 +9276,17 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "using [a/StreamV2V](https://github.com/Jeff-LiangF/streamv2v) in ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "smthemex",
|
||||
"title": "ComfyUI_MooER",
|
||||
"id": "comfyui_mooer",
|
||||
"reference": "https://github.com/smthemex/ComfyUI_MooER",
|
||||
"files": [
|
||||
"https://github.com/smthemex/ComfyUI_MooER"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "MooER is an LLM-based Speech Recognition and Translation Model from Moore Threads.You can use MooER when install ComfyUI_MooER node"
|
||||
},
|
||||
{
|
||||
"author": "choey",
|
||||
"title": "Comfy-Topaz",
|
||||
@@ -9197,7 +9301,7 @@
|
||||
{
|
||||
"author": "ALatentPlace",
|
||||
"title": "ComfyUI_yanc",
|
||||
"id": "yanc",
|
||||
"id": "yanc-alatentplace",
|
||||
"reference": "https://github.com/ALatentPlace/ComfyUI_yanc",
|
||||
"files": [
|
||||
"https://github.com/ALatentPlace/ComfyUI_yanc"
|
||||
@@ -9584,6 +9688,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Quantization tools are from [a/https://github.com/casper-hansen/AutoAWQ](https://github.com/casper-hansen/AutoAWQ) and [a/https://github.com/IST-DASLab/marlin](https://github.com/IST-DASLab/marlin)\nOnly applicable to graphics cards with sm_80 and above (30 series and above)\nNeed to install marlin dependencies first"
|
||||
},
|
||||
{
|
||||
"author": "MinusZoneAI",
|
||||
"title": "ComfyUI-FluxExt-MZ",
|
||||
"reference": "https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ",
|
||||
"files": [
|
||||
"https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:MZ_Flux1PartialLoad_Patch. Tool nodes related to flux1"
|
||||
},
|
||||
{
|
||||
"author": "blueraincoatli",
|
||||
"title": "comfyUI_SillyNodes",
|
||||
@@ -10058,7 +10172,7 @@
|
||||
"https://github.com/saftle/suplex_comfy_nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Misc Nodes: ControlNet Selector Node, Load Optional ControlNet Model"
|
||||
"description": "Misc Nodes: ControlNet Selector Node, Load Optional ControlNet Model, Diffusers Selector, Save Image JPG No Meta, Multi Input Variable Rewrite"
|
||||
},
|
||||
{
|
||||
"author": "mephisto83",
|
||||
@@ -10888,6 +11002,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:commonly_node."
|
||||
},
|
||||
{
|
||||
"author": "hben35096",
|
||||
"title": "ComfyUI-ReplenishNodes",
|
||||
"reference": "https://github.com/hben35096/ComfyUI-ReplenishNodes",
|
||||
"files": [
|
||||
"https://github.com/hben35096/ComfyUI-ReplenishNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This repository contains two custom nodes for ComfyUI that utilize the [a/CLIPSeg model](https://huggingface.co/docs/transformers/main/en/model_doc/clipseg) to generate masks for image inpainting tasks based on text prompts."
|
||||
},
|
||||
{
|
||||
"author": "tiankuan93",
|
||||
"title": "V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation",
|
||||
@@ -11174,6 +11298,17 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A prompt generator and CLIP encoder using AI provided by Ollama."
|
||||
},
|
||||
{
|
||||
"author": "NvidiaGameWorksAdmin",
|
||||
"title": "ComfyUI-RTX-Remix",
|
||||
"id": "comfyui-rtx-remix",
|
||||
"reference": "https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix",
|
||||
"files": [
|
||||
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Use ComfyUI with RTX Remix to remaster classic games [a/https://github.com/NVIDIAGameWorks/rtx-remix](https://github.com/NVIDIAGameWorks/rtx-remix)"
|
||||
},
|
||||
{
|
||||
"author": "toxicwind",
|
||||
"title": "TTools for ComfyUI",
|
||||
@@ -11991,7 +12126,7 @@
|
||||
"https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI node for background removal implementing [a/InSPyReNet](https://github.com/plemeri/InSPyReNet)"
|
||||
"description": "ComfyUI node for background removal, implementing [a/InSPyReNet](https://github.com/plemeri/InSPyReNet)"
|
||||
},
|
||||
{
|
||||
"author": "Koushakur",
|
||||
@@ -12335,16 +12470,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced tiling of various shapes for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "neeltheninja",
|
||||
"title": "ComfyUI-TextOverlay",
|
||||
"reference": "https://github.com/neeltheninja/ComfyUI-TextOverlay",
|
||||
"files": [
|
||||
"https://github.com/neeltheninja/ComfyUI-TextOverlay"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that adds text overlay to images, with options for text and background color, opacity, vertical positioning, and custom font selection."
|
||||
},
|
||||
{
|
||||
"author": "Fuou Marinas",
|
||||
"title": "ComfyUI-EbSynth",
|
||||
@@ -12538,7 +12663,7 @@
|
||||
},
|
||||
{
|
||||
"author": "noarche",
|
||||
"title": "Color Enhance",
|
||||
"title": "noarche/Color Enhance",
|
||||
"id": "color-enhance",
|
||||
"reference": "https://github.com/noarche/sd-webui-color-enhance",
|
||||
"files": [
|
||||
@@ -12680,6 +12805,36 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/LLaSM](https://huggingface.co/spaces/LinkSoul/LLaSM)"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use VideoEditing",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_VideoEditing",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_VideoEditing"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Video to Images, Image to Canny, ControlNet Model Loader, VEDit Model Loader, VEdit Sampler. [a/https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn](https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn)"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use CrossImageAttention",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_CrossImageAttention",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_CrossImageAttention"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/CrossImageAttention](https://github.com/garibida/cross-image-attention)"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use Style-Aligned",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_Style_Aligned",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_Style_Aligned"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/style-aligned](https://github.com/google/style-aligned)"
|
||||
},
|
||||
{
|
||||
"author": "lenskikh",
|
||||
"title": "Propmt Worker",
|
||||
@@ -12797,13 +12952,13 @@
|
||||
},
|
||||
{
|
||||
"author": "MohammadAboulEla",
|
||||
"title": "iTools ImageLoaderPlus",
|
||||
"title": "ComfyUI-iTools",
|
||||
"reference": "https://github.com/MohammadAboulEla/ComfyUI-iTools",
|
||||
"files": [
|
||||
"https://github.com/MohammadAboulEla/ComfyUI-iTools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "The iTools ImageLoaderPlus is an enhancement of the original ComfyUI ImageLoader node. It attempts to return the possible prompt used to create an image."
|
||||
"description": "The iTools are some quality of life nodes, like read a possible prompt used to create an image, save a prompt to file as a new line, read prompts from a multiline file."
|
||||
},
|
||||
{
|
||||
"author": "Hellrunner2k",
|
||||
@@ -12897,6 +13052,163 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Download Dreambooth Checkpoint, Get Random Value From List, Load Canny Pose Face, Transparent to White Background, Download Flux Lora."
|
||||
},
|
||||
{
|
||||
"author": "Isi-dev",
|
||||
"title": "UniAnimate Nodes for ComfyUI",
|
||||
"id": "comfyuiunianimatenodes",
|
||||
"reference": "https://github.com/Isi-dev/ComfyUI-UniAnimate-W",
|
||||
"files": [
|
||||
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "These are nodes to animate an image with a reference video using UniAnimate. [w/Name conflict with AIFSH/ComfyUI-UniAnimate. Cannot install simulatenously.]"
|
||||
},
|
||||
{
|
||||
"author": "XLabs-AI",
|
||||
"title": "x-flux-comfyui",
|
||||
"reference": "https://github.com/XLabs-AI/x-flux-comfyui",
|
||||
"files": [
|
||||
"https://github.com/XLabs-AI/x-flux-comfyui"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Flux LoRA, Load Flux ControlNet, Apply Flux ControlNet, Xlabs Sampler"
|
||||
},
|
||||
{
|
||||
"author": "okgo4",
|
||||
"title": "ComfyUI-Mosaic-Mask",
|
||||
"reference": "https://github.com/okgo4/ComfyUI-Mosaic-Mask",
|
||||
"files": [
|
||||
"https://github.com/okgo4/ComfyUI-Mosaic-Mask"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-Mosaic-Mask is an automatic tool designed to detect and mask mosaic areas in input images."
|
||||
},
|
||||
{
|
||||
"author": "ChrisColeTech",
|
||||
"title": "ComfyUI-Line-counter",
|
||||
"reference": "https://github.com/ChrisColeTech/ComfyUI-Line-counter",
|
||||
"files": [
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Line-counter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom node to count the number of lines in a text file"
|
||||
},
|
||||
{
|
||||
"author": "dadoirie",
|
||||
"title": "ComfyUI_Dados_Nodes",
|
||||
"reference": "https://github.com/dadoirie/ComfyUI_Dados_Nodes",
|
||||
"files": [
|
||||
"https://github.com/dadoirie/ComfyUI_Dados_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI_Dados_Nodes is a collection of custom nodes for ComfyUI, designed to enhance functionality and provide integration with various services, including Pinterest. This privacy policy explains how these nodes handle user data.\nNOTE: [a/privacy_policy](https://github.com/dadoirie/ComfyUI_Dados_Nodes/blob/master/privacy_policy.md)"
|
||||
},
|
||||
{
|
||||
"author": "fanfanfan",
|
||||
"title": "chinese_clip_encode",
|
||||
"id": "chinese_clip_encode",
|
||||
"reference": "https://github.com/yuan199696/chinese_clip_encode",
|
||||
"files": [
|
||||
"https://github.com/yuan199696/chinese_clip_encode"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Support input of Chinese prompts."
|
||||
},
|
||||
{
|
||||
"author": "fanfanfan",
|
||||
"title": "add_text_2_img",
|
||||
"id": "add_text_2_img",
|
||||
"reference": "https://github.com/yuan199696/add_text_2_img",
|
||||
"files": [
|
||||
"https://github.com/yuan199696/add_text_2_img"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Support adding custom text to the generated images."
|
||||
},
|
||||
{
|
||||
"author": "fairy-root",
|
||||
"title": "Ollama and Llava Vision integration for ComfyUI",
|
||||
"reference": "https://github.com/fairy-root/comfyui-ollama-llms",
|
||||
"files": [
|
||||
"https://github.com/fairy-root/comfyui-ollama-llms"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Ollama and Llava vision integration for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "fairy-root",
|
||||
"title": "Flux Prompt Generator for ComfyUI",
|
||||
"reference": "https://github.com/fairy-root/Flux-Prompt-Generator",
|
||||
"files": [
|
||||
"https://github.com/fairy-root/Flux-Prompt-Generator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A flexible and customizable prompt generator for generating detailed and creative prompts for image generation models for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "ryanontheinside",
|
||||
"title": "RyanOnTheInside",
|
||||
"reference": "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside",
|
||||
"files": [
|
||||
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes introducing particle simulations, optical flow, and temporal masks"
|
||||
},
|
||||
{
|
||||
"author": "ControlAltAI",
|
||||
"title": "ControlAltAI Nodes",
|
||||
"id": "controlaltai",
|
||||
"reference": "https://github.com/gseth/ControlAltAI-Nodes",
|
||||
"files":
|
||||
[
|
||||
"https://github.com/gseth/ControlAltAI-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Quality of Life ComfyUI nodes starting with Flux Resolution Calculator and Flux Sampler."
|
||||
},
|
||||
{
|
||||
"author": "OliverCrosby",
|
||||
"title": "ComfyUI Minimap",
|
||||
"id": "minimap",
|
||||
"reference": "https://github.com/OliverCrosby/Comfyui-Minimap",
|
||||
"files": [
|
||||
"https://github.com/OliverCrosby/Comfyui-Minimap"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple minimap in the bottom-right of the window showing the full workflow, left click to navigate"
|
||||
},
|
||||
{
|
||||
"author": "doomy23",
|
||||
"title": "ComfyUI-D00MYsNodes",
|
||||
"reference": "https://github.com/doomy23/ComfyUI-D00MYsNodes",
|
||||
"files": [
|
||||
"https://github.com/doomy23/ComfyUI-D00MYsNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:ImagesToPNG. A set of custom nodes for ComfyUI I needed for myself but I'm sharing with the public."
|
||||
},
|
||||
{
|
||||
"author": "Sieyalixnet",
|
||||
"title": "ComfyUI_Textarea_Loaders",
|
||||
"reference": "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders",
|
||||
"files": [
|
||||
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "An easy custom node that makes the some loaders' input as Text instead of file selector.\nFor example, there are many characters in different loras respectively. If you want to generate different characters' pictures, you have to select corresponding lora, and then edit the prompt. It may cost much time.\nTo solve this problem, You can use it with a chrome extension https://github.com/Sieyalixnet/ComfyUI-Prompt-Formatter-Extension that makes the queue prompt easier when you dealing with massive loras and prompt."
|
||||
},
|
||||
{
|
||||
"author": "markuryy",
|
||||
"title": "ComfyUI Flux Prompt Saver",
|
||||
"reference": "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver",
|
||||
"files": [
|
||||
"https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "The Flux Prompt Saver is a custom node for ComfyUI that works in conjunction with the Flux Sampler Parameters node from the ComfyUI Essentials package. This node allows you to save images with metadata that includes information from the Flux Sampler Parameters pipeline."
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -857,9 +857,7 @@
|
||||
"FLATTEN (JOV) \u2b07\ufe0f",
|
||||
"GLSL (JOV) \ud83c\udf69",
|
||||
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f",
|
||||
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV-2-LAB (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV-2-RGB (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL LAB-2-HSV (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
@@ -909,9 +907,9 @@
|
||||
],
|
||||
"https://github.com/Anibaaal/ComfyUI-UX-Nodes": [
|
||||
[
|
||||
"DenoiseCalculator",
|
||||
"EasyResolutionPicker",
|
||||
"StepCalculator"
|
||||
"SmoothCurveMerger",
|
||||
"UNETSave"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI UX Nodes"
|
||||
@@ -1466,6 +1464,15 @@
|
||||
"title_aux": "ComfyUI_Ib_CustomNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Line-counter": [
|
||||
[
|
||||
"DirectoryFileCounter",
|
||||
"TextFileLineCounter"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Line-counter"
|
||||
}
|
||||
],
|
||||
"https://github.com/Clybius/ComfyUI-Extra-Samplers": [
|
||||
[
|
||||
"GeometricCFGGuider",
|
||||
@@ -2063,6 +2070,7 @@
|
||||
"BinaryPreprocessor",
|
||||
"CannyEdgePreprocessor",
|
||||
"ColorPreprocessor",
|
||||
"ControlNetAuxSimpleAddText",
|
||||
"ControlNetPreprocessorSelector",
|
||||
"DSINE-NormalMapPreprocessor",
|
||||
"DWPreprocessor",
|
||||
@@ -2070,6 +2078,7 @@
|
||||
"DepthAnythingPreprocessor",
|
||||
"DepthAnythingV2Preprocessor",
|
||||
"DiffusionEdge_Preprocessor",
|
||||
"ExecuteAllControlNetPreprocessors",
|
||||
"FacialPartColoringFromPoseKps",
|
||||
"FakeScribblePreprocessor",
|
||||
"HEDPreprocessor",
|
||||
@@ -2347,14 +2356,20 @@
|
||||
],
|
||||
"https://github.com/FuouM/ComfyUI-StyleTransferPlus": [
|
||||
[
|
||||
"AESFA",
|
||||
"AesFAStyleBlend",
|
||||
"AesPA",
|
||||
"CAST",
|
||||
"CoralColorTransfer",
|
||||
"EFDM",
|
||||
"MicroAST",
|
||||
"NeuralNeighbor"
|
||||
"NeuralNeighbor",
|
||||
"TSSAT",
|
||||
"UniST",
|
||||
"UniST_Video"
|
||||
],
|
||||
{
|
||||
"author": "Fuou Marinas",
|
||||
"author": "ZJU",
|
||||
"description": "A collection of style transfer nodes.",
|
||||
"nickname": "StyleTransferPlus",
|
||||
"title": "ComfyUI-StyleTransferPlus",
|
||||
@@ -2763,11 +2778,22 @@
|
||||
"title_aux": "ComfyUI-Stereopsis"
|
||||
}
|
||||
],
|
||||
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [
|
||||
[
|
||||
"Gen_align_pose",
|
||||
"UniAnimateImage"
|
||||
],
|
||||
{
|
||||
"title_aux": "UniAnimate Nodes for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [
|
||||
[
|
||||
"DisplayText",
|
||||
"LoadVideo",
|
||||
"MiniCPM_VQA",
|
||||
"MiniCPM_VQA_Polished",
|
||||
"MultipleImagesInput",
|
||||
"PreViewVideo"
|
||||
],
|
||||
{
|
||||
@@ -3217,6 +3243,7 @@
|
||||
"ADE_MultivalConvertToMask",
|
||||
"ADE_MultivalDynamic",
|
||||
"ADE_MultivalDynamicFloatInput",
|
||||
"ADE_MultivalDynamicFloats",
|
||||
"ADE_MultivalScaledMask",
|
||||
"ADE_NoiseLayerAdd",
|
||||
"ADE_NoiseLayerAddWeighted",
|
||||
@@ -3756,10 +3783,13 @@
|
||||
],
|
||||
"https://github.com/MohammadAboulEla/ComfyUI-iTools": [
|
||||
[
|
||||
"iTools_Prompt"
|
||||
"iToolsAddOverlay",
|
||||
"iToolsLoadImagePlus",
|
||||
"iToolsPromptLoader",
|
||||
"iToolsPromptSaver"
|
||||
],
|
||||
{
|
||||
"title_aux": "iTools ImageLoaderPlus"
|
||||
"title_aux": "ComfyUI-iTools"
|
||||
}
|
||||
],
|
||||
"https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [
|
||||
@@ -3856,6 +3886,14 @@
|
||||
"title_aux": "ComfyUI_SSStereoscope"
|
||||
}
|
||||
],
|
||||
"https://github.com/Munkyfoot/ComfyUI-TextOverlay": [
|
||||
[
|
||||
"Text Overlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-TextOverlay"
|
||||
}
|
||||
],
|
||||
"https://github.com/MushroomFleet/DJZ-Nodes": [
|
||||
[
|
||||
"AspectSize",
|
||||
@@ -3904,6 +3942,38 @@
|
||||
"title_aux": "Image Captioning and Tagging Assistor Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix": [
|
||||
[
|
||||
"RTXRemixCreateLayer",
|
||||
"RTXRemixDefineLayerId",
|
||||
"RTXRemixDeleteFile",
|
||||
"RTXRemixEndContext",
|
||||
"RTXRemixGetEditTarget",
|
||||
"RTXRemixGetLayers",
|
||||
"RTXRemixGetTextures",
|
||||
"RTXRemixIngestTexture",
|
||||
"RTXRemixInvertBool",
|
||||
"RTXRemixLayerType",
|
||||
"RTXRemixLayerTypes",
|
||||
"RTXRemixMuteLayer",
|
||||
"RTXRemixRemoveLayer",
|
||||
"RTXRemixRestAPIDetails",
|
||||
"RTXRemixSaveLayer",
|
||||
"RTXRemixSetEditTarget",
|
||||
"RTXRemixSetTexture",
|
||||
"RTXRemixStartContext",
|
||||
"RTXRemixStrToList",
|
||||
"RTXRemixStringConcatenate",
|
||||
"RTXRemixStringConstant",
|
||||
"RTXRemixSwitch",
|
||||
"RTXRemixTextureTypeToUSDAttribute",
|
||||
"RTXRemixTexturesType",
|
||||
"RTXRemixTexturesTypes"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-RTX-Remix"
|
||||
}
|
||||
],
|
||||
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [
|
||||
[
|
||||
"NoisyLatentPerlinD"
|
||||
@@ -4533,6 +4603,9 @@
|
||||
"MergeAudioNode",
|
||||
"MergeImageBatches",
|
||||
"MergeLatentBatches",
|
||||
"MuseAudioFeatureExtractionNode",
|
||||
"MuseImageFeatureExtractionNode",
|
||||
"MuseTalkNode",
|
||||
"RVC-Studio.LoadAudio",
|
||||
"RVC-Studio.PreviewAudio",
|
||||
"RVCNode",
|
||||
@@ -4943,6 +5016,15 @@
|
||||
"title_aux": "Lazy Pony Prompter"
|
||||
}
|
||||
],
|
||||
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [
|
||||
[
|
||||
"CheckPointLoader_Text",
|
||||
"LoRALoader_Text"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Textarea_Loaders"
|
||||
}
|
||||
],
|
||||
"https://github.com/Smirnov75/ComfyUI-mxToolkit": [
|
||||
[
|
||||
"mxSeed",
|
||||
@@ -5094,6 +5176,15 @@
|
||||
"title_aux": "ComfyUI_Seg_VITON"
|
||||
}
|
||||
],
|
||||
"https://github.com/StartHua/Comfyui_CXH_joy_caption": [
|
||||
[
|
||||
"Joy_caption",
|
||||
"Joy_caption_load"
|
||||
],
|
||||
{
|
||||
"title_aux": "Comfyui_CXH_joy_caption"
|
||||
}
|
||||
],
|
||||
"https://github.com/StartHua/Comfyui_joytag": [
|
||||
[
|
||||
"CXH_JoyTag"
|
||||
@@ -5732,6 +5823,7 @@
|
||||
"ttN text7BOX_concat",
|
||||
"ttN textCycleLine",
|
||||
"ttN textDebug",
|
||||
"ttN textOutput",
|
||||
"ttN tinyLoader",
|
||||
"ttN xyPlot"
|
||||
],
|
||||
@@ -6185,6 +6277,18 @@
|
||||
"title_aux": "ComfyUI Simply Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/XLabs-AI/x-flux-comfyui": [
|
||||
[
|
||||
"ApplyFluxControlNet",
|
||||
"FluxLoraLoader",
|
||||
"LoadFluxControlNet",
|
||||
"LoadFluxModel",
|
||||
"XlabsSampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "x-flux-comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/XmYx/deforum-comfy-nodes": [
|
||||
[
|
||||
"DeforumAddNoiseNode",
|
||||
@@ -7521,7 +7625,7 @@
|
||||
"ApplyRAUNetSimple"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI jank HiDiffusion"
|
||||
"title_aux": "comfyui_jankhidiffusion"
|
||||
}
|
||||
],
|
||||
"https://github.com/blepping/comfyui_overly_complicated_sampling": [
|
||||
@@ -8716,15 +8820,15 @@
|
||||
"title_aux": "Image chooser"
|
||||
}
|
||||
],
|
||||
"https://github.com/chrisgoringe/cg-noise": [
|
||||
"https://github.com/chrisgoringe/cg-noisetools": [
|
||||
[
|
||||
"Hijack",
|
||||
"KSampler Advanced with Variations",
|
||||
"KSampler with Variations",
|
||||
"UnHijack"
|
||||
"Batch Noise Simulate",
|
||||
"Mix Noise",
|
||||
"Seperable Batch Noise",
|
||||
"Shape Noise"
|
||||
],
|
||||
{
|
||||
"title_aux": "Variation seeds"
|
||||
"title_aux": "Noise variation and batch noise tools"
|
||||
}
|
||||
],
|
||||
"https://github.com/chrisgoringe/cg-use-everywhere": [
|
||||
@@ -8789,6 +8893,14 @@
|
||||
"title_aux": "youtube-dl-comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/city96/ComfyUI-GGUF": [
|
||||
[
|
||||
"UnetLoaderGGUF"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-GGUF"
|
||||
}
|
||||
],
|
||||
"https://github.com/city96/ComfyUI_ColorMod": [
|
||||
[
|
||||
"CV2Tonemap",
|
||||
@@ -9099,8 +9211,42 @@
|
||||
"StableCascade_SuperResolutionControlnet",
|
||||
"StableZero123_Conditioning",
|
||||
"StableZero123_Conditioning_Batched",
|
||||
"StubFloat",
|
||||
"StubImage",
|
||||
"StubInt",
|
||||
"StubMask",
|
||||
"StyleModelApply",
|
||||
"StyleModelLoader",
|
||||
"TestAccumulateNode",
|
||||
"TestAccumulationGetItemNode",
|
||||
"TestAccumulationGetLengthNode",
|
||||
"TestAccumulationHeadNode",
|
||||
"TestAccumulationSetItemNode",
|
||||
"TestAccumulationTailNode",
|
||||
"TestAccumulationToListNode",
|
||||
"TestBoolOperationNode",
|
||||
"TestCustomIsChanged",
|
||||
"TestCustomValidation1",
|
||||
"TestCustomValidation2",
|
||||
"TestCustomValidation3",
|
||||
"TestCustomValidation4",
|
||||
"TestCustomValidation5",
|
||||
"TestDynamicDependencyCycle",
|
||||
"TestExecutionBlocker",
|
||||
"TestFloatConditions",
|
||||
"TestForLoopClose",
|
||||
"TestForLoopOpen",
|
||||
"TestIntConditions",
|
||||
"TestIntMathOperation",
|
||||
"TestLazyMixImages",
|
||||
"TestListToAccumulationNode",
|
||||
"TestMakeListNode",
|
||||
"TestMixedExpansionReturns",
|
||||
"TestStringConditions",
|
||||
"TestToBoolNode",
|
||||
"TestVariadicAverage",
|
||||
"TestWhileLoopClose",
|
||||
"TestWhileLoopOpen",
|
||||
"ThresholdMask",
|
||||
"TomePatchModel",
|
||||
"TripleCLIPLoader",
|
||||
@@ -9513,6 +9659,14 @@
|
||||
"title_aux": "D2 Steps"
|
||||
}
|
||||
],
|
||||
"https://github.com/dadoirie/ComfyUI_Dados_Nodes": [
|
||||
[
|
||||
"PinterestImageNode"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Dados_Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/dagthomas/comfyui_dagthomas": [
|
||||
[
|
||||
"APNLatent",
|
||||
@@ -9520,14 +9674,16 @@
|
||||
"CFGSkimming",
|
||||
"CustomPromptLoader",
|
||||
"DynamicStringCombinerNode",
|
||||
"FileReaderNode",
|
||||
"FlexibleStringMergerNode",
|
||||
"GPT4MiniNode",
|
||||
"GPT4VisionNode",
|
||||
"Gpt4CustomVision",
|
||||
"Gpt4VisionCloner",
|
||||
"MergedOllamaNode",
|
||||
"MedianOppositeColorNode",
|
||||
"OllamaNode",
|
||||
"PGSD3LatentGenerator",
|
||||
"ProminentOppositeColorNode",
|
||||
"PromptGenerator",
|
||||
"RandomIntegerNode",
|
||||
"SentenceMixerNode",
|
||||
@@ -9980,6 +10136,15 @@
|
||||
"title_aux": "ComfyUI-Keyframed"
|
||||
}
|
||||
],
|
||||
"https://github.com/doomy23/ComfyUI-D00MYsNodes": [
|
||||
[
|
||||
"Images_Converter|D00MYs",
|
||||
"Show_Text|D00MYs"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-D00MYsNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/drago87/ComfyUI_Dragos_Nodes": [
|
||||
[
|
||||
"file_padding",
|
||||
@@ -10072,7 +10237,15 @@
|
||||
"WidthHeightPicker"
|
||||
],
|
||||
{
|
||||
"title_aux": "Various custom nodes by Eden.art"
|
||||
"title_aux": "Eden.art nodesuite"
|
||||
}
|
||||
],
|
||||
"https://github.com/edenartlab/sd-lora-trainer": [
|
||||
[
|
||||
"Eden_LoRa_trainer"
|
||||
],
|
||||
{
|
||||
"title_aux": "Eden.art LoRa Trainer"
|
||||
}
|
||||
],
|
||||
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [
|
||||
@@ -10169,6 +10342,24 @@
|
||||
"title_aux": "ComfyUI-Showrunner-Utils"
|
||||
}
|
||||
],
|
||||
"https://github.com/fairy-root/Flux-Prompt-Generator": [
|
||||
[
|
||||
"FluxPromptGenerator"
|
||||
],
|
||||
{
|
||||
"title_aux": "Flux Prompt Generator for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/fairy-root/comfyui-ollama-llms": [
|
||||
[
|
||||
"ConcatenateText",
|
||||
"llava",
|
||||
"ollama"
|
||||
],
|
||||
{
|
||||
"title_aux": "Ollama and Llava Vision integration for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/fearnworks/ComfyUI_FearnworksNodes": [
|
||||
[
|
||||
"Count Files in Directory (FW)",
|
||||
@@ -10316,9 +10507,9 @@
|
||||
"FL_Shadertoy",
|
||||
"FL_SimpleGPTVision",
|
||||
"FL_SystemCheck",
|
||||
"FL_TD_Sampler",
|
||||
"FL_TetrisGame",
|
||||
"FL_TimeLine",
|
||||
"FL_UpscaleModel",
|
||||
"FL_VideoCropMask",
|
||||
"FL_VideoRecompose",
|
||||
"FL_ZipDirectory",
|
||||
@@ -10716,7 +10907,7 @@
|
||||
"SimpleChat"
|
||||
],
|
||||
{
|
||||
"title_aux": "SaltAI Language Toolkit"
|
||||
"title_aux": "SaltAI_Language_Toolkit"
|
||||
}
|
||||
],
|
||||
"https://github.com/giriss/comfy-image-saver": [
|
||||
@@ -11081,6 +11272,15 @@
|
||||
"title_aux": "ComfyUI Griptape Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/gseth/ControlAltAI-Nodes": [
|
||||
[
|
||||
"FluxResolutionNode",
|
||||
"FluxSampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "ControlAltAI Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/guill/abracadabra-comfyui": [
|
||||
[
|
||||
"AbracadabraNode",
|
||||
@@ -11195,6 +11395,15 @@
|
||||
"title_aux": "ComfyUI OpenVoice"
|
||||
}
|
||||
],
|
||||
"https://github.com/hben35096/ComfyUI-ReplenishNodes": [
|
||||
[
|
||||
"CLIPSegToMask",
|
||||
"CombineSegMasks"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-ReplenishNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/hben35096/ComfyUI-ToolBox": [
|
||||
[
|
||||
"AutoDLDownload",
|
||||
@@ -11251,6 +11460,7 @@
|
||||
"classify_function_plus",
|
||||
"classify_persona",
|
||||
"classify_persona_plus",
|
||||
"clear_file",
|
||||
"clear_model",
|
||||
"custom_persona",
|
||||
"discord_bot",
|
||||
@@ -11267,6 +11477,7 @@
|
||||
"feishu_tool",
|
||||
"file_combine",
|
||||
"file_combine_plus",
|
||||
"flux_persona",
|
||||
"get_string",
|
||||
"github_tool",
|
||||
"google_loader",
|
||||
@@ -12150,6 +12361,7 @@
|
||||
"JN_AudioSetChannels",
|
||||
"JN_AudioSlice",
|
||||
"JN_AudioSpeed",
|
||||
"JN_AudioSplitChannels",
|
||||
"JN_AudioStackChannels",
|
||||
"JN_AudioTempo",
|
||||
"JN_AudioTrimSilence",
|
||||
@@ -12203,6 +12415,9 @@
|
||||
"JN_MaskToImage",
|
||||
"JN_MathOperation",
|
||||
"JN_MathOperationArray",
|
||||
"JN_MeowHrtfAudio3d",
|
||||
"JN_MeowHrtfModel",
|
||||
"JN_MeowHrtfPosition",
|
||||
"JN_MeowLoadVoice",
|
||||
"JN_MeowSaveVoice",
|
||||
"JN_MeowSentenceSplit",
|
||||
@@ -12681,6 +12896,19 @@
|
||||
"title_aux": "ComfyUI-CCSR"
|
||||
}
|
||||
],
|
||||
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD": [
|
||||
[
|
||||
"ControlNextDecode",
|
||||
"ControlNextDiffusersScheduler",
|
||||
"ControlNextGetPoses",
|
||||
"ControlNextSVDApply",
|
||||
"ControlNextSampler",
|
||||
"DownloadAndLoadControlNeXt"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes for ControlNext-SVD v2"
|
||||
}
|
||||
],
|
||||
"https://github.com/kijai/ComfyUI-DDColor": [
|
||||
[
|
||||
"DDColor_Colorize"
|
||||
@@ -12853,6 +13081,7 @@
|
||||
"JoinStringMulti",
|
||||
"JoinStrings",
|
||||
"LoadAndResizeImage",
|
||||
"LoadImagesFromFolderKJ",
|
||||
"LoadResAdapterNormalization",
|
||||
"MaskBatchMulti",
|
||||
"MaskOrImageToWeight",
|
||||
@@ -13270,6 +13499,18 @@
|
||||
"title_aux": "LNL Frame Selector"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_CrossImageAttention": [
|
||||
[
|
||||
"AppearanceTransferInference",
|
||||
"AppearanceTransferModelModelLoader",
|
||||
"CIAConfig",
|
||||
"LoadImagePath",
|
||||
"LoadLatents"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use CrossImageAttention"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_InternVL2": [
|
||||
[
|
||||
"DynamicPreprocess",
|
||||
@@ -13300,6 +13541,34 @@
|
||||
"title_aux": "ComfyUI_M3Net"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_Style_Aligned": [
|
||||
[
|
||||
"SAControlnet_ModelLoader",
|
||||
"SADepth",
|
||||
"SAHandler",
|
||||
"SAInversion",
|
||||
"SASDXLControlnetKsampler",
|
||||
"SASDXLKampler",
|
||||
"SASDXLTransferKsampler",
|
||||
"SASDXL_ModelLoader",
|
||||
"SchedulerLoader"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use Style-Aligned"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_VideoEditing": [
|
||||
[
|
||||
"LoadVideo2Images",
|
||||
"VEdit_ControlNet_ModelLoader",
|
||||
"VEdit_ModelLoader",
|
||||
"VEdit_Sampler",
|
||||
"VEdit_image2canny"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use VideoEditing"
|
||||
}
|
||||
],
|
||||
"https://github.com/leestuartx/ComfyUI-GG": [
|
||||
[
|
||||
"AddPaddingToImage",
|
||||
@@ -14095,6 +14364,14 @@
|
||||
"title_aux": "Recommended Resolution Calculator"
|
||||
}
|
||||
],
|
||||
"https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver": [
|
||||
[
|
||||
"FluxPromptSaver"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI Flux Prompt Saver"
|
||||
}
|
||||
],
|
||||
"https://github.com/martijnat/comfyui-previewlatent": [
|
||||
[
|
||||
"PreviewLatent",
|
||||
@@ -14431,10 +14708,8 @@
|
||||
"CanvasCreatorSimple",
|
||||
"CircleCreator",
|
||||
"CirclesGenerator",
|
||||
"CreateCircleMask",
|
||||
"CreateMaskWithCanvas",
|
||||
"CreateNestedPNGMask",
|
||||
"CreatePolygonPNGMask",
|
||||
"CreateSimpleMask",
|
||||
"CreateTillingPNGMask",
|
||||
"CreateWatermarkRemovalMask",
|
||||
@@ -14452,6 +14727,7 @@
|
||||
"IntMultiplication",
|
||||
"IntSubtraction",
|
||||
"IntToFloatMultiplication",
|
||||
"LoRALoaderWithNameStacker",
|
||||
"LogicNot",
|
||||
"NoneToZero",
|
||||
"NumeralToString",
|
||||
@@ -14613,14 +14889,6 @@
|
||||
"title_aux": "ComfyUI-NegiTools"
|
||||
}
|
||||
],
|
||||
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
|
||||
[
|
||||
"Text Overlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-TextOverlay"
|
||||
}
|
||||
],
|
||||
"https://github.com/neverbiasu/ComfyUI-Image-Captioner": [
|
||||
[
|
||||
"ImageCaptioner"
|
||||
@@ -14766,7 +15034,7 @@
|
||||
"MMakerColorEnhance"
|
||||
],
|
||||
{
|
||||
"title_aux": "Color Enhance"
|
||||
"title_aux": "noarche/Color Enhance"
|
||||
}
|
||||
],
|
||||
"https://github.com/noembryo/ComfyUI-noEmbryo": [
|
||||
@@ -14869,6 +15137,14 @@
|
||||
"title_aux": "BrushNet"
|
||||
}
|
||||
],
|
||||
"https://github.com/okgo4/ComfyUI-Mosaic-Mask": [
|
||||
[
|
||||
"MosaicMask"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Mosaic-Mask"
|
||||
}
|
||||
],
|
||||
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
||||
[
|
||||
"Lora Loader From HF"
|
||||
@@ -15611,6 +15887,33 @@
|
||||
"title_aux": "Runtime44 ComfyUI Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [
|
||||
[
|
||||
"AudioControlledMaskMorph",
|
||||
"EmitterMovement",
|
||||
"GravityWell",
|
||||
"MaskMath",
|
||||
"MaskMorph",
|
||||
"MaskRings",
|
||||
"MaskTransform",
|
||||
"MaskWarp",
|
||||
"MovingShape",
|
||||
"OpticalFlowDirectionMask",
|
||||
"OpticalFlowMaskModulation",
|
||||
"OpticalFlowParticleSystem",
|
||||
"ParticleEmissionMask",
|
||||
"ParticleEmitter",
|
||||
"PulsatingParticleSystemMask",
|
||||
"SpringJointSetting",
|
||||
"StaticBody",
|
||||
"TextMaskNode",
|
||||
"Vortex",
|
||||
"_mfc"
|
||||
],
|
||||
{
|
||||
"title_aux": "RyanOnTheInside"
|
||||
}
|
||||
],
|
||||
"https://github.com/s1dlx/comfy_meh/raw/main/meh.py": [
|
||||
[
|
||||
"MergingExecutionHelper"
|
||||
@@ -15624,6 +15927,7 @@
|
||||
"ControlNet Selector",
|
||||
"ControlNetOptionalLoader",
|
||||
"DiffusersSelector",
|
||||
"MultiInputVariableRewrite",
|
||||
"SaveImageJPGNoMeta"
|
||||
],
|
||||
{
|
||||
@@ -15968,13 +16272,9 @@
|
||||
"BizyAirGenerateLightningImage",
|
||||
"BizyAirHEDPreprocessor",
|
||||
"BizyAirImageCaption",
|
||||
"BizyAirKolorsSampler",
|
||||
"BizyAirKolorsTextEncode",
|
||||
"BizyAirKolorsVAEDecode",
|
||||
"BizyAirKolorsVAEEncode",
|
||||
"BizyAirJoyCaption",
|
||||
"BizyAirLeReS_DepthMapPreprocessor",
|
||||
"BizyAirLineArtPreprocessor",
|
||||
"BizyAirMZChatGLM3TextEncode",
|
||||
"BizyAirM_LSDPreprocessor",
|
||||
"BizyAirMetric3D_DepthMapPreprocessor",
|
||||
"BizyAirMetric3D_NormalMapPreprocessor",
|
||||
@@ -15987,7 +16287,6 @@
|
||||
"BizyAirRemoveBackground",
|
||||
"BizyAirSAMPreprocessor",
|
||||
"BizyAirScribblePreprocessor",
|
||||
"BizyAirSetAPIKey",
|
||||
"BizyAirSiliconCloudLLMAPI",
|
||||
"BizyAirSuperResolution",
|
||||
"BizyAirTilePreprocessor",
|
||||
@@ -16226,6 +16525,15 @@
|
||||
"title_aux": "ComfyUI_MS_Diffusion"
|
||||
}
|
||||
],
|
||||
"https://github.com/smthemex/ComfyUI_MooER": [
|
||||
[
|
||||
"MooER_LoadModel",
|
||||
"MooER_Sampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_MooER"
|
||||
}
|
||||
],
|
||||
"https://github.com/smthemex/ComfyUI_ParlerTTS": [
|
||||
[
|
||||
"ParlerTTS_LoadModel",
|
||||
@@ -16807,6 +17115,7 @@
|
||||
"Compare-\ud83d\udd2c",
|
||||
"DebugPrint-\ud83d\udd2c",
|
||||
"Float-\ud83d\udd2c",
|
||||
"If ANY execute A else B-\ud83d\udd2c",
|
||||
"If ANY return A else B-\ud83d\udd2c",
|
||||
"Int-\ud83d\udd2c",
|
||||
"String-\ud83d\udd2c"
|
||||
@@ -17705,6 +18014,7 @@
|
||||
"easy detailerFix",
|
||||
"easy dynamiCrafterLoader",
|
||||
"easy float",
|
||||
"easy fluxLoader",
|
||||
"easy fullCascadeKSampler",
|
||||
"easy fullLoader",
|
||||
"easy fullkSampler",
|
||||
@@ -17917,6 +18227,22 @@
|
||||
"title_aux": "tdxh_node_comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuan199696/add_text_2_img": [
|
||||
[
|
||||
"AddText"
|
||||
],
|
||||
{
|
||||
"title_aux": "add_text_2_img"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuan199696/chinese_clip_encode": [
|
||||
[
|
||||
"ChineseCLIPEncode"
|
||||
],
|
||||
{
|
||||
"title_aux": "chinese_clip_encode"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
|
||||
[
|
||||
"DepthAnythingTensorrt"
|
||||
@@ -18065,6 +18391,7 @@
|
||||
"CheckpointLoaderSimpleWithSwitch",
|
||||
"ColorCorrectOfUtils",
|
||||
"ConcatTextOfUtils",
|
||||
"GenderControlOutput",
|
||||
"ImageBatchOneOrMore",
|
||||
"ImageCompositeMaskedWithSwitch",
|
||||
"ImageConcanateOfUtils",
|
||||
|
||||
3556
github-stats.json
3556
github-stats.json
File diff suppressed because it is too large
Load Diff
@@ -23,7 +23,7 @@ sys.path.append(glob_path)
|
||||
import cm_global
|
||||
from manager_util import *
|
||||
|
||||
version = [2, 48, 7]
|
||||
version = [2, 50, 1]
|
||||
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
|
||||
|
||||
|
||||
@@ -103,6 +103,9 @@ def is_blacklisted(name):
|
||||
if match:
|
||||
name = match.group(1)
|
||||
|
||||
if name in cm_global.pip_blacklist:
|
||||
return True
|
||||
|
||||
if name in cm_global.pip_downgrade_blacklist:
|
||||
pips = get_installed_packages()
|
||||
|
||||
@@ -129,6 +132,9 @@ def is_installed(name):
|
||||
if match:
|
||||
name = match.group(1)
|
||||
|
||||
if name in cm_global.pip_blacklist:
|
||||
return True
|
||||
|
||||
if name in cm_global.pip_downgrade_blacklist:
|
||||
pips = get_installed_packages()
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import mimetypes
|
||||
import traceback
|
||||
|
||||
import folder_paths
|
||||
@@ -6,7 +5,6 @@ import locale
|
||||
import subprocess # don't remove this
|
||||
import concurrent
|
||||
import nodes
|
||||
import hashlib
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
@@ -22,6 +20,9 @@ print(f"### Loading: ComfyUI-Manager ({core.version_str})")
|
||||
|
||||
comfy_ui_hash = "-"
|
||||
|
||||
SECURITY_MESSAGE_MIDDLE_OR_BELOW = f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||
SECURITY_MESSAGE_NORMAL_MINUS = f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||
SECURITY_MESSAGE_GENERAL = f"ERROR: This installation is not allowed in this security_level. Please contact the administrator.\nReference: https://github.com/ltdrdata/ComfyUI-Manager#security-policy"
|
||||
|
||||
def handle_stream(stream, prefix):
|
||||
stream.reconfigure(encoding=locale.getpreferredencoding(), errors='replace')
|
||||
@@ -392,7 +393,7 @@ async def fetch_updates(request):
|
||||
@PromptServer.instance.routes.get("/customnode/update_all")
|
||||
async def update_all(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
try:
|
||||
@@ -594,7 +595,7 @@ async def get_snapshot_list(request):
|
||||
@PromptServer.instance.routes.get("/snapshot/remove")
|
||||
async def remove_snapshot(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
try:
|
||||
@@ -612,7 +613,7 @@ async def remove_snapshot(request):
|
||||
@PromptServer.instance.routes.get("/snapshot/restore")
|
||||
async def remove_snapshot(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
try:
|
||||
@@ -781,14 +782,14 @@ def copy_set_active(files, is_disable, js_path_name='.'):
|
||||
@PromptServer.instance.routes.post("/customnode/install")
|
||||
async def install_custom_node(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
json_data = await request.json()
|
||||
|
||||
risky_level = await get_risky_level(json_data['files'])
|
||||
if not is_allowed_security_level(risky_level):
|
||||
print(f"ERROR: This installation is not allowed in this security_level. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_GENERAL)
|
||||
return web.Response(status=404)
|
||||
|
||||
install_type = json_data['install_type']
|
||||
@@ -828,7 +829,7 @@ async def install_custom_node(request):
|
||||
@PromptServer.instance.routes.post("/customnode/fix")
|
||||
async def fix_custom_node(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
json_data = await request.json()
|
||||
@@ -852,6 +853,10 @@ async def fix_custom_node(request):
|
||||
install_cmd = [sys.executable, "-m", "pip", "install", '-U', pname]
|
||||
core.try_install_script(json_data['files'][0], ".", install_cmd)
|
||||
|
||||
# HOTFIX: force downgrade to numpy<2
|
||||
install_cmd = [sys.executable, "-m", "pip", "install", "numpy<2"]
|
||||
core.try_install_script(json_data['files'][0], ".", install_cmd)
|
||||
|
||||
if res:
|
||||
print(f"After restarting ComfyUI, please refresh the browser.")
|
||||
return web.json_response({}, content_type='application/json')
|
||||
@@ -862,7 +867,7 @@ async def fix_custom_node(request):
|
||||
@PromptServer.instance.routes.post("/customnode/install/git_url")
|
||||
async def install_custom_node_git_url(request):
|
||||
if not is_allowed_security_level('high'):
|
||||
print(f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
|
||||
url = await request.text()
|
||||
@@ -878,7 +883,7 @@ async def install_custom_node_git_url(request):
|
||||
@PromptServer.instance.routes.post("/customnode/install/pip")
|
||||
async def install_custom_node_git_url(request):
|
||||
if not is_allowed_security_level('high'):
|
||||
print(f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
|
||||
packages = await request.text()
|
||||
@@ -890,7 +895,7 @@ async def install_custom_node_git_url(request):
|
||||
@PromptServer.instance.routes.post("/customnode/uninstall")
|
||||
async def uninstall_custom_node(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
json_data = await request.json()
|
||||
@@ -918,7 +923,7 @@ async def uninstall_custom_node(request):
|
||||
@PromptServer.instance.routes.post("/customnode/update")
|
||||
async def update_custom_node(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
json_data = await request.json()
|
||||
@@ -990,7 +995,7 @@ async def install_model(request):
|
||||
model_path = get_model_path(json_data)
|
||||
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
if not json_data['filename'].endswith('.safetensors') and not is_allowed_security_level('high'):
|
||||
@@ -1003,7 +1008,7 @@ async def install_model(request):
|
||||
break
|
||||
|
||||
if not is_belongs_to_whitelist:
|
||||
print(f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
|
||||
res = False
|
||||
@@ -1053,7 +1058,7 @@ manager_terminal_hook = ManagerTerminalHook()
|
||||
@PromptServer.instance.routes.get("/manager/terminal")
|
||||
async def terminal_mode(request):
|
||||
if not is_allowed_security_level('high'):
|
||||
print(f"ERROR: To use this feature, you must either set '--listen' to a local IP and set the security level to 'normal-' or lower, or set the security level to 'middle' or 'weak'. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
|
||||
if "mode" in request.rel_url.query:
|
||||
@@ -1195,7 +1200,7 @@ async def get_notice(request):
|
||||
@PromptServer.instance.routes.get("/manager/reboot")
|
||||
def restart(self):
|
||||
if not is_allowed_security_level('middle'):
|
||||
print(f"ERROR: To use this action, a security_level of `middle or below` is required. Please contact the administrator.")
|
||||
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
|
||||
try:
|
||||
@@ -1275,128 +1280,6 @@ async def load_components(request):
|
||||
return web.Response(status=400)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/share_option")
|
||||
async def share_option(request):
|
||||
if "value" in request.rel_url.query:
|
||||
core.get_config()['share_option'] = request.rel_url.query['value']
|
||||
core.write_config()
|
||||
else:
|
||||
return web.Response(text=core.get_config()['share_option'], status=200)
|
||||
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
def get_openart_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".openart_key")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "r") as f:
|
||||
openart_key = f.read().strip()
|
||||
return openart_key if openart_key else None
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_matrix_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, "matrix_auth")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "r") as f:
|
||||
matrix_auth = f.read()
|
||||
homeserver, username, password = matrix_auth.strip().split("\n")
|
||||
if not homeserver or not username or not password:
|
||||
return None
|
||||
return {
|
||||
"homeserver": homeserver,
|
||||
"username": username,
|
||||
"password": password,
|
||||
}
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_comfyworkflows_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "r") as f:
|
||||
share_key = f.read()
|
||||
if not share_key.strip():
|
||||
return None
|
||||
return share_key
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_youml_settings():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".youml")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, ".youml"), "r") as f:
|
||||
youml_settings = f.read().strip()
|
||||
return youml_settings if youml_settings else None
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def set_youml_settings(settings):
|
||||
with open(os.path.join(core.comfyui_manager_path, ".youml"), "w") as f:
|
||||
f.write(settings)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_openart_auth")
|
||||
async def api_get_openart_auth(request):
|
||||
# print("Getting stored Matrix credentials...")
|
||||
openart_key = get_openart_auth()
|
||||
if not openart_key:
|
||||
return web.Response(status=404)
|
||||
return web.json_response({"openart_key": openart_key})
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/set_openart_auth")
|
||||
async def api_set_openart_auth(request):
|
||||
json_data = await request.json()
|
||||
openart_key = json_data['openart_key']
|
||||
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "w") as f:
|
||||
f.write(openart_key)
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_matrix_auth")
|
||||
async def api_get_matrix_auth(request):
|
||||
# print("Getting stored Matrix credentials...")
|
||||
matrix_auth = get_matrix_auth()
|
||||
if not matrix_auth:
|
||||
return web.Response(status=404)
|
||||
return web.json_response(matrix_auth)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/youml/settings")
|
||||
async def api_get_youml_settings(request):
|
||||
youml_settings = get_youml_settings()
|
||||
if not youml_settings:
|
||||
return web.Response(status=404)
|
||||
return web.json_response(json.loads(youml_settings))
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/youml/settings")
|
||||
async def api_set_youml_settings(request):
|
||||
json_data = await request.json()
|
||||
set_youml_settings(json.dumps(json_data))
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_comfyworkflows_auth")
|
||||
async def api_get_comfyworkflows_auth(request):
|
||||
# Check if the user has provided Matrix credentials in a file called 'matrix_accesstoken'
|
||||
# in the same directory as the ComfyUI base folder
|
||||
# print("Getting stored Comfyworkflows.com auth...")
|
||||
comfyworkflows_auth = get_comfyworkflows_auth()
|
||||
if not comfyworkflows_auth:
|
||||
return web.Response(status=404)
|
||||
return web.json_response({"comfyworkflows_sharekey": comfyworkflows_auth})
|
||||
|
||||
|
||||
args.enable_cors_header = "*"
|
||||
if hasattr(PromptServer.instance, "app"):
|
||||
app = PromptServer.instance.app
|
||||
@@ -1404,260 +1287,6 @@ if hasattr(PromptServer.instance, "app"):
|
||||
app.middlewares.append(cors_middleware)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
|
||||
async def set_esheep_workflow_and_images(request):
|
||||
json_data = await request.json()
|
||||
current_workflow = json_data['workflow']
|
||||
images = json_data['images']
|
||||
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
|
||||
json.dump(json_data, file, indent=4)
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_esheep_workflow_and_images")
|
||||
async def get_esheep_workflow_and_images(request):
|
||||
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), 'r', encoding='utf-8') as file:
|
||||
data = json.load(file)
|
||||
return web.Response(status=200, text=json.dumps(data))
|
||||
|
||||
|
||||
def set_matrix_auth(json_data):
|
||||
homeserver = json_data['homeserver']
|
||||
username = json_data['username']
|
||||
password = json_data['password']
|
||||
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "w") as f:
|
||||
f.write("\n".join([homeserver, username, password]))
|
||||
|
||||
|
||||
def set_comfyworkflows_auth(comfyworkflows_sharekey):
|
||||
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "w") as f:
|
||||
f.write(comfyworkflows_sharekey)
|
||||
|
||||
|
||||
def has_provided_matrix_auth(matrix_auth):
|
||||
return matrix_auth['homeserver'].strip() and matrix_auth['username'].strip() and matrix_auth['password'].strip()
|
||||
|
||||
|
||||
def has_provided_comfyworkflows_auth(comfyworkflows_sharekey):
|
||||
return comfyworkflows_sharekey.strip()
|
||||
|
||||
|
||||
def extract_model_file_names(json_data):
|
||||
"""Extract unique file names from the input JSON data."""
|
||||
file_names = set()
|
||||
model_filename_extensions = {'.safetensors', '.ckpt', '.pt', '.pth', '.bin'}
|
||||
|
||||
# Recursively search for file names in the JSON data
|
||||
def recursive_search(data):
|
||||
if isinstance(data, dict):
|
||||
for value in data.values():
|
||||
recursive_search(value)
|
||||
elif isinstance(data, list):
|
||||
for item in data:
|
||||
recursive_search(item)
|
||||
elif isinstance(data, str) and '.' in data:
|
||||
file_names.add(os.path.basename(data)) # file_names.add(data)
|
||||
|
||||
recursive_search(json_data)
|
||||
return [f for f in list(file_names) if os.path.splitext(f)[1] in model_filename_extensions]
|
||||
|
||||
|
||||
def find_file_paths(base_dir, file_names):
|
||||
"""Find the paths of the files in the base directory."""
|
||||
file_paths = {}
|
||||
|
||||
for root, dirs, files in os.walk(base_dir):
|
||||
# Exclude certain directories
|
||||
dirs[:] = [d for d in dirs if d not in ['.git']]
|
||||
|
||||
for file in files:
|
||||
if file in file_names:
|
||||
file_paths[file] = os.path.join(root, file)
|
||||
return file_paths
|
||||
|
||||
|
||||
def compute_sha256_checksum(filepath):
|
||||
"""Compute the SHA256 checksum of a file, in chunks"""
|
||||
sha256 = hashlib.sha256()
|
||||
with open(filepath, 'rb') as f:
|
||||
for chunk in iter(lambda: f.read(4096), b''):
|
||||
sha256.update(chunk)
|
||||
return sha256.hexdigest()
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/share")
|
||||
async def share_art(request):
|
||||
# get json data
|
||||
json_data = await request.json()
|
||||
|
||||
matrix_auth = json_data['matrix_auth']
|
||||
comfyworkflows_sharekey = json_data['cw_auth']['cw_sharekey']
|
||||
|
||||
set_matrix_auth(matrix_auth)
|
||||
set_comfyworkflows_auth(comfyworkflows_sharekey)
|
||||
|
||||
share_destinations = json_data['share_destinations']
|
||||
credits = json_data['credits']
|
||||
title = json_data['title']
|
||||
description = json_data['description']
|
||||
is_nsfw = json_data['is_nsfw']
|
||||
prompt = json_data['prompt']
|
||||
potential_outputs = json_data['potential_outputs']
|
||||
selected_output_index = json_data['selected_output_index']
|
||||
|
||||
try:
|
||||
output_to_share = potential_outputs[int(selected_output_index)]
|
||||
except:
|
||||
# for now, pick the first output
|
||||
output_to_share = potential_outputs[0]
|
||||
|
||||
assert output_to_share['type'] in ('image', 'output')
|
||||
output_dir = folder_paths.get_output_directory()
|
||||
|
||||
if output_to_share['type'] == 'image':
|
||||
asset_filename = output_to_share['image']['filename']
|
||||
asset_subfolder = output_to_share['image']['subfolder']
|
||||
|
||||
if output_to_share['image']['type'] == 'temp':
|
||||
output_dir = folder_paths.get_temp_directory()
|
||||
else:
|
||||
asset_filename = output_to_share['output']['filename']
|
||||
asset_subfolder = output_to_share['output']['subfolder']
|
||||
|
||||
if asset_subfolder:
|
||||
asset_filepath = os.path.join(output_dir, asset_subfolder, asset_filename)
|
||||
else:
|
||||
asset_filepath = os.path.join(output_dir, asset_filename)
|
||||
|
||||
# get the mime type of the asset
|
||||
assetFileType = mimetypes.guess_type(asset_filepath)[0]
|
||||
|
||||
share_website_host = "UNKNOWN"
|
||||
if "comfyworkflows" in share_destinations:
|
||||
share_website_host = "https://comfyworkflows.com"
|
||||
share_endpoint = f"{share_website_host}/api"
|
||||
|
||||
# get presigned urls
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.post(
|
||||
f"{share_endpoint}/get_presigned_urls",
|
||||
json={
|
||||
"assetFileName": asset_filename,
|
||||
"assetFileType": assetFileType,
|
||||
"workflowJsonFileName": 'workflow.json',
|
||||
"workflowJsonFileType": 'application/json',
|
||||
},
|
||||
) as resp:
|
||||
assert resp.status == 200
|
||||
presigned_urls_json = await resp.json()
|
||||
assetFilePresignedUrl = presigned_urls_json["assetFilePresignedUrl"]
|
||||
assetFileKey = presigned_urls_json["assetFileKey"]
|
||||
workflowJsonFilePresignedUrl = presigned_urls_json["workflowJsonFilePresignedUrl"]
|
||||
workflowJsonFileKey = presigned_urls_json["workflowJsonFileKey"]
|
||||
|
||||
# upload asset
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.put(assetFilePresignedUrl, data=open(asset_filepath, "rb")) as resp:
|
||||
assert resp.status == 200
|
||||
|
||||
# upload workflow json
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.put(workflowJsonFilePresignedUrl, data=json.dumps(prompt['workflow']).encode('utf-8')) as resp:
|
||||
assert resp.status == 200
|
||||
|
||||
model_filenames = extract_model_file_names(prompt['workflow'])
|
||||
model_file_paths = find_file_paths(folder_paths.base_path, model_filenames)
|
||||
|
||||
models_info = {}
|
||||
for filename, filepath in model_file_paths.items():
|
||||
models_info[filename] = {
|
||||
"filename": filename,
|
||||
"sha256_checksum": compute_sha256_checksum(filepath),
|
||||
"relative_path": os.path.relpath(filepath, folder_paths.base_path),
|
||||
}
|
||||
|
||||
# make a POST request to /api/upload_workflow with form data key values
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
form = aiohttp.FormData()
|
||||
if comfyworkflows_sharekey:
|
||||
form.add_field("shareKey", comfyworkflows_sharekey)
|
||||
form.add_field("source", "comfyui_manager")
|
||||
form.add_field("assetFileKey", assetFileKey)
|
||||
form.add_field("assetFileType", assetFileType)
|
||||
form.add_field("workflowJsonFileKey", workflowJsonFileKey)
|
||||
form.add_field("sharedWorkflowWorkflowJsonString", json.dumps(prompt['workflow']))
|
||||
form.add_field("sharedWorkflowPromptJsonString", json.dumps(prompt['output']))
|
||||
form.add_field("shareWorkflowCredits", credits)
|
||||
form.add_field("shareWorkflowTitle", title)
|
||||
form.add_field("shareWorkflowDescription", description)
|
||||
form.add_field("shareWorkflowIsNSFW", str(is_nsfw).lower())
|
||||
form.add_field("currentSnapshot", json.dumps(core.get_current_snapshot()))
|
||||
form.add_field("modelsInfo", json.dumps(models_info))
|
||||
|
||||
async with session.post(
|
||||
f"{share_endpoint}/upload_workflow",
|
||||
data=form,
|
||||
) as resp:
|
||||
assert resp.status == 200
|
||||
upload_workflow_json = await resp.json()
|
||||
workflowId = upload_workflow_json["workflowId"]
|
||||
|
||||
# check if the user has provided Matrix credentials
|
||||
if "matrix" in share_destinations:
|
||||
comfyui_share_room_id = '!LGYSoacpJPhIfBqVfb:matrix.org'
|
||||
filename = os.path.basename(asset_filepath)
|
||||
content_type = assetFileType
|
||||
|
||||
try:
|
||||
from matrix_client.api import MatrixHttpApi
|
||||
from matrix_client.client import MatrixClient
|
||||
|
||||
homeserver = 'matrix.org'
|
||||
if matrix_auth:
|
||||
homeserver = matrix_auth.get('homeserver', 'matrix.org')
|
||||
homeserver = homeserver.replace("http://", "https://")
|
||||
if not homeserver.startswith("https://"):
|
||||
homeserver = "https://" + homeserver
|
||||
|
||||
client = MatrixClient(homeserver)
|
||||
try:
|
||||
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
|
||||
if not token:
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
except:
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
|
||||
matrix = MatrixHttpApi(homeserver, token=token)
|
||||
with open(asset_filepath, 'rb') as f:
|
||||
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
|
||||
|
||||
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
|
||||
|
||||
text_content = ""
|
||||
if title:
|
||||
text_content += f"{title}\n"
|
||||
if description:
|
||||
text_content += f"{description}\n"
|
||||
if credits:
|
||||
text_content += f"\ncredits: {credits}\n"
|
||||
response = matrix.send_message(comfyui_share_room_id, text_content)
|
||||
response = matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
|
||||
response = matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return web.json_response({"error": "An error occurred when sharing your art to Matrix."}, content_type='application/json', status=500)
|
||||
|
||||
return web.json_response({
|
||||
"comfyworkflows": {
|
||||
"url": None if "comfyworkflows" not in share_destinations else f"{share_website_host}/workflows/{workflowId}",
|
||||
},
|
||||
"matrix": {
|
||||
"success": None if "matrix" not in share_destinations else True
|
||||
}
|
||||
}, content_type='application/json', status=200)
|
||||
|
||||
|
||||
def sanitize(data):
|
||||
return data.replace("<", "<").replace(">", ">")
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# try:
|
||||
# from distutils.version import StrictVersion
|
||||
# except:
|
||||
print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.")
|
||||
# print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.")
|
||||
class StrictVersion:
|
||||
def __init__(self, version_string):
|
||||
self.version_string = version_string
|
||||
|
||||
386
glob/share_3rdparty.py
Normal file
386
glob/share_3rdparty.py
Normal file
@@ -0,0 +1,386 @@
|
||||
import mimetypes
|
||||
import manager_core as core
|
||||
import os
|
||||
from aiohttp import web
|
||||
import aiohttp
|
||||
import json
|
||||
import hashlib
|
||||
|
||||
import folder_paths
|
||||
from server import PromptServer
|
||||
|
||||
|
||||
def extract_model_file_names(json_data):
|
||||
"""Extract unique file names from the input JSON data."""
|
||||
file_names = set()
|
||||
model_filename_extensions = {'.safetensors', '.ckpt', '.pt', '.pth', '.bin'}
|
||||
|
||||
# Recursively search for file names in the JSON data
|
||||
def recursive_search(data):
|
||||
if isinstance(data, dict):
|
||||
for value in data.values():
|
||||
recursive_search(value)
|
||||
elif isinstance(data, list):
|
||||
for item in data:
|
||||
recursive_search(item)
|
||||
elif isinstance(data, str) and '.' in data:
|
||||
file_names.add(os.path.basename(data)) # file_names.add(data)
|
||||
|
||||
recursive_search(json_data)
|
||||
return [f for f in list(file_names) if os.path.splitext(f)[1] in model_filename_extensions]
|
||||
|
||||
|
||||
def find_file_paths(base_dir, file_names):
|
||||
"""Find the paths of the files in the base directory."""
|
||||
file_paths = {}
|
||||
|
||||
for root, dirs, files in os.walk(base_dir):
|
||||
# Exclude certain directories
|
||||
dirs[:] = [d for d in dirs if d not in ['.git']]
|
||||
|
||||
for file in files:
|
||||
if file in file_names:
|
||||
file_paths[file] = os.path.join(root, file)
|
||||
return file_paths
|
||||
|
||||
|
||||
def compute_sha256_checksum(filepath):
|
||||
"""Compute the SHA256 checksum of a file, in chunks"""
|
||||
sha256 = hashlib.sha256()
|
||||
with open(filepath, 'rb') as f:
|
||||
for chunk in iter(lambda: f.read(4096), b''):
|
||||
sha256.update(chunk)
|
||||
return sha256.hexdigest()
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/share_option")
|
||||
async def share_option(request):
|
||||
if "value" in request.rel_url.query:
|
||||
core.get_config()['share_option'] = request.rel_url.query['value']
|
||||
core.write_config()
|
||||
else:
|
||||
return web.Response(text=core.get_config()['share_option'], status=200)
|
||||
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
def get_openart_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".openart_key")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "r") as f:
|
||||
openart_key = f.read().strip()
|
||||
return openart_key if openart_key else None
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_matrix_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, "matrix_auth")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "r") as f:
|
||||
matrix_auth = f.read()
|
||||
homeserver, username, password = matrix_auth.strip().split("\n")
|
||||
if not homeserver or not username or not password:
|
||||
return None
|
||||
return {
|
||||
"homeserver": homeserver,
|
||||
"username": username,
|
||||
"password": password,
|
||||
}
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_comfyworkflows_auth():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "r") as f:
|
||||
share_key = f.read()
|
||||
if not share_key.strip():
|
||||
return None
|
||||
return share_key
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def get_youml_settings():
|
||||
if not os.path.exists(os.path.join(core.comfyui_manager_path, ".youml")):
|
||||
return None
|
||||
try:
|
||||
with open(os.path.join(core.comfyui_manager_path, ".youml"), "r") as f:
|
||||
youml_settings = f.read().strip()
|
||||
return youml_settings if youml_settings else None
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def set_youml_settings(settings):
|
||||
with open(os.path.join(core.comfyui_manager_path, ".youml"), "w") as f:
|
||||
f.write(settings)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_openart_auth")
|
||||
async def api_get_openart_auth(request):
|
||||
# print("Getting stored Matrix credentials...")
|
||||
openart_key = get_openart_auth()
|
||||
if not openart_key:
|
||||
return web.Response(status=404)
|
||||
return web.json_response({"openart_key": openart_key})
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/set_openart_auth")
|
||||
async def api_set_openart_auth(request):
|
||||
json_data = await request.json()
|
||||
openart_key = json_data['openart_key']
|
||||
with open(os.path.join(core.comfyui_manager_path, ".openart_key"), "w") as f:
|
||||
f.write(openart_key)
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_matrix_auth")
|
||||
async def api_get_matrix_auth(request):
|
||||
# print("Getting stored Matrix credentials...")
|
||||
matrix_auth = get_matrix_auth()
|
||||
if not matrix_auth:
|
||||
return web.Response(status=404)
|
||||
return web.json_response(matrix_auth)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/youml/settings")
|
||||
async def api_get_youml_settings(request):
|
||||
youml_settings = get_youml_settings()
|
||||
if not youml_settings:
|
||||
return web.Response(status=404)
|
||||
return web.json_response(json.loads(youml_settings))
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/youml/settings")
|
||||
async def api_set_youml_settings(request):
|
||||
json_data = await request.json()
|
||||
set_youml_settings(json.dumps(json_data))
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_comfyworkflows_auth")
|
||||
async def api_get_comfyworkflows_auth(request):
|
||||
# Check if the user has provided Matrix credentials in a file called 'matrix_accesstoken'
|
||||
# in the same directory as the ComfyUI base folder
|
||||
# print("Getting stored Comfyworkflows.com auth...")
|
||||
comfyworkflows_auth = get_comfyworkflows_auth()
|
||||
if not comfyworkflows_auth:
|
||||
return web.Response(status=404)
|
||||
return web.json_response({"comfyworkflows_sharekey": comfyworkflows_auth})
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/set_esheep_workflow_and_images")
|
||||
async def set_esheep_workflow_and_images(request):
|
||||
json_data = await request.json()
|
||||
current_workflow = json_data['workflow']
|
||||
images = json_data['images']
|
||||
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), "w", encoding='utf-8') as file:
|
||||
json.dump(json_data, file, indent=4)
|
||||
return web.Response(status=200)
|
||||
|
||||
|
||||
@PromptServer.instance.routes.get("/manager/get_esheep_workflow_and_images")
|
||||
async def get_esheep_workflow_and_images(request):
|
||||
with open(os.path.join(core.comfyui_manager_path, "esheep_share_message.json"), 'r', encoding='utf-8') as file:
|
||||
data = json.load(file)
|
||||
return web.Response(status=200, text=json.dumps(data))
|
||||
|
||||
|
||||
def set_matrix_auth(json_data):
|
||||
homeserver = json_data['homeserver']
|
||||
username = json_data['username']
|
||||
password = json_data['password']
|
||||
with open(os.path.join(core.comfyui_manager_path, "matrix_auth"), "w") as f:
|
||||
f.write("\n".join([homeserver, username, password]))
|
||||
|
||||
|
||||
def set_comfyworkflows_auth(comfyworkflows_sharekey):
|
||||
with open(os.path.join(core.comfyui_manager_path, "comfyworkflows_sharekey"), "w") as f:
|
||||
f.write(comfyworkflows_sharekey)
|
||||
|
||||
|
||||
def has_provided_matrix_auth(matrix_auth):
|
||||
return matrix_auth['homeserver'].strip() and matrix_auth['username'].strip() and matrix_auth['password'].strip()
|
||||
|
||||
|
||||
def has_provided_comfyworkflows_auth(comfyworkflows_sharekey):
|
||||
return comfyworkflows_sharekey.strip()
|
||||
|
||||
|
||||
@PromptServer.instance.routes.post("/manager/share")
|
||||
async def share_art(request):
|
||||
# get json data
|
||||
json_data = await request.json()
|
||||
|
||||
matrix_auth = json_data['matrix_auth']
|
||||
comfyworkflows_sharekey = json_data['cw_auth']['cw_sharekey']
|
||||
|
||||
set_matrix_auth(matrix_auth)
|
||||
set_comfyworkflows_auth(comfyworkflows_sharekey)
|
||||
|
||||
share_destinations = json_data['share_destinations']
|
||||
credits = json_data['credits']
|
||||
title = json_data['title']
|
||||
description = json_data['description']
|
||||
is_nsfw = json_data['is_nsfw']
|
||||
prompt = json_data['prompt']
|
||||
potential_outputs = json_data['potential_outputs']
|
||||
selected_output_index = json_data['selected_output_index']
|
||||
|
||||
try:
|
||||
output_to_share = potential_outputs[int(selected_output_index)]
|
||||
except:
|
||||
# for now, pick the first output
|
||||
output_to_share = potential_outputs[0]
|
||||
|
||||
assert output_to_share['type'] in ('image', 'output')
|
||||
output_dir = folder_paths.get_output_directory()
|
||||
|
||||
if output_to_share['type'] == 'image':
|
||||
asset_filename = output_to_share['image']['filename']
|
||||
asset_subfolder = output_to_share['image']['subfolder']
|
||||
|
||||
if output_to_share['image']['type'] == 'temp':
|
||||
output_dir = folder_paths.get_temp_directory()
|
||||
else:
|
||||
asset_filename = output_to_share['output']['filename']
|
||||
asset_subfolder = output_to_share['output']['subfolder']
|
||||
|
||||
if asset_subfolder:
|
||||
asset_filepath = os.path.join(output_dir, asset_subfolder, asset_filename)
|
||||
else:
|
||||
asset_filepath = os.path.join(output_dir, asset_filename)
|
||||
|
||||
# get the mime type of the asset
|
||||
assetFileType = mimetypes.guess_type(asset_filepath)[0]
|
||||
|
||||
share_website_host = "UNKNOWN"
|
||||
if "comfyworkflows" in share_destinations:
|
||||
share_website_host = "https://comfyworkflows.com"
|
||||
share_endpoint = f"{share_website_host}/api"
|
||||
|
||||
# get presigned urls
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.post(
|
||||
f"{share_endpoint}/get_presigned_urls",
|
||||
json={
|
||||
"assetFileName": asset_filename,
|
||||
"assetFileType": assetFileType,
|
||||
"workflowJsonFileName": 'workflow.json',
|
||||
"workflowJsonFileType": 'application/json',
|
||||
},
|
||||
) as resp:
|
||||
assert resp.status == 200
|
||||
presigned_urls_json = await resp.json()
|
||||
assetFilePresignedUrl = presigned_urls_json["assetFilePresignedUrl"]
|
||||
assetFileKey = presigned_urls_json["assetFileKey"]
|
||||
workflowJsonFilePresignedUrl = presigned_urls_json["workflowJsonFilePresignedUrl"]
|
||||
workflowJsonFileKey = presigned_urls_json["workflowJsonFileKey"]
|
||||
|
||||
# upload asset
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.put(assetFilePresignedUrl, data=open(asset_filepath, "rb")) as resp:
|
||||
assert resp.status == 200
|
||||
|
||||
# upload workflow json
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with session.put(workflowJsonFilePresignedUrl, data=json.dumps(prompt['workflow']).encode('utf-8')) as resp:
|
||||
assert resp.status == 200
|
||||
|
||||
model_filenames = extract_model_file_names(prompt['workflow'])
|
||||
model_file_paths = find_file_paths(folder_paths.base_path, model_filenames)
|
||||
|
||||
models_info = {}
|
||||
for filename, filepath in model_file_paths.items():
|
||||
models_info[filename] = {
|
||||
"filename": filename,
|
||||
"sha256_checksum": compute_sha256_checksum(filepath),
|
||||
"relative_path": os.path.relpath(filepath, folder_paths.base_path),
|
||||
}
|
||||
|
||||
# make a POST request to /api/upload_workflow with form data key values
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
form = aiohttp.FormData()
|
||||
if comfyworkflows_sharekey:
|
||||
form.add_field("shareKey", comfyworkflows_sharekey)
|
||||
form.add_field("source", "comfyui_manager")
|
||||
form.add_field("assetFileKey", assetFileKey)
|
||||
form.add_field("assetFileType", assetFileType)
|
||||
form.add_field("workflowJsonFileKey", workflowJsonFileKey)
|
||||
form.add_field("sharedWorkflowWorkflowJsonString", json.dumps(prompt['workflow']))
|
||||
form.add_field("sharedWorkflowPromptJsonString", json.dumps(prompt['output']))
|
||||
form.add_field("shareWorkflowCredits", credits)
|
||||
form.add_field("shareWorkflowTitle", title)
|
||||
form.add_field("shareWorkflowDescription", description)
|
||||
form.add_field("shareWorkflowIsNSFW", str(is_nsfw).lower())
|
||||
form.add_field("currentSnapshot", json.dumps(core.get_current_snapshot()))
|
||||
form.add_field("modelsInfo", json.dumps(models_info))
|
||||
|
||||
async with session.post(
|
||||
f"{share_endpoint}/upload_workflow",
|
||||
data=form,
|
||||
) as resp:
|
||||
assert resp.status == 200
|
||||
upload_workflow_json = await resp.json()
|
||||
workflowId = upload_workflow_json["workflowId"]
|
||||
|
||||
# check if the user has provided Matrix credentials
|
||||
if "matrix" in share_destinations:
|
||||
comfyui_share_room_id = '!LGYSoacpJPhIfBqVfb:matrix.org'
|
||||
filename = os.path.basename(asset_filepath)
|
||||
content_type = assetFileType
|
||||
|
||||
try:
|
||||
from matrix_client.api import MatrixHttpApi
|
||||
from matrix_client.client import MatrixClient
|
||||
|
||||
homeserver = 'matrix.org'
|
||||
if matrix_auth:
|
||||
homeserver = matrix_auth.get('homeserver', 'matrix.org')
|
||||
homeserver = homeserver.replace("http://", "https://")
|
||||
if not homeserver.startswith("https://"):
|
||||
homeserver = "https://" + homeserver
|
||||
|
||||
client = MatrixClient(homeserver)
|
||||
try:
|
||||
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
|
||||
if not token:
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
except:
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
|
||||
matrix = MatrixHttpApi(homeserver, token=token)
|
||||
with open(asset_filepath, 'rb') as f:
|
||||
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
|
||||
|
||||
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
|
||||
|
||||
text_content = ""
|
||||
if title:
|
||||
text_content += f"{title}\n"
|
||||
if description:
|
||||
text_content += f"{description}\n"
|
||||
if credits:
|
||||
text_content += f"\ncredits: {credits}\n"
|
||||
response = matrix.send_message(comfyui_share_room_id, text_content)
|
||||
response = matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
|
||||
response = matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return web.json_response({"error": "An error occurred when sharing your art to Matrix."}, content_type='application/json', status=500)
|
||||
|
||||
return web.json_response({
|
||||
"comfyworkflows": {
|
||||
"url": None if "comfyworkflows" not in share_destinations else f"{share_website_host}/workflows/{workflowId}",
|
||||
},
|
||||
"matrix": {
|
||||
"success": None if "matrix" not in share_destinations else True
|
||||
}
|
||||
}, content_type='application/json', status=200)
|
||||
@@ -1,9 +1,31 @@
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"name": "TAEF1 Decoder",
|
||||
"type": "TAESD",
|
||||
"base": "FLUX.1",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
"filename": "taef1_decoder.pth",
|
||||
"url": "https://github.com/madebyollin/taesd/raw/main/taef1_decoder.pth",
|
||||
"size": "4.71MB"
|
||||
},
|
||||
{
|
||||
"name": "TAEF1 Encoder",
|
||||
"type": "TAESD",
|
||||
"base": "FLUX.1",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
"filename": "taef1_encoder.pth",
|
||||
"url": "https://github.com/madebyollin/taesd/raw/main/taef1_encoder.pth",
|
||||
"size": "4.71MB"
|
||||
},
|
||||
{
|
||||
"name": "TAESD3 Decoder",
|
||||
"type": "TAESD",
|
||||
"base": "SDXL",
|
||||
"base": "SD3",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
@@ -14,7 +36,7 @@
|
||||
{
|
||||
"name": "TAESD3 Encoder",
|
||||
"type": "TAESD",
|
||||
"base": "SDXL",
|
||||
"base": "SD3",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
|
||||
@@ -11,7 +11,66 @@
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"author": "sebord",
|
||||
"title": "ComfyUI-LMCQ [WIP]",
|
||||
"reference": "https://github.com/sebord/ComfyUI-LMCQ",
|
||||
"files": [
|
||||
"https://github.com/sebord/ComfyUI-LMCQ"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI small node toolkit, this toolkit is mainly to update some practical small nodes, to make a contribution to the comfyui ecosystem, PS: 'LMCQ' is the abbreviation of the team name"
|
||||
},
|
||||
{
|
||||
"author": "logtd",
|
||||
"title": "ComfyUI-Fluxtapoz [WIP]",
|
||||
"reference": "https://github.com/logtd/ComfyUI-Fluxtapoz",
|
||||
"files": [
|
||||
"https://github.com/logtd/ComfyUI-Fluxtapoz"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A set of nodes for editing images using Flux in ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "ChrisColeTech",
|
||||
"title": "ComfyUI-Get-Random-File [UNSAFE]",
|
||||
"reference": "https://github.com/ChrisColeTech/ComfyUI-Get-Random-File",
|
||||
"files": [
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Get-Random-File"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Gets a random file from a directory. Returns the filpath as a STRING. [w/This node allows access to arbitrary files through the workflow, which could pose a security threat.]"
|
||||
},
|
||||
{
|
||||
"author": "logtd",
|
||||
"title": "ComfyUI-Fluxtapoz [WIP]",
|
||||
"reference": "https://github.com/logtd/ComfyUI-Fluxtapoz",
|
||||
"files": [
|
||||
"https://github.com/logtd/ComfyUI-Fluxtapoz"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A set of nodes for editing images using Flux in ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "neeltheninja",
|
||||
"title": "ComfyUI-ControlNeXt [WIP]",
|
||||
"reference": "https://github.com/neverbiasu/ComfyUI-ControlNeXt",
|
||||
"files": [
|
||||
"https://github.com/neverbiasu/ComfyUI-ControlNeXt"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "In progress🚧"
|
||||
},
|
||||
{
|
||||
"author": "neeltheninja",
|
||||
"title": "ComfyUI-TextOverlay",
|
||||
"reference": "https://github.com/neeltheninja/ComfyUI-TextOverlay",
|
||||
"files": [
|
||||
"https://github.com/neeltheninja/ComfyUI-TextOverlay"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that adds text overlay to images, with options for text and background color, opacity, vertical positioning, and custom font selection. [w/Name conflict with munkyfoot/ComfyUI-TextOverlay. Cannot install simulatenously.]"
|
||||
},
|
||||
{
|
||||
"author": "comfyanonymous",
|
||||
"title": "ComfyUI_bitsandbytes_NF4 [EXPERIMENTAL]",
|
||||
@@ -1702,16 +1761,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "This answers the itch for being able to easily paste [a/CivitAI.com](https://civitai.com/) generated data (or other simple metadata) into Comfy in a way that makes it easy to test with multiple checkpoints."
|
||||
},
|
||||
{
|
||||
"author": "ZHO-ZHO-ZHO",
|
||||
"title": "ComfyUI-AnyText [WIP]",
|
||||
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText",
|
||||
"files": [
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial implementation of [a/AnyText](https://github.com/tyxsspa/AnyText/tree/825bcc54687206b15bd7e28ba1a8b095989d58e3) for ComfyUI(EXP)"
|
||||
},
|
||||
{
|
||||
"author": "nidefawl",
|
||||
"title": "ComfyUI-nidefawl [UNSAFE]",
|
||||
|
||||
@@ -351,6 +351,18 @@
|
||||
"title_aux": "ComfyUI_bd_customNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Get-Random-File": [
|
||||
[
|
||||
"GetImageFileByIndexNode",
|
||||
"GetVideoFileByIndexNode",
|
||||
"RandomFilePathNode",
|
||||
"RandomImagePathNode",
|
||||
"RandomVideoPathNode"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Get-Random-File [UNSAFE]"
|
||||
}
|
||||
],
|
||||
"https://github.com/DeTK/ComfyUI-Switch": [
|
||||
[
|
||||
"NodeSwitch"
|
||||
@@ -483,6 +495,8 @@
|
||||
"DisplayText",
|
||||
"LoadVideo",
|
||||
"MiniCPM_VQA",
|
||||
"MiniCPM_VQA_Polished",
|
||||
"MultipleImagesInput",
|
||||
"PreViewVideo"
|
||||
],
|
||||
{
|
||||
@@ -875,14 +889,6 @@
|
||||
"title_aux": "visuallabs_comfyui_nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText": [
|
||||
[
|
||||
"AnyTextNode_Zho"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-AnyText [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AuraSR-ZHO": [
|
||||
[
|
||||
"AuraSR_Lterative_Zho",
|
||||
@@ -1284,8 +1290,42 @@
|
||||
"StableCascade_SuperResolutionControlnet",
|
||||
"StableZero123_Conditioning",
|
||||
"StableZero123_Conditioning_Batched",
|
||||
"StubFloat",
|
||||
"StubImage",
|
||||
"StubInt",
|
||||
"StubMask",
|
||||
"StyleModelApply",
|
||||
"StyleModelLoader",
|
||||
"TestAccumulateNode",
|
||||
"TestAccumulationGetItemNode",
|
||||
"TestAccumulationGetLengthNode",
|
||||
"TestAccumulationHeadNode",
|
||||
"TestAccumulationSetItemNode",
|
||||
"TestAccumulationTailNode",
|
||||
"TestAccumulationToListNode",
|
||||
"TestBoolOperationNode",
|
||||
"TestCustomIsChanged",
|
||||
"TestCustomValidation1",
|
||||
"TestCustomValidation2",
|
||||
"TestCustomValidation3",
|
||||
"TestCustomValidation4",
|
||||
"TestCustomValidation5",
|
||||
"TestDynamicDependencyCycle",
|
||||
"TestExecutionBlocker",
|
||||
"TestFloatConditions",
|
||||
"TestForLoopClose",
|
||||
"TestForLoopOpen",
|
||||
"TestIntConditions",
|
||||
"TestIntMathOperation",
|
||||
"TestLazyMixImages",
|
||||
"TestListToAccumulationNode",
|
||||
"TestMakeListNode",
|
||||
"TestMixedExpansionReturns",
|
||||
"TestStringConditions",
|
||||
"TestToBoolNode",
|
||||
"TestVariadicAverage",
|
||||
"TestWhileLoopClose",
|
||||
"TestWhileLoopOpen",
|
||||
"ThresholdMask",
|
||||
"TomePatchModel",
|
||||
"TripleCLIPLoader",
|
||||
@@ -1692,7 +1732,12 @@
|
||||
"https://github.com/jh-leon-kim/ComfyUI-JHK-utils": [
|
||||
[
|
||||
"JHK_Utils_ImageRemoveBackground",
|
||||
"JHK_Utils_LargestImageSelector",
|
||||
"JHK_Utils_LoadEmbed",
|
||||
"JHK_Utils_LoadImageFromPath",
|
||||
"JHK_Utils_RandomImageSelector",
|
||||
"JHK_Utils_SelectSingleImageFromPath",
|
||||
"JHK_Utils_string_filter",
|
||||
"JHK_Utils_string_merge"
|
||||
],
|
||||
{
|
||||
@@ -2013,6 +2058,18 @@
|
||||
"title_aux": "ComfyUI Build and Train Your Network [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/logtd/ComfyUI-Fluxtapoz": [
|
||||
[
|
||||
"FluxDeGuidance",
|
||||
"FluxInverseSampler",
|
||||
"InFluxFlipSigmas",
|
||||
"InFluxModelSamplingPred",
|
||||
"OutFluxModelSamplingPred"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Fluxtapoz [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/logtd/ComfyUI-MotionThiefExperiment": [
|
||||
[
|
||||
"ApplyRefMotionNode",
|
||||
@@ -2165,6 +2222,14 @@
|
||||
"title_aux": "ComfyUI GLIGEN GUI Node"
|
||||
}
|
||||
],
|
||||
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
|
||||
[
|
||||
"TextOverlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-TextOverlay"
|
||||
}
|
||||
],
|
||||
"https://github.com/neuratech-ai/ComfyUI-MultiGPU": [
|
||||
[
|
||||
"CLIPLoaderMultiGPU",
|
||||
@@ -2178,6 +2243,15 @@
|
||||
"title_aux": "ComfyUI-MultiGPU"
|
||||
}
|
||||
],
|
||||
"https://github.com/neverbiasu/ComfyUI-ControlNeXt": [
|
||||
[
|
||||
"ControlNextPipelineConfig",
|
||||
"ControlNextSDXL"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-ControlNeXt [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/nidefawl/ComfyUI-nidefawl": [
|
||||
[
|
||||
"BlendImagesWithBoundedMasks",
|
||||
@@ -2321,6 +2395,17 @@
|
||||
"title_aux": "SDFXBridgeForComfyUI - ComfyUI Custom Node for SDFX Integration"
|
||||
}
|
||||
],
|
||||
"https://github.com/sebord/ComfyUI-LMCQ": [
|
||||
[
|
||||
"LmcqImageSaver",
|
||||
"LmcqImageSaverTransit",
|
||||
"LmcqImageSaverWeb",
|
||||
"LmcqLoadFluxNF4Checkpoint"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-LMCQ [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/shadowcz007/ComfyUI-PuLID-Test": [
|
||||
[
|
||||
"ApplyPulid",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,6 +11,16 @@
|
||||
|
||||
|
||||
|
||||
{
|
||||
"author": "ZHO-ZHO-ZHO",
|
||||
"title": "ComfyUI-AnyText [NOT MAINTAINED]",
|
||||
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText",
|
||||
"files": [
|
||||
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial implementation of [a/AnyText](https://github.com/tyxsspa/AnyText/tree/825bcc54687206b15bd7e28ba1a8b095989d58e3) for ComfyUI(EXP)"
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-pkg39 [DEPRECATED]",
|
||||
|
||||
@@ -9,7 +9,319 @@
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"author": "hben35096",
|
||||
"title": "ComfyUI-ReplenishNodes",
|
||||
"reference": "https://github.com/hben35096/ComfyUI-ReplenishNodes",
|
||||
"files": [
|
||||
"https://github.com/hben35096/ComfyUI-ReplenishNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This repository contains two custom nodes for ComfyUI that utilize the [a/CLIPSeg model](https://huggingface.co/docs/transformers/main/en/model_doc/clipseg) to generate masks for image inpainting tasks based on text prompts."
|
||||
},
|
||||
{
|
||||
"author": "markuryy",
|
||||
"title": "ComfyUI Flux Prompt Saver",
|
||||
"reference": "https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver",
|
||||
"files": [
|
||||
"https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "The Flux Prompt Saver is a custom node for ComfyUI that works in conjunction with the Flux Sampler Parameters node from the ComfyUI Essentials package. This node allows you to save images with metadata that includes information from the Flux Sampler Parameters pipeline."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-textarea-keybindings",
|
||||
"reference": "https://github.com/shinich39/comfyui-textarea-keybindings",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-textarea-keybindings"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Add keybindings to textarea."
|
||||
},
|
||||
{
|
||||
"author": "NvidiaGameWorksAdmin",
|
||||
"title": "ComfyUI-RTX-Remix",
|
||||
"id": "comfyui-rtx-remix",
|
||||
"reference": "https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix",
|
||||
"files": [
|
||||
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Use ComfyUI with RTX Remix to remaster classic games [a/https://github.com/NVIDIAGameWorks/rtx-remix](https://github.com/NVIDIAGameWorks/rtx-remix)"
|
||||
},
|
||||
{
|
||||
"author": "Ryuukeisyou",
|
||||
"title": "ComfyUI-SyncTalk",
|
||||
"id": "synctalk",
|
||||
"reference": "https://github.com/Ryuukeisyou/ComfyUI-SyncTalk",
|
||||
"files": [
|
||||
"https://github.com/Ryuukeisyou/ComfyUI-SyncTalk"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI implemntation for [a/SyncTalk](https://github.com/ZiqiaoPeng/SyncTalk)"
|
||||
},
|
||||
{
|
||||
"author": "aiXander",
|
||||
"title": "Eden.art LoRa Trainer",
|
||||
"id": "Eden",
|
||||
"reference": "https://github.com/edenartlab/sd-lora-trainer",
|
||||
"files": [
|
||||
"https://github.com/edenartlab/sd-lora-trainer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Maintained by Eden.art, this is a very fast, well tuned trainer for SDXL and SD15"
|
||||
},
|
||||
{
|
||||
"author": "ControlAltAI",
|
||||
"title": "ControlAltAI Nodes",
|
||||
"id": "controlaltai",
|
||||
"reference": "https://github.com/gseth/ControlAltAI-Nodes",
|
||||
"files":
|
||||
[
|
||||
"https://github.com/gseth/ControlAltAI-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Quality of Life ComfyUI nodes starting with Flux Resolution Calculator and Flux Sampler."
|
||||
},
|
||||
{
|
||||
"author": "OliverCrosby",
|
||||
"title": "ComfyUI Minimap",
|
||||
"id": "minimap",
|
||||
"reference": "https://github.com/OliverCrosby/Comfyui-Minimap",
|
||||
"files": [
|
||||
"https://github.com/OliverCrosby/Comfyui-Minimap"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple minimap in the bottom-right of the window showing the full workflow, left click to navigate"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use CrossImageAttention",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_CrossImageAttention",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_CrossImageAttention"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/CrossImageAttention](https://github.com/garibida/cross-image-attention)"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use Style-Aligned",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_Style_Aligned",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_Style_Aligned"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/style-aligned](https://github.com/google/style-aligned)"
|
||||
},
|
||||
{
|
||||
"author": "fairy-root",
|
||||
"title": "Flux Prompt Generator for ComfyUI",
|
||||
"reference": "https://github.com/fairy-root/Flux-Prompt-Generator",
|
||||
"files": [
|
||||
"https://github.com/fairy-root/Flux-Prompt-Generator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A flexible and customizable prompt generator for generating detailed and creative prompts for image generation models for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "doomy23",
|
||||
"title": "ComfyUI-D00MYsNodes",
|
||||
"reference": "https://github.com/doomy23/ComfyUI-D00MYsNodes",
|
||||
"files":
|
||||
[
|
||||
"https://github.com/doomy23/ComfyUI-D00MYsNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:ImagesToPNG. A set of custom nodes for ComfyUI I needed for myself but I'm sharing with the public."
|
||||
},
|
||||
{
|
||||
"author": "Sieyalixnet",
|
||||
"title": "ComfyUI_Textarea_Loaders",
|
||||
"reference": "https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders",
|
||||
"files":
|
||||
[
|
||||
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "An easy custom node that makes the some loaders' input as Text instead of file selector.\nFor example, there are many characters in different loras respectively. If you want to generate different characters' pictures, you have to select corresponding lora, and then edit the prompt. It may cost much time.\nTo solve this problem, You can use it with a chrome extension https://github.com/Sieyalixnet/ComfyUI-Prompt-Formatter-Extension that makes the queue prompt easier when you dealing with massive loras and prompt."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-group-selection",
|
||||
"reference": "https://github.com/shinich39/comfyui-group-selection",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-group-selection"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Create a new group of nodes."
|
||||
},
|
||||
{
|
||||
"author": "ryanontheinside",
|
||||
"title": "RyanOnTheInside",
|
||||
"reference": "https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside",
|
||||
"files": [
|
||||
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes introducing particle simulations, optical flow, and temporal masks"
|
||||
},
|
||||
{
|
||||
"author": "city96",
|
||||
"title": "ComfyUI-GGUF",
|
||||
"id": "gguf",
|
||||
"reference": "https://github.com/city96/ComfyUI-GGUF",
|
||||
"files": [
|
||||
"https://github.com/city96/ComfyUI-GGUF"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "GGUF Quantization support for native ComfyUI models\nThis is currently very much WIP. These custom nodes provide support for model files stored in the GGUF format popularized by llama.cpp.\nWhile quantization wasn't feasible for regular UNET models (conv2d), transformer/DiT models such as flux seem less affected by quantization. This allows running it in much lower bits per weight variable bitrate quants on low-end GPUs."
|
||||
},
|
||||
{
|
||||
"author": "smthemex",
|
||||
"title": "ComfyUI_MooER",
|
||||
"id": "comfyui_mooer",
|
||||
"reference": "https://github.com/smthemex/ComfyUI_MooER",
|
||||
"files": [
|
||||
"https://github.com/smthemex/ComfyUI_MooER"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "MooER is an LLM-based Speech Recognition and Translation Model from Moore Threads.You can use MooER when install ComfyUI_MooER node"
|
||||
},
|
||||
{
|
||||
"author": "fairy-root",
|
||||
"title": "Ollama and Llava Vision integration for ComfyUI",
|
||||
"reference": "https://github.com/fairy-root/comfyui-ollama-llms",
|
||||
"files": [
|
||||
"https://github.com/fairy-root/comfyui-ollama-llms"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "The PonySwitch node is a custom node for ComfyUI that modifies prompts based on a toggle switch and adds configurable pony tags."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-target-search",
|
||||
"reference": "https://github.com/shinich39/comfyui-target-search",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-target-search"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Move canvas to target on dragging connection."
|
||||
},
|
||||
{
|
||||
"author": "MinusZoneAI",
|
||||
"title": "ComfyUI-FluxExt-MZ",
|
||||
"reference": "https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ",
|
||||
"files": [
|
||||
"https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:MZ_Flux1PartialLoad_Patch. Tool nodes related to flux1"
|
||||
},
|
||||
{
|
||||
"author": "XLabs-AI",
|
||||
"title": "x-flux-comfyui",
|
||||
"reference": "https://github.com/XLabs-AI/x-flux-comfyui",
|
||||
"files": [
|
||||
"https://github.com/XLabs-AI/x-flux-comfyui"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Flux LoRA, Load Flux ControlNet, Apply Flux ControlNet, Xlabs Sampler"
|
||||
},
|
||||
{
|
||||
"author": "okgo4",
|
||||
"title": "ComfyUI-Mosaic-Mask",
|
||||
"reference": "https://github.com/okgo4/ComfyUI-Mosaic-Mask",
|
||||
"files": [
|
||||
"https://github.com/okgo4/ComfyUI-Mosaic-Mask"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-Mosaic-Mask is an automatic tool designed to detect and mask mosaic areas in input images."
|
||||
},
|
||||
{
|
||||
"author": "kijai",
|
||||
"title": "ComfyUI nodes for ControlNext-SVD v2",
|
||||
"reference": "https://github.com/kijai/ComfyUI-ControlNeXt-SVD",
|
||||
"files": [
|
||||
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "These nodes include my wrapper for the original diffusers pipeline, as well as work in progress native ComfyUI implementation.\nFor the diffusers wrapper models should be downloaded automatically, for the native version you can get the unet [a/here](https://huggingface.co/Kijai/ControlNeXt-SVD-V2-Comfy/blob/main/controlnext-svd_v2-unet-fp16_converted.safetensors)."
|
||||
},
|
||||
{
|
||||
"author": "Isi-dev",
|
||||
"title": "UniAnimate Nodes for ComfyUI",
|
||||
"id": "comfyuiunianimatenodes",
|
||||
"reference": "https://github.com/Isi-dev/ComfyUI-UniAnimate-W",
|
||||
"files": [
|
||||
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "These are nodes to animate an image with a reference video using UniAnimate. [w/Name conflict with AIFSH/ComfyUI-UniAnimate. Cannot install simulatenously.]"
|
||||
},
|
||||
{
|
||||
"author": "dadoirie",
|
||||
"title": "ComfyUI_Dados_Nodes",
|
||||
"reference": "https://github.com/dadoirie/ComfyUI_Dados_Nodes",
|
||||
"files": [
|
||||
"https://github.com/dadoirie/ComfyUI_Dados_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI_Dados_Nodes is a collection of custom nodes for ComfyUI, designed to enhance functionality and provide integration with various services, including Pinterest. This privacy policy explains how these nodes handle user data.\nNOTE: [a/privacy_policy](https://github.com/dadoirie/ComfyUI_Dados_Nodes/blob/master/privacy_policy.md)"
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI nodes to use VideoEditing",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_VideoEditing",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_VideoEditing"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Load Video to Images, Image to Canny, ControlNet Model Loader, VEDit Model Loader, VEdit Sampler. [a/https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn](https://github.com/SingleZombie/DiffusersExample/tree/main/ReplaceAttn)"
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": " connect-from-afar",
|
||||
"reference": "https://github.com/shinich39/comfyui-connect-from-afar",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-connect-from-afar"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Connect a new link from out of screen."
|
||||
},
|
||||
{
|
||||
"author": "StartHua",
|
||||
"title": "Comfyui_CXH_joy_caption",
|
||||
"reference": "https://github.com/StartHua/Comfyui_CXH_joy_caption",
|
||||
"files": [
|
||||
"https://github.com/StartHua/Comfyui_CXH_joy_caption"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:Joy_caption_load, Joy_caption"
|
||||
},
|
||||
{
|
||||
"author": "fanfanfan",
|
||||
"title": "chinese_clip_encode",
|
||||
"id": "chinese_clip_encode",
|
||||
"reference": "https://github.com/yuan199696/chinese_clip_encode",
|
||||
"files": [
|
||||
"https://github.com/yuan199696/chinese_clip_encode"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Support input of Chinese prompts."
|
||||
},
|
||||
{
|
||||
"author": "ChrisColeTech",
|
||||
"title": "ComfyUI-Line-counter",
|
||||
"reference": "https://github.com/ChrisColeTech/ComfyUI-Line-counter",
|
||||
"files": [
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Line-counter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom node to count the number of lines in a text file"
|
||||
},
|
||||
{
|
||||
"author": "Fuou Marinas",
|
||||
"title": "ComfyUI-StyleTransferPlus",
|
||||
@@ -300,7 +612,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:NSFW Detector"
|
||||
},
|
||||
|
||||
{
|
||||
"author": "shiimizu",
|
||||
"title": "Semantic-aware Guidance (S-CFG)",
|
||||
@@ -385,309 +696,6 @@
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/InternVL](https://github.com/OpenGVLab/InternVL)"
|
||||
},
|
||||
{
|
||||
"author": "SEkINVR",
|
||||
"title": "ComfyUI-Animator",
|
||||
"reference": "https://github.com/SEkINVR/ComfyUI-Animator",
|
||||
"files": [
|
||||
"https://github.com/SEkINVR/ComfyUI-Animator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This custom node for ComfyUI provides full-body animation capabilities, including facial rigging, various lighting styles, and green screen output."
|
||||
},
|
||||
{
|
||||
"author": "NeuralSamurAI",
|
||||
"title": "PromptJSON Node for ComfyUI",
|
||||
"reference": "https://github.com/NeuralSamurAI/ComfyUI-PromptJSON",
|
||||
"files": [
|
||||
"https://github.com/NeuralSamurAI/ComfyUI-PromptJSON"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "PromptJSON is a custom node for ComfyUI that structures natural language prompts and generates prompts for external LLM nodes in image generation workflows. It aids in creating consistent, schema-based image descriptions."
|
||||
},
|
||||
{
|
||||
"author": "leeguandong",
|
||||
"title": "ComfyUI_M3Net",
|
||||
"reference": "https://github.com/leeguandong/ComfyUI_M3Net",
|
||||
"files": [
|
||||
"https://github.com/leeguandong/ComfyUI_M3Net"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI for [a/M3Net](https://github.com/I2-Multimedia-Lab/M3Net)"
|
||||
},
|
||||
{
|
||||
"author": "al-swaiti",
|
||||
"title": "GeminiOllama ComfyUI Extension",
|
||||
"reference": "https://github.com/al-swaiti/ComfyUI-OllamaGemini",
|
||||
"files": [
|
||||
"https://github.com/al-swaiti/ComfyUI-OllamaGemini"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This extension integrates Google's Gemini API and Ollama into ComfyUI, allowing users to leverage these powerful language models directly within their ComfyUI workflows."
|
||||
},
|
||||
{
|
||||
"author": "lenskikh",
|
||||
"title": "Propmt Worker",
|
||||
"reference": "https://github.com/lenskikh/ComfyUI-Prompt-Worker",
|
||||
"files": [
|
||||
"https://github.com/lenskikh/ComfyUI-Prompt-Worker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node:Prompt Worker. A text manipulation node for postprocessing of prompt."
|
||||
},
|
||||
{
|
||||
"author": "SeniorPioner",
|
||||
"title": "SP-Nodes",
|
||||
"id": "spnodes",
|
||||
"reference": "https://github.com/bananasss00/ComfyUI-SP-Nodes",
|
||||
"files": [
|
||||
"https://github.com/bananasss00/ComfyUI-SP-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node Pack: PromptChecker for token toggling, KoboldCPP API, ModelMerging, Telegram-Bot-API, and more"
|
||||
},
|
||||
{
|
||||
"author": "AIFSH",
|
||||
"title": "DHLive-ComfyUI",
|
||||
"id": "dhlive",
|
||||
"reference": "https://github.com/AIFSH/DHLive-ComfyUI",
|
||||
"files": [
|
||||
"https://github.com/AIFSH/DHLive-ComfyUI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "a comfyui custom node for [a/DH_live](https://github.com/kleinlee/DH_live)"
|
||||
},
|
||||
{
|
||||
"author": "NeuralSamurAI",
|
||||
"title": "Dimensional Latent Perlin for ComfyUI",
|
||||
"reference": "https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin",
|
||||
"files": [
|
||||
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Dimensional Latent Perlin is a custom node for ComfyUI that generates Perlin noise in the latent space. This node is designed to work seamlessly with various diffusion models and can be used as an alternative or complement to standard random noise generators in image generation pipelines."
|
||||
},
|
||||
{
|
||||
"author": "Dobidop",
|
||||
"title": "Dobidop ComfyStereo",
|
||||
"id": "simple-stereoscopic",
|
||||
"reference": "https://github.com/Dobidop/ComfyStereo",
|
||||
"files": [
|
||||
"https://github.com/Dobidop/ComfyStereo"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Two simple nodes for stereoscopic image generation. Nodes: Stereo Image Node - a basic port from the Automatic1111 stereo script in thygate/stable-diffusion-webui-depthmap-script, LazyStereo - a naïve stereo image generator"
|
||||
},
|
||||
{
|
||||
"author": "caleboleary",
|
||||
"title": "Arc2Face ComfyUI Node Library",
|
||||
"reference": "https://github.com/caleboleary/ComfyUI-Arc2Face",
|
||||
"files": [
|
||||
"https://github.com/caleboleary/ComfyUI-Arc2Face"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This ComfyUI node library builds upon the work done to train the [a/Arc2Face](https://github.com/foivospar/Arc2Face) model by foivospar. It provides a set of nodes for ComfyUI that allow users to extract face embeddings, generate images based on these embeddings, and perform image-to-image transformations."
|
||||
},
|
||||
{
|
||||
"author": "NMWave",
|
||||
"title": "Image Captioning and Tagging Assistor Nodes",
|
||||
"id": "naderimagecaptionandtag",
|
||||
"reference": "https://github.com/NMWave/ComfyUI-Nader-Tagging",
|
||||
"files": [
|
||||
"https://github.com/NMWave/ComfyUI-Nader-Tagging"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A small set of useful nodes which aid with the tagging process by splitting tags and strings, alternating tags from multiple sources and removing duplicates."
|
||||
},
|
||||
{
|
||||
"author": "alpertunga-bile",
|
||||
"title": "image-caption-comfyui",
|
||||
"reference": "https://github.com/alpertunga-bile/image-caption-comfyui",
|
||||
"files": [
|
||||
"https://github.com/alpertunga-bile/image-caption-comfyui"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Image caption node for ComfyUI. You can load your image caption model and generate prompts with the given picture. Insert prompt node is added here to help the users to add their prompts easily."
|
||||
},
|
||||
{
|
||||
"author": "GeekyGhost",
|
||||
"title": "ComfyUI-GeekyRemB",
|
||||
"reference": "https://github.com/GeekyGhost/ComfyUI-GeekyRemB",
|
||||
"files": [
|
||||
"https://github.com/GeekyGhost/ComfyUI-GeekyRemB"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "GeekyRemB is a powerful and versatile image processing node for ComfyUI, designed to remove backgrounds from images with advanced customization options. This node leverages the rembg library and offers a wide range of features for fine-tuning the background removal process and enhancing the resulting images."
|
||||
},
|
||||
{
|
||||
"author": "AIFSH",
|
||||
"title": "AniTalker-ComfyUI",
|
||||
"id": "anitalker",
|
||||
"reference": "https://github.com/AIFSH/AniTalker-ComfyUI",
|
||||
"files": [
|
||||
"https://github.com/AIFSH/AniTalker-ComfyUI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "a comfyui custom node for [a/AniTalker](https://github.com/X-LANCE/AniTalker)"
|
||||
},
|
||||
{
|
||||
"author": "syaofox",
|
||||
"title": "ComfyUI_FoxTools",
|
||||
"reference": "https://github.com/syaofox/ComfyUI_FoxTools",
|
||||
"files": [
|
||||
"https://github.com/syaofox/ComfyUI_FoxTools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:BatchImageFromList, Load Face Occlusion Model, Create Face Mask, Simple FaceAlign, Cacul FaceAlign, Gen Blurbord, Face Align, Face Rotate, ImageAdd, LoadImageList, SaveImage Plus, RegTextFind"
|
||||
},
|
||||
{
|
||||
"author": "Anibaaal",
|
||||
"title": "ComfyUI UX Nodes",
|
||||
"reference": "https://github.com/Anibaaal/ComfyUI-UX-Nodes",
|
||||
"files": [
|
||||
"https://github.com/Anibaaal/ComfyUI-UX-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes: Easy Resolution Picker, Step Calculator"
|
||||
},
|
||||
{
|
||||
"author": "aonekoss",
|
||||
"title": "ComfyUI-Counter",
|
||||
"reference": "https://github.com/oleksandr612/ComfyUI-Counter",
|
||||
"files": [
|
||||
"https://github.com/oleksandr612/ComfyUI-Counter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple counter, when pressing 'Queue Prompt' resets the count."
|
||||
},
|
||||
{
|
||||
"author": "emojiiii",
|
||||
"title": "ComfyUI_Emojiiii_Custom_Nodes",
|
||||
"reference": "https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes",
|
||||
"files": [
|
||||
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes:MultiTextEncode, KolorsMultiTextEncode"
|
||||
},
|
||||
{
|
||||
"author": "da2el-ai",
|
||||
"title": "D2 Send Eagle",
|
||||
"id": "d2-send-eagle",
|
||||
"reference": "https://github.com/da2el-ai/ComfyUI-d2-send-eagle",
|
||||
"files": [
|
||||
"https://github.com/da2el-ai/ComfyUI-d2-send-eagle"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This is a custom node for sending images generated in ComfyUI to the image management software Eagle. It's an extension of an existing custom node called [a/ComfyUI-send-eagle-slim](https://github.com/shingo1228/ComfyUI-send-eagle-slim), modified to suit my preferences. I'm grateful to Shingo.T for creating the excellent original custom node."
|
||||
},
|
||||
{
|
||||
"author": "Extraltodeus",
|
||||
"title": "Skimmed_CFG",
|
||||
"id": "skimmed-cfg",
|
||||
"reference": "https://github.com/Extraltodeus/Skimmed_CFG",
|
||||
"files": [
|
||||
"https://github.com/Extraltodeus/Skimmed_CFG"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A powerful anti-burn allowing much higher CFG scales for latent diffusion models (for ComfyUI)"
|
||||
},
|
||||
{
|
||||
"author": "noarche",
|
||||
"title": "Color Enhance",
|
||||
"id": "color-enhance",
|
||||
"reference": "https://github.com/noarche/sd-webui-color-enhance",
|
||||
"files": [
|
||||
"https://github.com/noarche/sd-webui-color-enhance"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Script for [a/AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui) and node for ComfyUI to enhance colors.\nThis is the same algorithm GIMP/GEGL uses for color enhancement. The gist of this implementation is that it converts the color space to [CIELCh(ab) and normalizes the chroma (or '[a/colorfulness](https://en.wikipedia.org/wiki/Colorfulness)') component. Original source can be found in the link below."
|
||||
},
|
||||
{
|
||||
"author": "PowerHouseMan",
|
||||
"title": "ComfyUI-AdvancedLivePortrait",
|
||||
"id": "advancedliveportrait",
|
||||
"reference": "https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait",
|
||||
"files": [
|
||||
"https://github.com/PowerHouseMan/ComfyUI-AdvancedLivePortrait"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "AdvancedLivePortrait with Facial expression editor"
|
||||
},
|
||||
{
|
||||
"author": "cdxOo",
|
||||
"title": "Text Node With Comments (@cdxoo)",
|
||||
"reference": "https://github.com/cdxOo/comfyui-text-node-with-comments",
|
||||
"files": [
|
||||
"https://github.com/cdxOo/comfyui-text-node-with-comments"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "multiline text node that strips c-style comments (i.e.'//' and '/* ... */') before passing output string downstream"
|
||||
},
|
||||
{
|
||||
"author": "11dogzi",
|
||||
"title": "Comfyui-ergouzi-kaiguan",
|
||||
"id": "ergouzi-nodes",
|
||||
"reference": "https://github.com/11dogzi/Comfyui-ergouzi-kaiguan",
|
||||
"files": [
|
||||
"https://github.com/11dogzi/Comfyui-ergouzi-kaiguan"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Group switching control, one click control to ignore and disable multiple groups, as well as wired switch combination nodes, allowing for arbitrary switching of annotation names"
|
||||
},
|
||||
{
|
||||
"author": "neverbiasu",
|
||||
"title": "ComfyUI SAM2(Segment Anything 2)",
|
||||
"id": "sam2",
|
||||
"reference": "https://github.com/neverbiasu/ComfyUI-SAM2",
|
||||
"files": [
|
||||
"https://github.com/neverbiasu/ComfyUI-SAM2"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This project adapts the SAM2 to incorporate functionalities from [a/comfyui_segment_anything](https://github.com/storyicon/comfyui_segment_anything). Many thanks to continue-revolution for their foundational work."
|
||||
},
|
||||
{
|
||||
"author": "kijai",
|
||||
"title": "ComfyUI-segment-anything-2",
|
||||
"id": "segment-anything-2",
|
||||
"reference": "https://github.com/kijai/ComfyUI-segment-anything-2",
|
||||
"files": [
|
||||
"https://github.com/kijai/ComfyUI-segment-anything-2"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodes to use [a/segment-anything-2](https://github.com/facebookresearch/segment-anything-2) for image or video segmentation."
|
||||
},
|
||||
{
|
||||
"author": "akatz-ai",
|
||||
"title": "Akatz Custom Nodes",
|
||||
"id": "akatz-ai",
|
||||
"reference": "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes",
|
||||
"files": [
|
||||
"https://github.com/akatz-ai/ComfyUI-AKatz-Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Simple custom node pack for nodes I use in my workflows. Includes Dilate Mask Linear for animating masks."
|
||||
},
|
||||
{
|
||||
"author": "MiddleKD",
|
||||
"title": "ComfyUI-mem-safe-wrapper",
|
||||
"reference": "https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper",
|
||||
"files": [
|
||||
"https://github.com/MiddleKD/ComfyUI-mem-safe-wrapper"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI's Smart Memory Management efficiently manages RAM, GPU memory, and garbage collection. This feature keeps frequently used models in memory to increase inference speed, and dynamically releases less important models when memory is low to optimize resources. However, not all ComfyUI custom node developers create nodes that are compatible with Smart memory management. This includes several impressive models. Mem-safe-wrapper is a custom node that wraps these model nodes to enable ComfyUI's Smart memory management capabilities."
|
||||
},
|
||||
{
|
||||
"author": "teward",
|
||||
"title": "Comfy-Sentry",
|
||||
"reference": "https://github.com/teward/Comfy-Sentry",
|
||||
"files": [
|
||||
"https://github.com/teward/Comfy-Sentry"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node that activates integration with a Sentry instance for loading. Has no actual nodes."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -857,9 +857,7 @@
|
||||
"FLATTEN (JOV) \u2b07\ufe0f",
|
||||
"GLSL (JOV) \ud83c\udf69",
|
||||
"GLSL BLEND LINEAR (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL FILTER RANGE (JOV) \ud83e\uddd9\ud83c\udffd\u200d\u2640\ufe0f",
|
||||
"GLSL GRAYSCALE (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV ADJUST (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV-2-LAB (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL HSV-2-RGB (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
"GLSL LAB-2-HSV (JOV) \ud83e\uddd9\ud83c\udffd",
|
||||
@@ -909,9 +907,9 @@
|
||||
],
|
||||
"https://github.com/Anibaaal/ComfyUI-UX-Nodes": [
|
||||
[
|
||||
"DenoiseCalculator",
|
||||
"EasyResolutionPicker",
|
||||
"StepCalculator"
|
||||
"SmoothCurveMerger",
|
||||
"UNETSave"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI UX Nodes"
|
||||
@@ -1466,6 +1464,15 @@
|
||||
"title_aux": "ComfyUI_Ib_CustomNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ChrisColeTech/ComfyUI-Line-counter": [
|
||||
[
|
||||
"DirectoryFileCounter",
|
||||
"TextFileLineCounter"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Line-counter"
|
||||
}
|
||||
],
|
||||
"https://github.com/Clybius/ComfyUI-Extra-Samplers": [
|
||||
[
|
||||
"GeometricCFGGuider",
|
||||
@@ -2063,6 +2070,7 @@
|
||||
"BinaryPreprocessor",
|
||||
"CannyEdgePreprocessor",
|
||||
"ColorPreprocessor",
|
||||
"ControlNetAuxSimpleAddText",
|
||||
"ControlNetPreprocessorSelector",
|
||||
"DSINE-NormalMapPreprocessor",
|
||||
"DWPreprocessor",
|
||||
@@ -2070,6 +2078,7 @@
|
||||
"DepthAnythingPreprocessor",
|
||||
"DepthAnythingV2Preprocessor",
|
||||
"DiffusionEdge_Preprocessor",
|
||||
"ExecuteAllControlNetPreprocessors",
|
||||
"FacialPartColoringFromPoseKps",
|
||||
"FakeScribblePreprocessor",
|
||||
"HEDPreprocessor",
|
||||
@@ -2347,14 +2356,20 @@
|
||||
],
|
||||
"https://github.com/FuouM/ComfyUI-StyleTransferPlus": [
|
||||
[
|
||||
"AESFA",
|
||||
"AesFAStyleBlend",
|
||||
"AesPA",
|
||||
"CAST",
|
||||
"CoralColorTransfer",
|
||||
"EFDM",
|
||||
"MicroAST",
|
||||
"NeuralNeighbor"
|
||||
"NeuralNeighbor",
|
||||
"TSSAT",
|
||||
"UniST",
|
||||
"UniST_Video"
|
||||
],
|
||||
{
|
||||
"author": "Fuou Marinas",
|
||||
"author": "ZJU",
|
||||
"description": "A collection of style transfer nodes.",
|
||||
"nickname": "StyleTransferPlus",
|
||||
"title": "ComfyUI-StyleTransferPlus",
|
||||
@@ -2763,11 +2778,22 @@
|
||||
"title_aux": "ComfyUI-Stereopsis"
|
||||
}
|
||||
],
|
||||
"https://github.com/Isi-dev/ComfyUI-UniAnimate-W": [
|
||||
[
|
||||
"Gen_align_pose",
|
||||
"UniAnimateImage"
|
||||
],
|
||||
{
|
||||
"title_aux": "UniAnimate Nodes for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/IuvenisSapiens/ComfyUI_MiniCPM-V-2_6-int4": [
|
||||
[
|
||||
"DisplayText",
|
||||
"LoadVideo",
|
||||
"MiniCPM_VQA",
|
||||
"MiniCPM_VQA_Polished",
|
||||
"MultipleImagesInput",
|
||||
"PreViewVideo"
|
||||
],
|
||||
{
|
||||
@@ -3217,6 +3243,7 @@
|
||||
"ADE_MultivalConvertToMask",
|
||||
"ADE_MultivalDynamic",
|
||||
"ADE_MultivalDynamicFloatInput",
|
||||
"ADE_MultivalDynamicFloats",
|
||||
"ADE_MultivalScaledMask",
|
||||
"ADE_NoiseLayerAdd",
|
||||
"ADE_NoiseLayerAddWeighted",
|
||||
@@ -3756,10 +3783,13 @@
|
||||
],
|
||||
"https://github.com/MohammadAboulEla/ComfyUI-iTools": [
|
||||
[
|
||||
"iTools_Prompt"
|
||||
"iToolsAddOverlay",
|
||||
"iToolsLoadImagePlus",
|
||||
"iToolsPromptLoader",
|
||||
"iToolsPromptSaver"
|
||||
],
|
||||
{
|
||||
"title_aux": "iTools ImageLoaderPlus"
|
||||
"title_aux": "ComfyUI-iTools"
|
||||
}
|
||||
],
|
||||
"https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": [
|
||||
@@ -3856,6 +3886,14 @@
|
||||
"title_aux": "ComfyUI_SSStereoscope"
|
||||
}
|
||||
],
|
||||
"https://github.com/Munkyfoot/ComfyUI-TextOverlay": [
|
||||
[
|
||||
"Text Overlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-TextOverlay"
|
||||
}
|
||||
],
|
||||
"https://github.com/MushroomFleet/DJZ-Nodes": [
|
||||
[
|
||||
"AspectSize",
|
||||
@@ -3904,6 +3942,38 @@
|
||||
"title_aux": "Image Captioning and Tagging Assistor Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/NVIDIAGameWorks/ComfyUI-RTX-Remix": [
|
||||
[
|
||||
"RTXRemixCreateLayer",
|
||||
"RTXRemixDefineLayerId",
|
||||
"RTXRemixDeleteFile",
|
||||
"RTXRemixEndContext",
|
||||
"RTXRemixGetEditTarget",
|
||||
"RTXRemixGetLayers",
|
||||
"RTXRemixGetTextures",
|
||||
"RTXRemixIngestTexture",
|
||||
"RTXRemixInvertBool",
|
||||
"RTXRemixLayerType",
|
||||
"RTXRemixLayerTypes",
|
||||
"RTXRemixMuteLayer",
|
||||
"RTXRemixRemoveLayer",
|
||||
"RTXRemixRestAPIDetails",
|
||||
"RTXRemixSaveLayer",
|
||||
"RTXRemixSetEditTarget",
|
||||
"RTXRemixSetTexture",
|
||||
"RTXRemixStartContext",
|
||||
"RTXRemixStrToList",
|
||||
"RTXRemixStringConcatenate",
|
||||
"RTXRemixStringConstant",
|
||||
"RTXRemixSwitch",
|
||||
"RTXRemixTextureTypeToUSDAttribute",
|
||||
"RTXRemixTexturesType",
|
||||
"RTXRemixTexturesTypes"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-RTX-Remix"
|
||||
}
|
||||
],
|
||||
"https://github.com/NeuralSamurAI/ComfyUI-Dimensional-Latent-Perlin": [
|
||||
[
|
||||
"NoisyLatentPerlinD"
|
||||
@@ -4533,6 +4603,9 @@
|
||||
"MergeAudioNode",
|
||||
"MergeImageBatches",
|
||||
"MergeLatentBatches",
|
||||
"MuseAudioFeatureExtractionNode",
|
||||
"MuseImageFeatureExtractionNode",
|
||||
"MuseTalkNode",
|
||||
"RVC-Studio.LoadAudio",
|
||||
"RVC-Studio.PreviewAudio",
|
||||
"RVCNode",
|
||||
@@ -4943,6 +5016,15 @@
|
||||
"title_aux": "Lazy Pony Prompter"
|
||||
}
|
||||
],
|
||||
"https://github.com/Sieyalixnet/ComfyUI_Textarea_Loaders": [
|
||||
[
|
||||
"CheckPointLoader_Text",
|
||||
"LoRALoader_Text"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Textarea_Loaders"
|
||||
}
|
||||
],
|
||||
"https://github.com/Smirnov75/ComfyUI-mxToolkit": [
|
||||
[
|
||||
"mxSeed",
|
||||
@@ -5094,6 +5176,15 @@
|
||||
"title_aux": "ComfyUI_Seg_VITON"
|
||||
}
|
||||
],
|
||||
"https://github.com/StartHua/Comfyui_CXH_joy_caption": [
|
||||
[
|
||||
"Joy_caption",
|
||||
"Joy_caption_load"
|
||||
],
|
||||
{
|
||||
"title_aux": "Comfyui_CXH_joy_caption"
|
||||
}
|
||||
],
|
||||
"https://github.com/StartHua/Comfyui_joytag": [
|
||||
[
|
||||
"CXH_JoyTag"
|
||||
@@ -5732,6 +5823,7 @@
|
||||
"ttN text7BOX_concat",
|
||||
"ttN textCycleLine",
|
||||
"ttN textDebug",
|
||||
"ttN textOutput",
|
||||
"ttN tinyLoader",
|
||||
"ttN xyPlot"
|
||||
],
|
||||
@@ -6185,6 +6277,18 @@
|
||||
"title_aux": "ComfyUI Simply Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/XLabs-AI/x-flux-comfyui": [
|
||||
[
|
||||
"ApplyFluxControlNet",
|
||||
"FluxLoraLoader",
|
||||
"LoadFluxControlNet",
|
||||
"LoadFluxModel",
|
||||
"XlabsSampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "x-flux-comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/XmYx/deforum-comfy-nodes": [
|
||||
[
|
||||
"DeforumAddNoiseNode",
|
||||
@@ -7521,7 +7625,7 @@
|
||||
"ApplyRAUNetSimple"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI jank HiDiffusion"
|
||||
"title_aux": "comfyui_jankhidiffusion"
|
||||
}
|
||||
],
|
||||
"https://github.com/blepping/comfyui_overly_complicated_sampling": [
|
||||
@@ -8716,15 +8820,15 @@
|
||||
"title_aux": "Image chooser"
|
||||
}
|
||||
],
|
||||
"https://github.com/chrisgoringe/cg-noise": [
|
||||
"https://github.com/chrisgoringe/cg-noisetools": [
|
||||
[
|
||||
"Hijack",
|
||||
"KSampler Advanced with Variations",
|
||||
"KSampler with Variations",
|
||||
"UnHijack"
|
||||
"Batch Noise Simulate",
|
||||
"Mix Noise",
|
||||
"Seperable Batch Noise",
|
||||
"Shape Noise"
|
||||
],
|
||||
{
|
||||
"title_aux": "Variation seeds"
|
||||
"title_aux": "Noise variation and batch noise tools"
|
||||
}
|
||||
],
|
||||
"https://github.com/chrisgoringe/cg-use-everywhere": [
|
||||
@@ -8789,6 +8893,14 @@
|
||||
"title_aux": "youtube-dl-comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/city96/ComfyUI-GGUF": [
|
||||
[
|
||||
"UnetLoaderGGUF"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-GGUF"
|
||||
}
|
||||
],
|
||||
"https://github.com/city96/ComfyUI_ColorMod": [
|
||||
[
|
||||
"CV2Tonemap",
|
||||
@@ -9099,8 +9211,42 @@
|
||||
"StableCascade_SuperResolutionControlnet",
|
||||
"StableZero123_Conditioning",
|
||||
"StableZero123_Conditioning_Batched",
|
||||
"StubFloat",
|
||||
"StubImage",
|
||||
"StubInt",
|
||||
"StubMask",
|
||||
"StyleModelApply",
|
||||
"StyleModelLoader",
|
||||
"TestAccumulateNode",
|
||||
"TestAccumulationGetItemNode",
|
||||
"TestAccumulationGetLengthNode",
|
||||
"TestAccumulationHeadNode",
|
||||
"TestAccumulationSetItemNode",
|
||||
"TestAccumulationTailNode",
|
||||
"TestAccumulationToListNode",
|
||||
"TestBoolOperationNode",
|
||||
"TestCustomIsChanged",
|
||||
"TestCustomValidation1",
|
||||
"TestCustomValidation2",
|
||||
"TestCustomValidation3",
|
||||
"TestCustomValidation4",
|
||||
"TestCustomValidation5",
|
||||
"TestDynamicDependencyCycle",
|
||||
"TestExecutionBlocker",
|
||||
"TestFloatConditions",
|
||||
"TestForLoopClose",
|
||||
"TestForLoopOpen",
|
||||
"TestIntConditions",
|
||||
"TestIntMathOperation",
|
||||
"TestLazyMixImages",
|
||||
"TestListToAccumulationNode",
|
||||
"TestMakeListNode",
|
||||
"TestMixedExpansionReturns",
|
||||
"TestStringConditions",
|
||||
"TestToBoolNode",
|
||||
"TestVariadicAverage",
|
||||
"TestWhileLoopClose",
|
||||
"TestWhileLoopOpen",
|
||||
"ThresholdMask",
|
||||
"TomePatchModel",
|
||||
"TripleCLIPLoader",
|
||||
@@ -9513,6 +9659,14 @@
|
||||
"title_aux": "D2 Steps"
|
||||
}
|
||||
],
|
||||
"https://github.com/dadoirie/ComfyUI_Dados_Nodes": [
|
||||
[
|
||||
"PinterestImageNode"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_Dados_Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/dagthomas/comfyui_dagthomas": [
|
||||
[
|
||||
"APNLatent",
|
||||
@@ -9520,14 +9674,16 @@
|
||||
"CFGSkimming",
|
||||
"CustomPromptLoader",
|
||||
"DynamicStringCombinerNode",
|
||||
"FileReaderNode",
|
||||
"FlexibleStringMergerNode",
|
||||
"GPT4MiniNode",
|
||||
"GPT4VisionNode",
|
||||
"Gpt4CustomVision",
|
||||
"Gpt4VisionCloner",
|
||||
"MergedOllamaNode",
|
||||
"MedianOppositeColorNode",
|
||||
"OllamaNode",
|
||||
"PGSD3LatentGenerator",
|
||||
"ProminentOppositeColorNode",
|
||||
"PromptGenerator",
|
||||
"RandomIntegerNode",
|
||||
"SentenceMixerNode",
|
||||
@@ -9980,6 +10136,15 @@
|
||||
"title_aux": "ComfyUI-Keyframed"
|
||||
}
|
||||
],
|
||||
"https://github.com/doomy23/ComfyUI-D00MYsNodes": [
|
||||
[
|
||||
"Images_Converter|D00MYs",
|
||||
"Show_Text|D00MYs"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-D00MYsNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/drago87/ComfyUI_Dragos_Nodes": [
|
||||
[
|
||||
"file_padding",
|
||||
@@ -10072,7 +10237,15 @@
|
||||
"WidthHeightPicker"
|
||||
],
|
||||
{
|
||||
"title_aux": "Various custom nodes by Eden.art"
|
||||
"title_aux": "Eden.art nodesuite"
|
||||
}
|
||||
],
|
||||
"https://github.com/edenartlab/sd-lora-trainer": [
|
||||
[
|
||||
"Eden_LoRa_trainer"
|
||||
],
|
||||
{
|
||||
"title_aux": "Eden.art LoRa Trainer"
|
||||
}
|
||||
],
|
||||
"https://github.com/emojiiii/ComfyUI_Emojiiii_Custom_Nodes": [
|
||||
@@ -10169,6 +10342,24 @@
|
||||
"title_aux": "ComfyUI-Showrunner-Utils"
|
||||
}
|
||||
],
|
||||
"https://github.com/fairy-root/Flux-Prompt-Generator": [
|
||||
[
|
||||
"FluxPromptGenerator"
|
||||
],
|
||||
{
|
||||
"title_aux": "Flux Prompt Generator for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/fairy-root/comfyui-ollama-llms": [
|
||||
[
|
||||
"ConcatenateText",
|
||||
"llava",
|
||||
"ollama"
|
||||
],
|
||||
{
|
||||
"title_aux": "Ollama and Llava Vision integration for ComfyUI"
|
||||
}
|
||||
],
|
||||
"https://github.com/fearnworks/ComfyUI_FearnworksNodes": [
|
||||
[
|
||||
"Count Files in Directory (FW)",
|
||||
@@ -10316,9 +10507,9 @@
|
||||
"FL_Shadertoy",
|
||||
"FL_SimpleGPTVision",
|
||||
"FL_SystemCheck",
|
||||
"FL_TD_Sampler",
|
||||
"FL_TetrisGame",
|
||||
"FL_TimeLine",
|
||||
"FL_UpscaleModel",
|
||||
"FL_VideoCropMask",
|
||||
"FL_VideoRecompose",
|
||||
"FL_ZipDirectory",
|
||||
@@ -10716,7 +10907,7 @@
|
||||
"SimpleChat"
|
||||
],
|
||||
{
|
||||
"title_aux": "SaltAI Language Toolkit"
|
||||
"title_aux": "SaltAI_Language_Toolkit"
|
||||
}
|
||||
],
|
||||
"https://github.com/giriss/comfy-image-saver": [
|
||||
@@ -11081,6 +11272,15 @@
|
||||
"title_aux": "ComfyUI Griptape Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/gseth/ControlAltAI-Nodes": [
|
||||
[
|
||||
"FluxResolutionNode",
|
||||
"FluxSampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "ControlAltAI Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/guill/abracadabra-comfyui": [
|
||||
[
|
||||
"AbracadabraNode",
|
||||
@@ -11195,6 +11395,15 @@
|
||||
"title_aux": "ComfyUI OpenVoice"
|
||||
}
|
||||
],
|
||||
"https://github.com/hben35096/ComfyUI-ReplenishNodes": [
|
||||
[
|
||||
"CLIPSegToMask",
|
||||
"CombineSegMasks"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-ReplenishNodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/hben35096/ComfyUI-ToolBox": [
|
||||
[
|
||||
"AutoDLDownload",
|
||||
@@ -11251,6 +11460,7 @@
|
||||
"classify_function_plus",
|
||||
"classify_persona",
|
||||
"classify_persona_plus",
|
||||
"clear_file",
|
||||
"clear_model",
|
||||
"custom_persona",
|
||||
"discord_bot",
|
||||
@@ -11267,6 +11477,7 @@
|
||||
"feishu_tool",
|
||||
"file_combine",
|
||||
"file_combine_plus",
|
||||
"flux_persona",
|
||||
"get_string",
|
||||
"github_tool",
|
||||
"google_loader",
|
||||
@@ -12150,6 +12361,7 @@
|
||||
"JN_AudioSetChannels",
|
||||
"JN_AudioSlice",
|
||||
"JN_AudioSpeed",
|
||||
"JN_AudioSplitChannels",
|
||||
"JN_AudioStackChannels",
|
||||
"JN_AudioTempo",
|
||||
"JN_AudioTrimSilence",
|
||||
@@ -12203,6 +12415,9 @@
|
||||
"JN_MaskToImage",
|
||||
"JN_MathOperation",
|
||||
"JN_MathOperationArray",
|
||||
"JN_MeowHrtfAudio3d",
|
||||
"JN_MeowHrtfModel",
|
||||
"JN_MeowHrtfPosition",
|
||||
"JN_MeowLoadVoice",
|
||||
"JN_MeowSaveVoice",
|
||||
"JN_MeowSentenceSplit",
|
||||
@@ -12681,6 +12896,19 @@
|
||||
"title_aux": "ComfyUI-CCSR"
|
||||
}
|
||||
],
|
||||
"https://github.com/kijai/ComfyUI-ControlNeXt-SVD": [
|
||||
[
|
||||
"ControlNextDecode",
|
||||
"ControlNextDiffusersScheduler",
|
||||
"ControlNextGetPoses",
|
||||
"ControlNextSVDApply",
|
||||
"ControlNextSampler",
|
||||
"DownloadAndLoadControlNeXt"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes for ControlNext-SVD v2"
|
||||
}
|
||||
],
|
||||
"https://github.com/kijai/ComfyUI-DDColor": [
|
||||
[
|
||||
"DDColor_Colorize"
|
||||
@@ -12853,6 +13081,7 @@
|
||||
"JoinStringMulti",
|
||||
"JoinStrings",
|
||||
"LoadAndResizeImage",
|
||||
"LoadImagesFromFolderKJ",
|
||||
"LoadResAdapterNormalization",
|
||||
"MaskBatchMulti",
|
||||
"MaskOrImageToWeight",
|
||||
@@ -13270,6 +13499,18 @@
|
||||
"title_aux": "LNL Frame Selector"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_CrossImageAttention": [
|
||||
[
|
||||
"AppearanceTransferInference",
|
||||
"AppearanceTransferModelModelLoader",
|
||||
"CIAConfig",
|
||||
"LoadImagePath",
|
||||
"LoadLatents"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use CrossImageAttention"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_InternVL2": [
|
||||
[
|
||||
"DynamicPreprocess",
|
||||
@@ -13300,6 +13541,34 @@
|
||||
"title_aux": "ComfyUI_M3Net"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_Style_Aligned": [
|
||||
[
|
||||
"SAControlnet_ModelLoader",
|
||||
"SADepth",
|
||||
"SAHandler",
|
||||
"SAInversion",
|
||||
"SASDXLControlnetKsampler",
|
||||
"SASDXLKampler",
|
||||
"SASDXLTransferKsampler",
|
||||
"SASDXL_ModelLoader",
|
||||
"SchedulerLoader"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use Style-Aligned"
|
||||
}
|
||||
],
|
||||
"https://github.com/leeguandong/ComfyUI_VideoEditing": [
|
||||
[
|
||||
"LoadVideo2Images",
|
||||
"VEdit_ControlNet_ModelLoader",
|
||||
"VEdit_ModelLoader",
|
||||
"VEdit_Sampler",
|
||||
"VEdit_image2canny"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI nodes to use VideoEditing"
|
||||
}
|
||||
],
|
||||
"https://github.com/leestuartx/ComfyUI-GG": [
|
||||
[
|
||||
"AddPaddingToImage",
|
||||
@@ -14095,6 +14364,14 @@
|
||||
"title_aux": "Recommended Resolution Calculator"
|
||||
}
|
||||
],
|
||||
"https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver": [
|
||||
[
|
||||
"FluxPromptSaver"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI Flux Prompt Saver"
|
||||
}
|
||||
],
|
||||
"https://github.com/martijnat/comfyui-previewlatent": [
|
||||
[
|
||||
"PreviewLatent",
|
||||
@@ -14431,10 +14708,8 @@
|
||||
"CanvasCreatorSimple",
|
||||
"CircleCreator",
|
||||
"CirclesGenerator",
|
||||
"CreateCircleMask",
|
||||
"CreateMaskWithCanvas",
|
||||
"CreateNestedPNGMask",
|
||||
"CreatePolygonPNGMask",
|
||||
"CreateSimpleMask",
|
||||
"CreateTillingPNGMask",
|
||||
"CreateWatermarkRemovalMask",
|
||||
@@ -14452,6 +14727,7 @@
|
||||
"IntMultiplication",
|
||||
"IntSubtraction",
|
||||
"IntToFloatMultiplication",
|
||||
"LoRALoaderWithNameStacker",
|
||||
"LogicNot",
|
||||
"NoneToZero",
|
||||
"NumeralToString",
|
||||
@@ -14613,14 +14889,6 @@
|
||||
"title_aux": "ComfyUI-NegiTools"
|
||||
}
|
||||
],
|
||||
"https://github.com/neeltheninja/ComfyUI-TextOverlay": [
|
||||
[
|
||||
"Text Overlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-TextOverlay"
|
||||
}
|
||||
],
|
||||
"https://github.com/neverbiasu/ComfyUI-Image-Captioner": [
|
||||
[
|
||||
"ImageCaptioner"
|
||||
@@ -14766,7 +15034,7 @@
|
||||
"MMakerColorEnhance"
|
||||
],
|
||||
{
|
||||
"title_aux": "Color Enhance"
|
||||
"title_aux": "noarche/Color Enhance"
|
||||
}
|
||||
],
|
||||
"https://github.com/noembryo/ComfyUI-noEmbryo": [
|
||||
@@ -14869,6 +15137,14 @@
|
||||
"title_aux": "BrushNet"
|
||||
}
|
||||
],
|
||||
"https://github.com/okgo4/ComfyUI-Mosaic-Mask": [
|
||||
[
|
||||
"MosaicMask"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Mosaic-Mask"
|
||||
}
|
||||
],
|
||||
"https://github.com/olduvai-jp/ComfyUI-HfLoader": [
|
||||
[
|
||||
"Lora Loader From HF"
|
||||
@@ -15611,6 +15887,33 @@
|
||||
"title_aux": "Runtime44 ComfyUI Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside": [
|
||||
[
|
||||
"AudioControlledMaskMorph",
|
||||
"EmitterMovement",
|
||||
"GravityWell",
|
||||
"MaskMath",
|
||||
"MaskMorph",
|
||||
"MaskRings",
|
||||
"MaskTransform",
|
||||
"MaskWarp",
|
||||
"MovingShape",
|
||||
"OpticalFlowDirectionMask",
|
||||
"OpticalFlowMaskModulation",
|
||||
"OpticalFlowParticleSystem",
|
||||
"ParticleEmissionMask",
|
||||
"ParticleEmitter",
|
||||
"PulsatingParticleSystemMask",
|
||||
"SpringJointSetting",
|
||||
"StaticBody",
|
||||
"TextMaskNode",
|
||||
"Vortex",
|
||||
"_mfc"
|
||||
],
|
||||
{
|
||||
"title_aux": "RyanOnTheInside"
|
||||
}
|
||||
],
|
||||
"https://github.com/s1dlx/comfy_meh/raw/main/meh.py": [
|
||||
[
|
||||
"MergingExecutionHelper"
|
||||
@@ -15624,6 +15927,7 @@
|
||||
"ControlNet Selector",
|
||||
"ControlNetOptionalLoader",
|
||||
"DiffusersSelector",
|
||||
"MultiInputVariableRewrite",
|
||||
"SaveImageJPGNoMeta"
|
||||
],
|
||||
{
|
||||
@@ -15968,13 +16272,9 @@
|
||||
"BizyAirGenerateLightningImage",
|
||||
"BizyAirHEDPreprocessor",
|
||||
"BizyAirImageCaption",
|
||||
"BizyAirKolorsSampler",
|
||||
"BizyAirKolorsTextEncode",
|
||||
"BizyAirKolorsVAEDecode",
|
||||
"BizyAirKolorsVAEEncode",
|
||||
"BizyAirJoyCaption",
|
||||
"BizyAirLeReS_DepthMapPreprocessor",
|
||||
"BizyAirLineArtPreprocessor",
|
||||
"BizyAirMZChatGLM3TextEncode",
|
||||
"BizyAirM_LSDPreprocessor",
|
||||
"BizyAirMetric3D_DepthMapPreprocessor",
|
||||
"BizyAirMetric3D_NormalMapPreprocessor",
|
||||
@@ -15987,7 +16287,6 @@
|
||||
"BizyAirRemoveBackground",
|
||||
"BizyAirSAMPreprocessor",
|
||||
"BizyAirScribblePreprocessor",
|
||||
"BizyAirSetAPIKey",
|
||||
"BizyAirSiliconCloudLLMAPI",
|
||||
"BizyAirSuperResolution",
|
||||
"BizyAirTilePreprocessor",
|
||||
@@ -16226,6 +16525,15 @@
|
||||
"title_aux": "ComfyUI_MS_Diffusion"
|
||||
}
|
||||
],
|
||||
"https://github.com/smthemex/ComfyUI_MooER": [
|
||||
[
|
||||
"MooER_LoadModel",
|
||||
"MooER_Sampler"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_MooER"
|
||||
}
|
||||
],
|
||||
"https://github.com/smthemex/ComfyUI_ParlerTTS": [
|
||||
[
|
||||
"ParlerTTS_LoadModel",
|
||||
@@ -16807,6 +17115,7 @@
|
||||
"Compare-\ud83d\udd2c",
|
||||
"DebugPrint-\ud83d\udd2c",
|
||||
"Float-\ud83d\udd2c",
|
||||
"If ANY execute A else B-\ud83d\udd2c",
|
||||
"If ANY return A else B-\ud83d\udd2c",
|
||||
"Int-\ud83d\udd2c",
|
||||
"String-\ud83d\udd2c"
|
||||
@@ -17705,6 +18014,7 @@
|
||||
"easy detailerFix",
|
||||
"easy dynamiCrafterLoader",
|
||||
"easy float",
|
||||
"easy fluxLoader",
|
||||
"easy fullCascadeKSampler",
|
||||
"easy fullLoader",
|
||||
"easy fullkSampler",
|
||||
@@ -17917,6 +18227,22 @@
|
||||
"title_aux": "tdxh_node_comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuan199696/add_text_2_img": [
|
||||
[
|
||||
"AddText"
|
||||
],
|
||||
{
|
||||
"title_aux": "add_text_2_img"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuan199696/chinese_clip_encode": [
|
||||
[
|
||||
"ChineseCLIPEncode"
|
||||
],
|
||||
{
|
||||
"title_aux": "chinese_clip_encode"
|
||||
}
|
||||
],
|
||||
"https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": [
|
||||
[
|
||||
"DepthAnythingTensorrt"
|
||||
@@ -18065,6 +18391,7 @@
|
||||
"CheckpointLoaderSimpleWithSwitch",
|
||||
"ColorCorrectOfUtils",
|
||||
"ConcatTextOfUtils",
|
||||
"GenderControlOutput",
|
||||
"ImageBatchOneOrMore",
|
||||
"ImageCompositeMaskedWithSwitch",
|
||||
"ImageConcanateOfUtils",
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"models": [
|
||||
{
|
||||
"name": "TAEF1 Decoder",
|
||||
"type": "TAESD",
|
||||
"base": "FLUX.1",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
"filename": "taef1_decoder.pth",
|
||||
"url": "https://github.com/madebyollin/taesd/raw/main/taef1_decoder.pth",
|
||||
"size": "4.71MB"
|
||||
},
|
||||
{
|
||||
"name": "TAEF1 Encoder",
|
||||
"type": "TAESD",
|
||||
"base": "FLUX.1",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(FLUX.1 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
"filename": "taef1_encoder.pth",
|
||||
"url": "https://github.com/madebyollin/taesd/raw/main/taef1_encoder.pth",
|
||||
"size": "4.71MB"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "comfyanonymous/clip_l",
|
||||
"type": "clip",
|
||||
@@ -257,7 +280,7 @@
|
||||
{
|
||||
"name": "TAESD3 Decoder",
|
||||
"type": "TAESD",
|
||||
"base": "SDXL",
|
||||
"base": "SD3",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
@@ -268,7 +291,7 @@
|
||||
{
|
||||
"name": "TAESD3 Encoder",
|
||||
"type": "TAESD",
|
||||
"base": "SDXL",
|
||||
"base": "SD3",
|
||||
"save_path": "vae_approx",
|
||||
"description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||
"reference": "https://github.com/madebyollin/taesd",
|
||||
@@ -670,52 +693,6 @@
|
||||
"filename": "model.safetensors",
|
||||
"url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors",
|
||||
"size": "2.53GB"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "IC-Light/fc",
|
||||
"type": "IC-Light",
|
||||
"base": "SD1.5",
|
||||
"save_path": "unet/IC-Light",
|
||||
"description": "The default relighting model, conditioned on text and foreground",
|
||||
"reference": "https://huggingface.co/lllyasviel/ic-light",
|
||||
"filename": "iclight_sd15_fc.safetensors",
|
||||
"url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors",
|
||||
"size": "1.72GB"
|
||||
},
|
||||
{
|
||||
"name": "IC-Light/fbc",
|
||||
"type": "IC-Light",
|
||||
"base": "SD1.5",
|
||||
"save_path": "unet/IC-Light",
|
||||
"description": "Relighting model conditioned with text, foreground, and background",
|
||||
"reference": "https://huggingface.co/lllyasviel/ic-light",
|
||||
"filename": "iclight_sd15_fbc.safetensors",
|
||||
"url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors",
|
||||
"size": "1.72GB"
|
||||
},
|
||||
{
|
||||
"name": "IC-Light/fcon",
|
||||
"type": "IC-Light",
|
||||
"base": "SD1.5",
|
||||
"save_path": "unet/IC-Light",
|
||||
"description": "Same as iclight_sd15_fc.safetensors, but trained with offset noise",
|
||||
"reference": "https://huggingface.co/lllyasviel/ic-light",
|
||||
"filename": "iclight_sd15_fcon.safetensors",
|
||||
"url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors",
|
||||
"size": "1.72GB"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "MonsterMMORPG/insightface (for InstantID)",
|
||||
"type": "insightface",
|
||||
"base": "SDXL",
|
||||
"save_path": "insightface/models",
|
||||
"description": "MonsterMMORPG insightface model for cubiq/InstantID",
|
||||
"reference": "https://huggingface.co/MonsterMMORPG/tools/tree/main",
|
||||
"filename": "antelopev2.zip",
|
||||
"url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip",
|
||||
"size": "360.7MB"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import cm_global
|
||||
|
||||
security_check.security_check()
|
||||
|
||||
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
|
||||
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||
|
||||
|
||||
@@ -454,6 +455,9 @@ def is_installed(name):
|
||||
if match:
|
||||
name = match.group(1)
|
||||
|
||||
if name in cm_global.pip_blacklist:
|
||||
return True
|
||||
|
||||
if name in cm_global.pip_downgrade_blacklist:
|
||||
pips = get_installed_packages()
|
||||
|
||||
|
||||
@@ -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.48.7"
|
||||
version = "2.50.1"
|
||||
license = { file = "LICENSE.txt" }
|
||||
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user