mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2025-12-16 18:02:58 +08:00
Merge branch 'ltdrdata:main' into dev
This commit is contained in:
commit
7cadf87eef
@ -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})")
|
||||
|
||||
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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. <p style='background-color: black; color: red;'>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.</p>"
|
||||
},
|
||||
{
|
||||
"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."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
Loading…
Reference in New Issue
Block a user