diff --git a/__init__.py b/__init__.py index e7cc7273..3f2118c1 100644 --- a/__init__.py +++ b/__init__.py @@ -14,7 +14,7 @@ import concurrent import ssl from urllib.parse import urlparse -version = "V1.1" +version = "V1.2.1" print(f"### Loading: ComfyUI-Manager ({version})") diff --git a/custom-node-list.json b/custom-node-list.json index e0f5ffa7..750a8f6a 100644 --- a/custom-node-list.json +++ b/custom-node-list.json @@ -1473,7 +1473,7 @@ "files": [ "https://github.com/rgthree/rgthree-comfy" ], - "nodename_pattern": " (rgthree)$", + "nodename_pattern": " \\(rgthree\\)$", "install_type": "git-clone", "description": "Nodes: Seed, Reroute, Context, Lora Loader Stack, Context Switch, Fast Muter. These custom nodes helps organize the building of complex workflows." }, @@ -1688,14 +1688,14 @@ "description": "Input your desired output final resolution, it will automaticaly set the initial recommended SDXL ratio/size and its Upscale Factor to reach that output final resolution, also there's an option for 2x/4x reverse Upscale Factor. These all to avoid using bad/arbitary initial ratio/resolution." }, { - "author": "Nuked88", + "author": "Nuked", "title": "ComfyUI-N-Nodes", "reference": "https://github.com/Nuked88/ComfyUI-N-Nodes", "files": [ "https://github.com/Nuked88/ComfyUI-N-Nodes" ], "install_type": "git-clone", - "description": "A suite of custom nodes for ComfyUI, for now i just put Integer, string and float variable nodes." + "description": "A suite of custom nodes for ConfyUI that includes GPT text-prompt generation, LoadVideo,SaveVideo,LoadFramesFromFolder and FrameInterpolator" }, { "author": "Extraltodeus", @@ -2452,9 +2452,9 @@ "title": "noEmbryo nodes", "reference": "https://github.com/noembryo/ComfyUI-noEmbryo", "files": [ - "https://raw.githubusercontent.com/noembryo/ComfyUI-noEmbryo/master/nodes.py" + "https://github.com/noembryo/ComfyUI-noEmbryo" ], - "install_type": "copy", + "install_type": "git-clone", "description": "PromptTermList (1-6): are some nodes that help with the creation of Prompts inside ComfyUI. Resolution Scale outputs image dimensions using a scale factor. Regex Text Chopper outputs the chopped parts of a text using RegEx." }, { @@ -2677,6 +2677,97 @@ "install_type": "git-clone", "description": "Nodes:GradientPatchModelAddDownscale (Kohya Deep Shrink)." }, + { + "author": "Feidorian", + "title": "feidorian-ComfyNodes", + "reference": "https://github.com/Feidorian/feidorian-ComfyNodes", + "nodename_pattern": "^Feidorian_", + "files": [ + "https://github.com/Feidorian/feidorian-ComfyNodes" + ], + "install_type": "git-clone", + "description": "This extension provides various custom nodes. literals, loaders, logic, output, switches" + }, + { + "author": "wutipong", + "title": "ComfyUI-TextUtils", + "reference": "https://github.com/wutipong/ComfyUI-TextUtils", + "files": [ + "https://github.com/wutipong/ComfyUI-TextUtils" + ], + "install_type": "git-clone", + "description": "Nodes:Create N-Token String" + }, + { + "author": "natto-maki", + "title": "ComfyUI-NegiTools", + "reference": "https://github.com/natto-maki/ComfyUI-NegiTools", + "files": [ + "https://github.com/natto-maki/ComfyUI-NegiTools" + ], + "install_type": "git-clone", + "description": "Nodes:OpenAI DALLe3" + }, + { + "author": "LonicaMewinsky", + "title": "ComfyUI-RawSaver", + "reference": "https://github.com/LonicaMewinsky/ComfyUI-RawSaver", + "files": [ + "https://github.com/LonicaMewinsky/ComfyUI-RawSaver" + ], + "install_type": "git-clone", + "description": "Nodes:SaveTifImage. ComfyUI custom node for purpose of saving image as uint16 tif file." + }, + { + "author": "jojkaart", + "title": "ComfyUI-sampler-lcm-alternative", + "reference": "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative", + "files": [ + "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative" + ], + "install_type": "git-clone", + "description": "Nodes:LCMScheduler, SamplerLCMAlternative, SamplerLCMCycle. ComfyUI Custom Sampler nodes that add a new improved LCM sampler functions" + }, + { + "author": "GTSuya-Studio", + "title": "ComfyUI-GTSuya-Nodes", + "reference": "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes", + "files": [ + "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes" + ], + "install_type": "git-clone", + "description": "ComfyUI-GTSuya-Nodes is a ComyUI extension designed to add several wildcards supports into ComfyUI. Wildcards allow you to use __name__ syntax in your prompt to get a random line from a file named name.txt in a wildcards directory." + }, + { + "author": "oyvindg", + "title": "ComfyUI-TrollSuite", + "reference": "https://github.com/oyvindg/ComfyUI-TrollSuite", + "files": [ + "https://github.com/oyvindg/ComfyUI-TrollSuite" + ], + "install_type": "git-clone", + "description": "Nodes: BinaryImageMask, ImagePadding, LoadLastCreatedImage, RandomMask, TransparentImage." + }, + { + "author": "drago87", + "title": "ComfyUI_Dragos_Nodes", + "reference": "https://github.com/drago87/ComfyUI_Dragos_Nodes", + "files": [ + "https://github.com/drago87/ComfyUI_Dragos_Nodes" + ], + "install_type": "git-clone", + "description": "Nodes:File Padding, Image Info, VAE Loader With Name" + }, + { + "author": "ansonkao", + "title": "comfyui-geometry", + "reference": "https://github.com/ansonkao/comfyui-geometry", + "files": [ + "https://github.com/ansonkao/comfyui-geometry" + ], + "install_type": "git-clone", + "description": "Nodes: Mask to Centroid, Mask to Eigenvector. A small collection of custom nodes for use with ComfyUI, for geometry calculations" + }, { "author": "Off-Live", "title": "ComfyUI-off-suite", @@ -2685,7 +2776,7 @@ "https://github.com/Off-Live/ComfyUI-off-suite" ], "install_type": "copy", - "description": "Nodes:Image Crop Fit Node, OFF SEGS to Image, Crop Center wigh SEGS, GW Number Formatting Node." + "description": "Nodes:Image Crop Fit Node, OFF SEGS to Image, Crop Center wigh SEGS, Watermarking, GW Number Formatting Node." }, { "author": "Ser-Hilary", diff --git a/extension-node-map.json b/extension-node-map.json index 96ce0612..34b9d388 100644 --- a/extension-node-map.json +++ b/extension-node-map.json @@ -59,22 +59,26 @@ "https://github.com/Amorano/Jovimetrix": [ [ "\u2697\ufe0f Blend (jov)", + "\u2697\ufe0f Blend Mask (jov)", "\u2728 Shape Generator (jov)", "\ud83c\udf08 HSV (jov)", "\ud83c\udf31 Transform (jov)", - "\ud83c\udf87 Expand (jov)", + "\ud83c\udf69 GLSL (jov)", + "\ud83c\udf87 Extend (jov)", + "\ud83d\udcc9 Threshold (jov)", + "\ud83d\udcf7 WebCam (jov)", "\ud83d\udd06 Pixel Shader (jov)", "\ud83d\udd06 Pixel Shader Image (jov)", "\ud83d\udd30 Mirror (jov)", "\ud83d\udd33 Tile (jov)", "\ud83d\udd78\ufe0f Adjust (jov)", "\ud83d\uddfa\ufe0f Projection (jov)", + "\ud83d\ude8c Route (jov)", "\ud83d\udfea Constant (jov)" ], { "author": "amorano", - "description": "", - "nickname": "Jovimetrix", + "description": "Procedural & Compositing. Includes a Webcam node.", "title": "Jovimetrix Composition Pack", "title_aux": "Jovimetrix Composition Nodes" } @@ -491,8 +495,11 @@ ], "https://github.com/Fictiverse/ComfyUI_Fictiverse": [ [ + "Add Noise to Image with Mask", "Color correction", - "Displace Images with Mask" + "Displace Image with Depth", + "Displace Images with Mask", + "Zoom Image with Depth" ], { "title_aux": "ComfyUI Fictiverse Nodes" @@ -567,6 +574,17 @@ "title_aux": "ezXY scripts and nodes" } ], + "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": [ + [ + "Get From Danbooru", + "Simple Wildcards", + "Simple Wildcards (Dir.)", + "Wildcards" + ], + { + "title_aux": "ComfyUI-GTSuya-Nodes" + } + ], "https://github.com/Gourieff/comfyui-reactor-node": [ [ "ReActorFaceSwap", @@ -766,11 +784,20 @@ "title_aux": "ComfyBreakAnim" } ], + "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": [ + [ + "SaveTifImage" + ], + { + "title_aux": "ComfyUI-RawSaver" + } + ], "https://github.com/M1kep/ComfyLiterals": [ [ "Checkpoint", "Float", "Int", + "KepStringLiteral", "Lora", "Operation", "String" @@ -1402,10 +1429,15 @@ ], "https://github.com/THtianhao/ComfyUI-FaceChain": [ [ + "FCStyleLoraLoad", + "FC_CropAndPaste", + "FC_CropBottom", + "FC_CropFace", "FC_CropMask", "FC_FaceDetection", "FC_FaceFusion", - "FC_LoraMerge", + "FC_MaskOP", + "FC_ReplaceImage", "FC_Segment", "FC_StyleLoraLoad" ], @@ -1445,10 +1477,14 @@ "tri3d-atr-parse-batch", "tri3d-extract-hand", "tri3d-extract-parts-batch", + "tri3d-extract-parts-batch2", "tri3d-extract-parts-mask-batch", "tri3d-fuzzification", + "tri3d-interaction-canny", "tri3d-position-hands", - "tri3d-position-parts-batch" + "tri3d-position-parts-batch", + "tri3d-skin-feathered-padded-mask", + "tri3d-swap-pixels" ], { "title_aux": "tri3d-comfyui-nodes" @@ -1619,9 +1655,11 @@ [ "BLVAEEncode", "CLIPTextEncodeList", + "CLIPTextEncodeSequence2", "ConditioningBlend", "DebugInput", "KSamplerSeq", + "KSamplerSeq2", "VAEEncodeForInpaint (WAS)", "VividSharpen" ], @@ -2394,6 +2432,7 @@ "Loader", "Prompts", "SaveImages", + "Textbox", "Wildcards" ], { @@ -2649,6 +2688,16 @@ "title_aux": "ComfyUI-Vextra-Nodes" } ], + "https://github.com/drago87/ComfyUI_Dragos_Nodes": [ + [ + "file_padding", + "image_info", + "vae_loader" + ], + { + "title_aux": "ComfyUI_Dragos_Nodes" + } + ], "https://github.com/drustan-hawk/primitive-types": [ [ "float", @@ -2971,6 +3020,16 @@ "title_aux": "ComfyUI-Jjk-Nodes" } ], + "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": [ + [ + "LCMScheduler", + "SamplerLCMAlternative", + "SamplerLCMCycle" + ], + { + "title_aux": "ComfyUI-sampler-lcm-alternative" + } + ], "https://github.com/ka-puna/comfyui-yanc": [ [ "YANC.ConcatStrings", @@ -2991,6 +3050,7 @@ "BatchCropFromMaskAdvanced", "BatchUncrop", "BatchUncropAdvanced", + "BboxToInt", "ColorMatch", "ColorToMask", "ConditioningMultiCombine", @@ -3000,8 +3060,10 @@ "ConditioningSetMaskAndCombine5", "CreateAudioMask", "CreateFadeMask", + "CreateFadeMaskAdvanced", "CreateFluidMask", "CreateGradientMask", + "CreateMagicMask", "CreateShapeMask", "CreateTextMask", "CreateVoronoiMask", @@ -3571,6 +3633,17 @@ "title_aux": "ComfyUI_FastVAEDecorder_SDXL" } ], + "https://github.com/natto-maki/ComfyUI-NegiTools": [ + [ + "NegiTools_OpenAiDalle3", + "NegiTools_OpenAiTranslate", + "NegiTools_SeedGenerator", + "NegiTools_StringFunction" + ], + { + "title_aux": "ComfyUI-NegiTools" + } + ], "https://github.com/nicolai256/comfyUI_Nodes_nicolai256/raw/main/yugioh-presets.py": [ [ "yugioh_Presets" @@ -3579,6 +3652,23 @@ "title_aux": "comfyUI_Nodes_nicolai256" } ], + "https://github.com/noembryo/ComfyUI-noEmbryo": [ + [ + "PromptTermList1", + "PromptTermList2", + "PromptTermList3", + "PromptTermList4", + "PromptTermList5", + "PromptTermList6" + ], + { + "author": "noEmbryo", + "description": "Some useful nodes for ComfyUI", + "nickname": "noEmbryo", + "title": "noEmbryo nodes for ComfyUI", + "title_aux": "noEmbryo nodes" + } + ], "https://github.com/noxinias/ComfyUI_NoxinNodes": [ [ "NoxinChime", @@ -3670,6 +3760,18 @@ "title_aux": "Ostris Nodes ComfyUI" } ], + "https://github.com/oyvindg/ComfyUI-TrollSuite": [ + [ + "BinaryImageMask", + "ImagePadding", + "LoadLastImage", + "RandomMask", + "TransparentImage" + ], + { + "title_aux": "ComfyUI-TrollSuite" + } + ], "https://github.com/palant/extended-saveimage-comfyui": [ [ "SaveImageExtended" @@ -3924,7 +4026,6 @@ "AV_ParametersPipeToPrompts", "AV_PromptsToParametersPipe", "AV_SAMLoader", - "AV_UploadImage", "AV_VAELoader", "AspectRatioSelector", "BLIPCaption", @@ -4340,6 +4441,7 @@ "Image Save with Prompt/Info (WLSH)", "Image Save with Prompt/Info File (WLSH)", "Image Scale By Factor (WLSH)", + "Image Scale by Shortside (WLSH)", "KSamplerAdvanced (WLSH)", "Multiply Integer (WLSH)", "Outpaint to Image (WLSH)", @@ -4443,6 +4545,17 @@ "title_aux": "SDXLResolutionPresets" } ], + "https://github.com/wutipong/ComfyUI-TextUtils": [ + [ + "Text Utils - Join N-Elements of String List", + "Text Utils - Join String List", + "Text Utils - Join Strings", + "Text Utils - Split String to List" + ], + { + "title_aux": "ComfyUI-TextUtils" + } + ], "https://github.com/xXAdonesXx/NodeGPT": [ [ "AppendAgent", @@ -4585,19 +4698,6 @@ "title_aux": "Cute Comfy" } ], - "https://raw.githubusercontent.com/noembryo/ComfyUI-noEmbryo/master/nodes.py": [ - [ - "PromptTermList1", - "PromptTermList2", - "PromptTermList3", - "PromptTermList4", - "PromptTermList5", - "PromptTermList6" - ], - { - "title_aux": "noEmbryo nodes" - } - ], "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [ [ "SDXLAspectRatio" diff --git a/node_db/dev/custom-node-list.json b/node_db/dev/custom-node-list.json index 96344e4b..818d70d9 100644 --- a/node_db/dev/custom-node-list.json +++ b/node_db/dev/custom-node-list.json @@ -48,7 +48,7 @@ "https://github.com/dnl13/ComfyUI-dnl13-seg" ], "install_type": "git-clone", - "description": "Nodes: Automatic Segmentation (dnl13), RGB (dnl13)" + "description": "After discovering @storyicon implementation here of Segment Anything, I realized its potential as a powerful tool for ComfyUI if implemented correctly. I delved into the SAM and Dino models. The following is my own adaptation of sam_hq for ComfyUI." }, { "author": "phineas-pta", @@ -120,16 +120,6 @@ "install_type": "git-clone", "description": "Experimental node for SSD-1B. This node is not need for latest comfyui." }, - { - "author": "Feidorian", - "title": "feidorian-nodes", - "reference": "https://github.com/Feidorian/feidorian-ComfyNodes", - "files": [ - "https://github.com/Feidorian/feidorian-ComfyNodes" - ], - "install_type": "git-clone", - "description": "Nodes: Feidorian_WorkflowImageLoader" - }, { "author": "flowtyone", "title": "comfyui-flowty-lcm", diff --git a/node_db/new/custom-node-list.json b/node_db/new/custom-node-list.json index 9efd0a4c..cc861ce5 100644 --- a/node_db/new/custom-node-list.json +++ b/node_db/new/custom-node-list.json @@ -1,5 +1,86 @@ { "custom_nodes": [ + { + "author": "drago87", + "title": "ComfyUI_Dragos_Nodes", + "reference": "https://github.com/drago87/ComfyUI_Dragos_Nodes", + "files": [ + "https://github.com/drago87/ComfyUI_Dragos_Nodes" + ], + "install_type": "git-clone", + "description": "Nodes:File Padding, Image Info, VAE Loader With Name" + }, + { + "author": "ansonkao", + "title": "comfyui-geometry", + "reference": "https://github.com/ansonkao/comfyui-geometry", + "files": [ + "https://github.com/ansonkao/comfyui-geometry" + ], + "install_type": "git-clone", + "description": "Nodes: Mask to Centroid, Mask to Eigenvector. A small collection of custom nodes for use with ComfyUI, for geometry calculations" + }, + { + "author": "GTSuya-Studio", + "title": "ComfyUI-GTSuya-Nodes", + "reference": "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes", + "files": [ + "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes" + ], + "install_type": "git-clone", + "description": "ComfyUI-GTSuya-Nodes is a ComyUI extension designed to add several wildcards supports into ComfyUI. Wildcards allow you to use __name__ syntax in your prompt to get a random line from a file named name.txt in a wildcards directory." + }, + { + "author": "jojkaart", + "title": "ComfyUI-sampler-lcm-alternative", + "reference": "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative", + "files": [ + "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative" + ], + "install_type": "git-clone", + "description": "Nodes:LCMScheduler, SamplerLCMAlternative, SamplerLCMCycle. ComfyUI Custom Sampler nodes that add a new improved LCM sampler functions" + }, + { + "author": "LonicaMewinsky", + "title": "ComfyUI-RawSaver", + "reference": "https://github.com/LonicaMewinsky/ComfyUI-RawSaver", + "files": [ + "https://github.com/LonicaMewinsky/ComfyUI-RawSaver" + ], + "install_type": "git-clone", + "description": "Nodes:SaveTifImage. ComfyUI custom node for purpose of saving image as uint16 tif file." + }, + { + "author": "natto-maki", + "title": "ComfyUI-NegiTools", + "reference": "https://github.com/natto-maki/ComfyUI-NegiTools", + "files": [ + "https://github.com/natto-maki/ComfyUI-NegiTools" + ], + "install_type": "git-clone", + "description": "Nodes:OpenAI DALLe3" + }, + { + "author": "wutipong", + "title": "ComfyUI-TextUtils", + "reference": "https://github.com/wutipong/ComfyUI-TextUtils", + "files": [ + "https://github.com/wutipong/ComfyUI-TextUtils" + ], + "install_type": "git-clone", + "description": "Nodes:Create N-Token String" + }, + { + "author": "Feidorian", + "title": "feidorian-ComfyNodes", + "reference": "https://github.com/Feidorian/feidorian-ComfyNodes", + "nodename_pattern": "^Feidorian_", + "files": [ + "https://github.com/Feidorian/feidorian-ComfyNodes" + ], + "install_type": "git-clone", + "description": "This extension provides various custom nodes. literals, loaders, logic, output, switches" + }, { "author": "kinfolk0117", "title": "ComfyUI_GradientDeepShrink", @@ -138,7 +219,7 @@ "https://github.com/Off-Live/ComfyUI-off-suite" ], "install_type": "copy", - "description": "Nodes:Image Crop Fit Node, OFF SEGS to Image, Crop Center wigh SEGS, GW Number Formatting Node." + "description": "Nodes:Image Crop Fit Node, OFF SEGS to Image, Crop Center wigh SEGS, Watermarking, GW Number Formatting Node." }, { "author": "laksjdjf", @@ -295,9 +376,9 @@ "title": "noEmbryo nodes", "reference": "https://github.com/noembryo/ComfyUI-noEmbryo", "files": [ - "https://raw.githubusercontent.com/noembryo/ComfyUI-noEmbryo/master/nodes.py" + "https://github.com/noembryo/ComfyUI-noEmbryo" ], - "install_type": "copy", + "install_type": "git-clone", "description": "PromptTermList (1-6): are some nodes that help with the creation of Prompts inside ComfyUI. Resolution Scale outputs image dimensions using a scale factor. Regex Text Chopper outputs the chopped parts of a text using RegEx." }, { @@ -710,117 +791,6 @@ ], "install_type": "git-clone", "description": "Nodes:Conditioning (Blend), Inpainting VAE Encode (WAS), VividSharpen. Experimental nodes, or other random extra helper nodes." - }, - { - "author": "yolanother", - "title": "Image to Text Node", - "reference": "https://github.com/yolanother/DTAIImageToTextNode", - "files": [ - "https://github.com/yolanother/DTAIImageToTextNode" - ], - "install_type": "git-clone", - "description": "Nodes: Image URL to Text, Image to Text." - }, - { - "author": "yolanother", - "title": "Comfy UI Online Loaders", - "reference": "https://github.com/yolanother/DTAIComfyLoaders", - "files": [ - "https://github.com/yolanother/DTAIComfyLoaders" - ], - "install_type": "git-clone", - "description": "Nodes: Submit Image (Parameters), Submit Image. A collection of loaders that use a shared common online data source rather than relying on the files to be present locally." - }, - { - "author": "yolanother", - "title": "Comfy AI DoubTech.ai Image Sumission Node", - "reference": "https://github.com/yolanother/DTAIComfyImageSubmit", - "files": [ - "https://github.com/yolanother/DTAIComfyImageSubmit" - ], - "install_type": "git-clone", - "description": "A ComfyAI submit node to upload images to DoubTech.ai" - }, - { - "author": "yolanother", - "title": "Comfy UI QR Codes", - "reference": "https://github.com/yolanother/DTAIComfyQRCodes", - "files": [ - "https://github.com/yolanother/DTAIComfyQRCodes" - ], - "install_type": "git-clone", - "description": "This extension introduces QR code nodes for the Comfy UI stable diffusion client. NOTE: ComfyUI qrcode extension required." - }, - { - "author": "yolanother", - "title": "Variables for Comfy UI", - "reference": "https://github.com/yolanother/DTAIComfyVariables", - "files": [ - "https://github.com/yolanother/DTAIComfyVariables" - ], - "install_type": "git-clone", - "description": "Nodes: String, Int, Float, Short String, CLIP Text Encode (With Variables), String Format, Short String Format. This extension introduces quality of life improvements by providing variable nodes and shared global variables." - }, - { - "author": "kijai", - "title": "KJNodes for ComfyUI", - "reference": "https://github.com/kijai/ComfyUI-KJNodes", - "files": [ - "https://github.com/kijai/ComfyUI-KJNodes" - ], - "install_type": "git-clone", - "description": "Various quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability." - }, - { - "author": "WASasquatch", - "title": "ASTERR", - "reference": "https://github.com/WASasquatch/ASTERR", - "files": [ - "https://github.com/WASasquatch/ASTERR" - ], - "install_type": "git-clone", - "description": "Abstract Syntax Trees Evaluated Restricted Run (ASTERR) is a Python Script executor for ComfyUI.
Warning:ASTERR runs Python Code from a Web Interface! It is highly recommended to run this in a closed-off environment, as it could have potential security risks.
" - }, - { - "author": "Zuellni", - "title": "ComfyUI PickScore Nodes", - "reference": "https://github.com/Zuellni/ComfyUI-PickScore-Nodes", - "files": [ - "https://github.com/Zuellni/ComfyUI-PickScore-Nodes" - ], - "install_type": "git-clone", - "description": "Image scoring nodes for ComfyUI using PickScore with a batch of images to predict which ones fit a given prompt the best." - }, - { - "author": "chrisgoringe", - "title": "Use Everywhere (UE Nodes)", - "reference": "https://github.com/chrisgoringe/cg-use-everywhere", - "files": [ - "https://github.com/chrisgoringe/cg-use-everywhere" - ], - "install_type": "git-clone", - "nodename_pattern": "^(UE\\? |UE )", - "description": "A set of nodes that allow data to be 'broadcast' to some or all unconnected inputs. Greatly reduces link spaghetti." - }, - { - "author": "azazeal04", - "title": "ComfyUI-Styles", - "reference": "https://github.com/azazeal04/ComfyUI-Styles", - "files": [ - "https://github.com/azazeal04/ComfyUI-Styles" - ], - "install_type": "git-clone", - "description": "Nodes:Anime_Styler, Fantasy_Styler, Gothic_Styler, Line_Art_Styler, Movie_Poster_Styler, Punk_Styler, Travel_Poster_Styler. This extension offers 8 art style nodes, each of which includes approximately 50 individual style variations." - }, - { - "author": "city96", - "title": "ComfyUI_ColorMod", - "reference": "https://github.com/city96/ComfyUI_ColorMod", - "files": [ - "https://github.com/city96/ComfyUI_ColorMod" - ], - "install_type": "git-clone", - "description": "This extension currently has two sets of nodes - one set for editing the contrast/color of images and another set for saving images as 16 bit PNG files." - } + } ] } diff --git a/node_db/new/extension-node-map.json b/node_db/new/extension-node-map.json index 96ce0612..34b9d388 100644 --- a/node_db/new/extension-node-map.json +++ b/node_db/new/extension-node-map.json @@ -59,22 +59,26 @@ "https://github.com/Amorano/Jovimetrix": [ [ "\u2697\ufe0f Blend (jov)", + "\u2697\ufe0f Blend Mask (jov)", "\u2728 Shape Generator (jov)", "\ud83c\udf08 HSV (jov)", "\ud83c\udf31 Transform (jov)", - "\ud83c\udf87 Expand (jov)", + "\ud83c\udf69 GLSL (jov)", + "\ud83c\udf87 Extend (jov)", + "\ud83d\udcc9 Threshold (jov)", + "\ud83d\udcf7 WebCam (jov)", "\ud83d\udd06 Pixel Shader (jov)", "\ud83d\udd06 Pixel Shader Image (jov)", "\ud83d\udd30 Mirror (jov)", "\ud83d\udd33 Tile (jov)", "\ud83d\udd78\ufe0f Adjust (jov)", "\ud83d\uddfa\ufe0f Projection (jov)", + "\ud83d\ude8c Route (jov)", "\ud83d\udfea Constant (jov)" ], { "author": "amorano", - "description": "", - "nickname": "Jovimetrix", + "description": "Procedural & Compositing. Includes a Webcam node.", "title": "Jovimetrix Composition Pack", "title_aux": "Jovimetrix Composition Nodes" } @@ -491,8 +495,11 @@ ], "https://github.com/Fictiverse/ComfyUI_Fictiverse": [ [ + "Add Noise to Image with Mask", "Color correction", - "Displace Images with Mask" + "Displace Image with Depth", + "Displace Images with Mask", + "Zoom Image with Depth" ], { "title_aux": "ComfyUI Fictiverse Nodes" @@ -567,6 +574,17 @@ "title_aux": "ezXY scripts and nodes" } ], + "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": [ + [ + "Get From Danbooru", + "Simple Wildcards", + "Simple Wildcards (Dir.)", + "Wildcards" + ], + { + "title_aux": "ComfyUI-GTSuya-Nodes" + } + ], "https://github.com/Gourieff/comfyui-reactor-node": [ [ "ReActorFaceSwap", @@ -766,11 +784,20 @@ "title_aux": "ComfyBreakAnim" } ], + "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": [ + [ + "SaveTifImage" + ], + { + "title_aux": "ComfyUI-RawSaver" + } + ], "https://github.com/M1kep/ComfyLiterals": [ [ "Checkpoint", "Float", "Int", + "KepStringLiteral", "Lora", "Operation", "String" @@ -1402,10 +1429,15 @@ ], "https://github.com/THtianhao/ComfyUI-FaceChain": [ [ + "FCStyleLoraLoad", + "FC_CropAndPaste", + "FC_CropBottom", + "FC_CropFace", "FC_CropMask", "FC_FaceDetection", "FC_FaceFusion", - "FC_LoraMerge", + "FC_MaskOP", + "FC_ReplaceImage", "FC_Segment", "FC_StyleLoraLoad" ], @@ -1445,10 +1477,14 @@ "tri3d-atr-parse-batch", "tri3d-extract-hand", "tri3d-extract-parts-batch", + "tri3d-extract-parts-batch2", "tri3d-extract-parts-mask-batch", "tri3d-fuzzification", + "tri3d-interaction-canny", "tri3d-position-hands", - "tri3d-position-parts-batch" + "tri3d-position-parts-batch", + "tri3d-skin-feathered-padded-mask", + "tri3d-swap-pixels" ], { "title_aux": "tri3d-comfyui-nodes" @@ -1619,9 +1655,11 @@ [ "BLVAEEncode", "CLIPTextEncodeList", + "CLIPTextEncodeSequence2", "ConditioningBlend", "DebugInput", "KSamplerSeq", + "KSamplerSeq2", "VAEEncodeForInpaint (WAS)", "VividSharpen" ], @@ -2394,6 +2432,7 @@ "Loader", "Prompts", "SaveImages", + "Textbox", "Wildcards" ], { @@ -2649,6 +2688,16 @@ "title_aux": "ComfyUI-Vextra-Nodes" } ], + "https://github.com/drago87/ComfyUI_Dragos_Nodes": [ + [ + "file_padding", + "image_info", + "vae_loader" + ], + { + "title_aux": "ComfyUI_Dragos_Nodes" + } + ], "https://github.com/drustan-hawk/primitive-types": [ [ "float", @@ -2971,6 +3020,16 @@ "title_aux": "ComfyUI-Jjk-Nodes" } ], + "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": [ + [ + "LCMScheduler", + "SamplerLCMAlternative", + "SamplerLCMCycle" + ], + { + "title_aux": "ComfyUI-sampler-lcm-alternative" + } + ], "https://github.com/ka-puna/comfyui-yanc": [ [ "YANC.ConcatStrings", @@ -2991,6 +3050,7 @@ "BatchCropFromMaskAdvanced", "BatchUncrop", "BatchUncropAdvanced", + "BboxToInt", "ColorMatch", "ColorToMask", "ConditioningMultiCombine", @@ -3000,8 +3060,10 @@ "ConditioningSetMaskAndCombine5", "CreateAudioMask", "CreateFadeMask", + "CreateFadeMaskAdvanced", "CreateFluidMask", "CreateGradientMask", + "CreateMagicMask", "CreateShapeMask", "CreateTextMask", "CreateVoronoiMask", @@ -3571,6 +3633,17 @@ "title_aux": "ComfyUI_FastVAEDecorder_SDXL" } ], + "https://github.com/natto-maki/ComfyUI-NegiTools": [ + [ + "NegiTools_OpenAiDalle3", + "NegiTools_OpenAiTranslate", + "NegiTools_SeedGenerator", + "NegiTools_StringFunction" + ], + { + "title_aux": "ComfyUI-NegiTools" + } + ], "https://github.com/nicolai256/comfyUI_Nodes_nicolai256/raw/main/yugioh-presets.py": [ [ "yugioh_Presets" @@ -3579,6 +3652,23 @@ "title_aux": "comfyUI_Nodes_nicolai256" } ], + "https://github.com/noembryo/ComfyUI-noEmbryo": [ + [ + "PromptTermList1", + "PromptTermList2", + "PromptTermList3", + "PromptTermList4", + "PromptTermList5", + "PromptTermList6" + ], + { + "author": "noEmbryo", + "description": "Some useful nodes for ComfyUI", + "nickname": "noEmbryo", + "title": "noEmbryo nodes for ComfyUI", + "title_aux": "noEmbryo nodes" + } + ], "https://github.com/noxinias/ComfyUI_NoxinNodes": [ [ "NoxinChime", @@ -3670,6 +3760,18 @@ "title_aux": "Ostris Nodes ComfyUI" } ], + "https://github.com/oyvindg/ComfyUI-TrollSuite": [ + [ + "BinaryImageMask", + "ImagePadding", + "LoadLastImage", + "RandomMask", + "TransparentImage" + ], + { + "title_aux": "ComfyUI-TrollSuite" + } + ], "https://github.com/palant/extended-saveimage-comfyui": [ [ "SaveImageExtended" @@ -3924,7 +4026,6 @@ "AV_ParametersPipeToPrompts", "AV_PromptsToParametersPipe", "AV_SAMLoader", - "AV_UploadImage", "AV_VAELoader", "AspectRatioSelector", "BLIPCaption", @@ -4340,6 +4441,7 @@ "Image Save with Prompt/Info (WLSH)", "Image Save with Prompt/Info File (WLSH)", "Image Scale By Factor (WLSH)", + "Image Scale by Shortside (WLSH)", "KSamplerAdvanced (WLSH)", "Multiply Integer (WLSH)", "Outpaint to Image (WLSH)", @@ -4443,6 +4545,17 @@ "title_aux": "SDXLResolutionPresets" } ], + "https://github.com/wutipong/ComfyUI-TextUtils": [ + [ + "Text Utils - Join N-Elements of String List", + "Text Utils - Join String List", + "Text Utils - Join Strings", + "Text Utils - Split String to List" + ], + { + "title_aux": "ComfyUI-TextUtils" + } + ], "https://github.com/xXAdonesXx/NodeGPT": [ [ "AppendAgent", @@ -4585,19 +4698,6 @@ "title_aux": "Cute Comfy" } ], - "https://raw.githubusercontent.com/noembryo/ComfyUI-noEmbryo/master/nodes.py": [ - [ - "PromptTermList1", - "PromptTermList2", - "PromptTermList3", - "PromptTermList4", - "PromptTermList5", - "PromptTermList6" - ], - { - "title_aux": "noEmbryo nodes" - } - ], "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [ [ "SDXLAspectRatio" diff --git a/prestartup_script.py b/prestartup_script.py index dfb924d3..94230b3d 100644 --- a/prestartup_script.py +++ b/prestartup_script.py @@ -83,9 +83,10 @@ try: log_file = open(f"comfyui{postfix}.log", "w", encoding="utf-8") log_lock = threading.Lock() - class Logger: + class ComfyUIManagerLogger: def __init__(self, is_stdout): self.is_stdout = is_stdout + self.encoding = "utf-8" def fileno(self): try: @@ -135,16 +136,19 @@ try: else: original_stderr.flush() - def reconfigure(self, *args, **kwargs): + def close(self): + self.flush() pass - + def reconfigure(self, *args, **kwargs): + pass + def close_log(): log_file.close() - sys.stdout = Logger(True) - sys.stderr = Logger(False) + sys.stdout = ComfyUIManagerLogger(True) + sys.stderr = ComfyUIManagerLogger(False) atexit.register(close_log) except Exception as e: @@ -164,7 +168,7 @@ def check_bypass_ssl(): default_conf = config['default'] if 'bypass_ssl' in default_conf and default_conf['bypass_ssl'].lower() == 'true': - print(f"[ComfyUI-Manager] WARN: Unsafe - SSL verification option is Enabled. (see ComfyUI-Manager/config.ini)") + print(f"[ComfyUI-Manager] WARN: Unsafe - SSL verification bypass option is Enabled. (see ComfyUI-Manager/config.ini)") ssl._create_default_https_context = ssl._create_unverified_context # SSL certificate error fix. except Exception: pass @@ -173,6 +177,41 @@ def check_bypass_ssl(): check_bypass_ssl() +# Perform install +processed_install = set() +script_list_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "startup-scripts", "install-scripts.txt") +pip_list = None + + +def get_installed_packages(): + global pip_list + + if pip_list is None: + try: + result = subprocess.check_output([sys.executable, '-m', 'pip', 'list'], universal_newlines=True) + pip_list = set([line.split()[0].lower() for line in result.split('\n') if line.strip()]) + except subprocess.CalledProcessError as e: + print(f"[ComfyUI-Manager] Failed to retrieve the information of installed pip packages.") + return set() + + return pip_list + + +def is_installed(name): + name = name.strip() + + if name.startswith('#'): + return True + + pattern = r'([^<>!=]+)([<>!=]=?)' + match = re.search(pattern, name) + + if match: + name = match.group(1) + + return name.lower() in get_installed_packages() + + if os.path.exists(restore_snapshot_path): try: import json @@ -221,11 +260,12 @@ if os.path.exists(restore_snapshot_path): with open(requirements_path, 'r', encoding="UTF-8") as file: for line in file: package_name = line.strip() - if package_name: + if package_name and not is_installed(package_name): install_cmd = [sys.executable, "-m", "pip", "install", package_name] this_exit_code += process_wrap(install_cmd, repo_path) - if os.path.exists(install_script_path): + if os.path.exists(install_script_path) and f'{repo_path}/install.py' not in processed_install: + processed_install.add(f'{repo_path}/install.py') install_cmd = [sys.executable, install_script_path] print(f">>> {install_cmd} / {repo_path}") this_exit_code += process_wrap(install_cmd, repo_path) @@ -249,26 +289,25 @@ if os.path.exists(restore_snapshot_path): os.remove(restore_snapshot_path) -# Perform install -script_list_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "startup-scripts", "install-scripts.txt") - - def execute_lazy_install_script(repo_path, executable): + global processed_install + install_script_path = os.path.join(repo_path, "install.py") requirements_path = os.path.join(repo_path, "requirements.txt") if os.path.exists(requirements_path): - print("Install: pip packages") + print(f"Install: pip packages for '{repo_path}'") with open(requirements_path, "r") as requirements_file: for line in requirements_file: package_name = line.strip() - if package_name: - install_cmd = [sys.executable, "-m", "pip", "install", package_name] + if package_name and not is_installed(package_name): + install_cmd = [executable, "-m", "pip", "install", package_name] process_wrap(install_cmd, repo_path) - if os.path.exists(install_script_path): - print(f"Install: install script") - install_cmd = [sys.executable, "install.py"] + if os.path.exists(install_script_path) and f'{repo_path}/install.py' not in processed_install: + processed_install.add(f'{repo_path}/install.py') + print(f"Install: install script for '{repo_path}'") + install_cmd = [executable, "install.py"] process_wrap(install_cmd, repo_path) @@ -294,9 +333,12 @@ if os.path.exists(script_list_path): execute_lazy_install_script(script[0], script[2]) elif os.path.exists(script[0]): - print(f"\n## ComfyUI-Manager: EXECUTE => {script[1:]}") + if 'pip' in script[1:] and 'install' in script[1:] and is_installed(script[-1]): + continue + print(f"\n## ComfyUI-Manager: EXECUTE => {script[1:]}") print(f"\n## Execute install/(de)activation script for '{script[0]}'") + exit_code = process_wrap(script[1:], script[0]) if exit_code != 0: @@ -314,3 +356,5 @@ if os.path.exists(script_list_path): print("\n[ComfyUI-Manager] Startup script completed.") print("#######################################################################\n") +del processed_install +del pip_list \ No newline at end of file