Compare commits

..

6 Commits

Author SHA1 Message Date
Dr.Lt.Data
9e44617199 feat: Support customization of the model download path via extra_model_paths.yaml.
example
```
some_extra_path:
   base_path: /path/to/base
   download_model_base: models
   checkpoints: models/checkpoints
   text_encoders: models/text_encoders
   vae: models/vae
   loras: models/loras
   controlnet: models/controlnet
   clip_vision: models/clip_vision
   gligen: models/gligen
   upscale_models: models/upscale_models
   embeddings: models/embeddings
   diffusion_models: models/diffusion_models
   custom_nodes: custom_nodes
   is_default: True
```
2024-11-30 19:52:32 +09:00
Dr.Lt.Data
8aa4fcf448 update DB 2024-11-29 21:15:11 +09:00
Dr.Lt.Data
39e62cd800 update DB 2024-11-29 20:56:55 +09:00
Yuan-Man
d8c5a42777 Add ComfyUI-LLaMA-Mesh node (#1282) 2024-11-29 20:51:50 +09:00
Dr.Lt.Data
0a19924b36 update DB 2024-11-29 20:51:18 +09:00
lo-th
665fd72480 add three_js_nodes (#1281) 2024-11-29 20:50:23 +09:00
17 changed files with 2095 additions and 1661 deletions

View File

@@ -4059,7 +4059,7 @@
{ {
"author": "toyxyz", "author": "toyxyz",
"title": "ComfyUI_toyxyz_test_nodes", "title": "ComfyUI_toyxyz_test_nodes",
"id": "toyxyz", "id": "comfyui_toyxyz_test_nodes",
"reference": "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes", "reference": "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes",
"files": [ "files": [
"https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes" "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes"
@@ -4067,6 +4067,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "This node was created to send a webcam to ComfyUI in real time. This node is recommended for use with LCM." "description": "This node was created to send a webcam to ComfyUI in real time. This node is recommended for use with LCM."
}, },
{
"author": "toyxyz",
"title": "ComfyUI_rgbx_Wrapper",
"reference": "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper",
"files": [
"https://github.com/toyxyz/ComfyUI_rgbx_Wrapper"
],
"install_type": "git-clone",
"description": "This is the rgb2x wrapper node for ComfyUI. The required models are automatically downloaded on the first run.\noriginal project : [a/https://github.com/zheng95z/rgbx](original project : https://github.com/zheng95z/rgbx)"
},
{ {
"author": "thecooltechguy", "author": "thecooltechguy",
"title": "ComfyUI Stable Video Diffusion", "title": "ComfyUI Stable Video Diffusion",
@@ -12953,7 +12963,7 @@
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils" "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "NODES: Add Mask For IC Lora" "description": "NODES: Add Mask For IC Lora, Create Context Window, Concatenate Context Window"
}, },
{ {
"author": "lrzjason", "author": "lrzjason",
@@ -15060,16 +15070,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "This is a collection of nodes created to aid when managing area conditionings." "description": "This is a collection of nodes created to aid when managing area conditionings."
}, },
{
"author": "HentaiGirlfriendDotCom",
"title": "comfyui-highlight-connections",
"reference": "https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections",
"files": [
"https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections"
],
"install_type": "git-clone",
"description": "A node that can be dropped into a group. When a node is then clicked within that group, all nodes and connections in that group get greyed out and the connections from the clicked node go bright red."
},
{ {
"author": "Cyber-BCat", "author": "Cyber-BCat",
"title": "ComfyUI_Auto_Caption", "title": "ComfyUI_Auto_Caption",
@@ -17047,14 +17047,15 @@
"description": "A modulation layer addon for Flux that reduces model size to 8.8B parameters without significant quality loss." "description": "A modulation layer addon for Flux that reduces model size to 8.8B parameters without significant quality loss."
}, },
{ {
"author": "lo-th", "author": "lth",
"title": "Comfyui_three_js", "title": "Comfyui_three_js",
"id": "lth",
"reference": "https://github.com/lo-th/Comfyui_three_js", "reference": "https://github.com/lo-th/Comfyui_three_js",
"files": [ "files": [
"https://github.com/lo-th/Comfyui_three_js" "https://github.com/lo-th/Comfyui_three_js"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Custom node for ComfyUI to run three js" "description": "Use power of three.js in 3d view on comfyui."
}, },
{ {
"author": "AIPOQUE", "author": "AIPOQUE",
@@ -17334,7 +17335,7 @@
"https://github.com/dymokomi/comfyui_dygen" "https://github.com/dymokomi/comfyui_dygen"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "NODES: DY Image Quantize, DY Image Cluster, DY Image Palette, DY Image Masks, Image List to Grid" "description": "NODES: DY Image Quantize, DY Image Cluster, DY Image Palette, DY Image Masks, Image List to Grid, DY Image Scaler, DY Random Lines, DY Adaptive Color Lines, DY Adaptive Color Circles, DY Adaptive Color Rectangles, DY Binary Pattern Stamper"
}, },
{ {
"author": "bananasss00", "author": "bananasss00",
@@ -17356,6 +17357,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "ComfyUI-SoundHub is a collection of audio processing nodes designed for ComfyUI, enabling seamless audio processing and generation within your ComfyUI workflows." "description": "ComfyUI-SoundHub is a collection of audio processing nodes designed for ComfyUI, enabling seamless audio processing and generation within your ComfyUI workflows."
}, },
{
"author": "Yuan-ManX",
"title": "ComfyUI-LLaMA-Mesh",
"reference": "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh",
"files": [
"https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for LLaMA-Mesh model."
},
{ {
"author": "Starnodes2024", "author": "Starnodes2024",
"title": "ComfyUI_StarNodes", "title": "ComfyUI_StarNodes",
@@ -17407,6 +17418,59 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "NODES:AIRedoon Image Caption.\nAnalyze image tagger" "description": "NODES:AIRedoon Image Caption.\nAnalyze image tagger"
}, },
{
"author": "zefu-lu",
"title": "ComfyUI_InstantX_SD35_Large_IPAdapter",
"id": "comfyui-instantx-sd3-5-large-ipadapter",
"reference": "https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter",
"files": [
"https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter"
],
"install_type": "git-clone",
"description": "Custom ComfyUI node for using InstantX SD3.5-Large IPAdapter"
},
{
"author": "Regi E",
"title": "Easy Pony",
"id": "comfyui-easy-pony",
"reference": "https://github.com/regiellis/ComfyUI-EasyPony",
"files": [
"https://github.com/regiellis/ComfyUI-EasyPony"
],
"install_type": "git-clone",
"description": "Simple node to assits with prompting for Pony models"
},
{
"author": "steelan9199",
"title": "ComfyUI-Teeth",
"reference": "https://github.com/steelan9199/ComfyUI-Teeth",
"files": [
"https://github.com/steelan9199/ComfyUI-Teeth"
],
"install_type": "git-clone",
"description": "NODES: Index List, TextSplitByDelimiter"
},
{
"author": "mrhan1993",
"title": "ComfyUI-Fooocus",
"reference": "https://github.com/mrhan1993/ComfyUI-Fooocus",
"files": [
"https://github.com/mrhan1993/ComfyUI-Fooocus"
],
"install_type": "git-clone",
"description": "This extension provides image generation features based on Fooocus."
},
{
"author": "Kling AI",
"title": "ComfyUI-KLingAI-API",
"reference": "https://github.com/KwaiVGI/ComfyUI-KLingAI-API",
"files": [
"https://github.com/KwaiVGI/ComfyUI-KLingAI-API"
],
"install_type": "git-clone",
"description": "Provide high-quality video and image generation capabilities, meeting creators' needs for creative content production and management through more convenient operations, richer functionalities, professional parameters, and stunning effects."
},

View File

@@ -1121,6 +1121,7 @@
"https://github.com/Acly/comfyui-tooling-nodes": [ "https://github.com/Acly/comfyui-tooling-nodes": [
[ [
"ETN_ApplyMaskToImage", "ETN_ApplyMaskToImage",
"ETN_ApplyReferenceImages",
"ETN_AttentionMask", "ETN_AttentionMask",
"ETN_BackgroundRegion", "ETN_BackgroundRegion",
"ETN_CropImage", "ETN_CropImage",
@@ -1141,6 +1142,7 @@
"ETN_MergeImageTile", "ETN_MergeImageTile",
"ETN_NSFWFilter", "ETN_NSFWFilter",
"ETN_Parameter", "ETN_Parameter",
"ETN_ReferenceImage",
"ETN_SendImageWebSocket", "ETN_SendImageWebSocket",
"ETN_TileLayout", "ETN_TileLayout",
"ETN_Translate" "ETN_Translate"
@@ -3469,14 +3471,6 @@
"title_aux": "Hellrunner's Magical Nodes" "title_aux": "Hellrunner's Magical Nodes"
} }
], ],
"https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections": [
[
"HighlightConnections"
],
{
"title_aux": "comfyui-highlight-connections"
}
],
"https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [ "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [
[ [
"Load Prompt Travel file", "Load Prompt Travel file",
@@ -3494,6 +3488,8 @@
"https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [ "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [
[ [
"AgentMemoryProvider", "AgentMemoryProvider",
"AgentNode",
"BasicRecursionFilterNode",
"DocumentProcessor", "DocumentProcessor",
"LinuxMemoryDirectory", "LinuxMemoryDirectory",
"QueryNode" "QueryNode"
@@ -3676,6 +3672,7 @@
"IsulionClothingGenerator", "IsulionClothingGenerator",
"IsulionCuteAnimalRandom", "IsulionCuteAnimalRandom",
"IsulionEmotionGenerator", "IsulionEmotionGenerator",
"IsulionEpochGenerator",
"IsulionFantasyRaceGenerator", "IsulionFantasyRaceGenerator",
"IsulionHabitatGenerator", "IsulionHabitatGenerator",
"IsulionLoadImagesNode", "IsulionLoadImagesNode",
@@ -4402,6 +4399,19 @@
"title_aux": "ComfyUI-DenoiseChooser" "title_aux": "ComfyUI-DenoiseChooser"
} }
], ],
"https://github.com/KwaiVGI/ComfyUI-KLingAI-API": [
[
"Client",
"Image Generator",
"Image2Video",
"KLingAI Preview Video",
"Text2Video",
"Virtual Try On"
],
{
"title_aux": "ComfyUI-KLingAI-API"
}
],
"https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [ "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [
[ [
"SendToDiscordWebhook" "SendToDiscordWebhook"
@@ -6073,6 +6083,16 @@
"title_aux": "ComfyUI-LexTools" "title_aux": "ComfyUI-LexTools"
} }
], ],
"https://github.com/SS-snap/ComfyUI-Snap_Processing": [
[
"AreaCalculator",
"PyQtCanvasNode",
"Snapload"
],
{
"title_aux": "Snap Processing for Comfyui"
}
],
"https://github.com/SamKhoze/ComfyUI-DeepFuze": [ "https://github.com/SamKhoze/ComfyUI-DeepFuze": [
[ [
"DeepFuze Save", "DeepFuze Save",
@@ -8434,6 +8454,16 @@
"title_aux": "MergeBlockWeighted_fo_ComfyUI" "title_aux": "MergeBlockWeighted_fo_ComfyUI"
} }
], ],
"https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh": [
[
"Apply Gradient Color",
"Chat LLaMa Mesh",
"Visualize Mesh"
],
{
"title_aux": "ComfyUI-LLaMA-Mesh"
}
],
"https://github.com/Yuan-ManX/ComfyUI-SoundHub": [ "https://github.com/Yuan-ManX/ComfyUI-SoundHub": [
[ [
"Load Audio", "Load Audio",
@@ -8883,6 +8913,7 @@
"https://github.com/ai-shizuka/ComfyUI-tbox": [ "https://github.com/ai-shizuka/ComfyUI-tbox": [
[ [
"AnimalPosePreprocessor", "AnimalPosePreprocessor",
"BatchManager",
"ConstrainImageNode", "ConstrainImageNode",
"DWPosePreprocessor", "DWPosePreprocessor",
"DWPreprocessor", "DWPreprocessor",
@@ -8892,7 +8923,12 @@
"ImageSaver", "ImageSaver",
"ImageSize", "ImageSize",
"ImagesSaver", "ImagesSaver",
"MiDaSDepthPreprocessor" "MaskAddNode",
"MiDaSDepthPreprocessor",
"VideoInfo",
"VideoLoader",
"VideoSaver",
"WatermarkNode"
], ],
{ {
"author": "tstandley", "author": "tstandley",
@@ -9397,6 +9433,7 @@
"Sage_GetFileHash", "Sage_GetFileHash",
"Sage_GetInfoFromHash", "Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash", "Sage_GetModelJSONFromHash",
"Sage_IterOverFiles",
"Sage_JoinText", "Sage_JoinText",
"Sage_KSampler", "Sage_KSampler",
"Sage_LoraStack", "Sage_LoraStack",
@@ -9510,6 +9547,10 @@
"SaveImageExtended" "SaveImageExtended"
], ],
{ {
"author": "AudioscavengeR",
"description": "1 custom node to save your pictures in various folders and formats.",
"nickname": "Save Image Extended",
"title": "Save Image Extended",
"title_aux": "Save Image Extended for ComfyUI" "title_aux": "Save Image Extended for ComfyUI"
} }
], ],
@@ -12842,11 +12883,17 @@
], ],
"https://github.com/dymokomi/comfyui_dygen": [ "https://github.com/dymokomi/comfyui_dygen": [
[ [
"AdaptiveColorCircles",
"AdaptiveColorLines",
"AdaptiveColorRectangles",
"BinaryPatternStamper",
"DYImageCluster", "DYImageCluster",
"DYImageMasks", "DYImageMasks",
"DYImagePalette", "DYImagePalette",
"DYImageQuantize", "DYImageQuantize",
"ImageListToGrid" "ImageListToGrid",
"ImageScaler",
"RandomLines"
], ],
{ {
"title_aux": "comfyui_dygen" "title_aux": "comfyui_dygen"
@@ -14497,6 +14544,7 @@
"VAEDecode_party", "VAEDecode_party",
"accuweather_tool", "accuweather_tool",
"advance_ebd_tool", "advance_ebd_tool",
"aisuite_loader",
"any2str", "any2str",
"any_switcher", "any_switcher",
"api_function", "api_function",
@@ -17718,7 +17766,12 @@
"Added Layer Info To Array", "Added Layer Info To Array",
"Enhanced Random Light Source", "Enhanced Random Light Source",
"Float Relay", "Float Relay",
"HLFrequencyDetailRestore",
"Image Add Alpha",
"Image Frequency Analyzer",
"Image Relay", "Image Relay",
"Image Remove Alpha",
"Image Resize With Padding",
"Init Layer Info Array", "Init Layer Info Array",
"Int Relay", "Int Relay",
"Layer Image Seleted", "Layer Image Seleted",
@@ -17838,7 +17891,9 @@
], ],
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [ "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [
[ [
"AddMaskForICLora" "AddMaskForICLora",
"ConcatContextWindow",
"CreateContextWindow"
], ],
{ {
"title_aux": "Comfyui-In-Context-Lora-Utils" "title_aux": "Comfyui-In-Context-Lora-Utils"
@@ -18970,6 +19025,162 @@
"title_aux": "ComfyUI_Seamless_Patten" "title_aux": "ComfyUI_Seamless_Patten"
} }
], ],
"https://github.com/mrhan1993/ComfyUI-Fooocus": [
[
"AlignYourStepsScheduler",
"BasicScheduler",
"CLIPLoader",
"CLIPMergeSimple",
"CLIPSave",
"CLIPSetLastLayer",
"CLIPTextEncode",
"CLIPTextEncodeSDXL",
"CLIPTextEncodeSDXLRefiner",
"CLIPVisionEncode",
"CLIPVisionLoader",
"Canny",
"CheckpointLoader",
"CheckpointLoaderSimple",
"CheckpointSave",
"ConditioningAverage",
"ConditioningCombine",
"ConditioningConcat",
"ConditioningSetArea",
"ConditioningSetAreaPercentage",
"ConditioningSetMask",
"ConditioningSetTimestepRange",
"ConditioningZeroOut",
"ControlNetApply",
"ControlNetApplyAdvanced",
"ControlNetLoader",
"CropMask",
"DiffControlNetLoader",
"DiffusersLoader",
"DualCLIPLoader",
"EmptyImage",
"EmptyLatentImage",
"EnhanceControl",
"EnhanceControls",
"ExponentialScheduler",
"FeatherMask",
"FlipSigmas",
"FooocusSampler",
"FooocusSettings",
"FreeU",
"FreeU_V2",
"GLIGENLoader",
"GLIGENTextBoxApply",
"GrowMask",
"HyperTile",
"HypernetworkLoader",
"ImageBatch",
"ImageBlend",
"ImageBlur",
"ImageColorToMask",
"ImageCompositeMasked",
"ImageCrop",
"ImageInvert",
"ImageOnlyCheckpointLoader",
"ImageOnlyCheckpointSave",
"ImagePadForOutpaint",
"ImagePrompts",
"ImageQuantize",
"ImageScale",
"ImageScaleBy",
"ImageScaleToTotalPixels",
"ImageSharpen",
"ImageToMask",
"ImageUpscaleWithModel",
"InpaintModelConditioning",
"InpaintOutpaint",
"InvertMask",
"JoinImageWithAlpha",
"KSampler",
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LatentAdd",
"LatentBatch",
"LatentBatchSeedBehavior",
"LatentBlend",
"LatentComposite",
"LatentCompositeMasked",
"LatentCrop",
"LatentFlip",
"LatentFromBatch",
"LatentInterpolate",
"LatentMultiply",
"LatentRotate",
"LatentSubtract",
"LatentUpscale",
"LatentUpscaleBy",
"LoadImage",
"LoadImageMask",
"LoadLatent",
"LoraLoader",
"LoraLoaderModelOnly",
"LoraStacks",
"MaskComposite",
"MaskToImage",
"ModelMergeAdd",
"ModelMergeBlocks",
"ModelMergeSimple",
"ModelMergeSubtract",
"ModelSamplingContinuousEDM",
"ModelSamplingDiscrete",
"PatchModelAddDownscale",
"PerpNeg",
"PhotoMakerEncode",
"PhotoMakerLoader",
"PolyexponentialScheduler",
"PorterDuffImageComposite",
"PreviewImage",
"RebatchImages",
"RebatchLatents",
"RepeatImageBatch",
"RepeatLatentBatch",
"RescaleCFG",
"SDTurboScheduler",
"SD_4XUpscale_Conditioning",
"SVD_img2vid_Conditioning",
"SamplerCustom",
"SamplerDPMPP_2M_SDE",
"SamplerDPMPP_SDE",
"SamplerTCD",
"SaveAnimatedPNG",
"SaveAnimatedWEBP",
"SaveImage",
"SaveLatent",
"SelfAttentionGuidance",
"SetLatentNoiseMask",
"SolidMask",
"SplitImageWithAlpha",
"SplitSigmas",
"StableZero123_Conditioning",
"StableZero123_Conditioning_Batched",
"StyleModelApply",
"StyleModelLoader",
"TomePatchModel",
"UNETLoader",
"UpscaleModelLoader",
"UpscaleVary",
"VAEDecode",
"VAEDecodeTiled",
"VAEEncode",
"VAEEncodeForInpaint",
"VAEEncodeTiled",
"VAELoader",
"VAESave",
"VPScheduler",
"VideoLinearCFGGuidance",
"unCLIPCheckpointLoader",
"unCLIPConditioning"
],
{
"author": "Konie",
"title_aux": "ComfyUI-Fooocus"
}
],
"https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [ "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [
[ [
"ConcatStrings", "ConcatStrings",
@@ -20148,6 +20359,14 @@
"title_aux": "ComfyUI-Prediction" "title_aux": "ComfyUI-Prediction"
} }
], ],
"https://github.com/regiellis/ComfyUI-EasyPony": [
[
"EasyPony"
],
{
"title_aux": "Easy Pony"
}
],
"https://github.com/revirevy/Comfyui_saveimage_imgbb": [ "https://github.com/revirevy/Comfyui_saveimage_imgbb": [
[ [
"ImgBBUploader", "ImgBBUploader",
@@ -21735,6 +21954,15 @@
"title_aux": "ComfyUI Ollama" "title_aux": "ComfyUI Ollama"
} }
], ],
"https://github.com/steelan9199/ComfyUI-Teeth": [
[
"Index List",
"TextSplitByDelimiter"
],
{
"title_aux": "ComfyUI-Teeth"
}
],
"https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [ "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [
[ [
"GridImageSplitter" "GridImageSplitter"
@@ -22223,6 +22451,14 @@
"title_aux": "TTools for ComfyUI" "title_aux": "TTools for ComfyUI"
} }
], ],
"https://github.com/toyxyz/ComfyUI_rgbx_Wrapper": [
[
"rgb2x"
],
{
"title_aux": "ComfyUI_rgbx_Wrapper"
}
],
"https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [ "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [
[ [
"CaptureWebcam", "CaptureWebcam",
@@ -23742,6 +23978,14 @@
"title_aux": "comfyui_visual_anagram" "title_aux": "comfyui_visual_anagram"
} }
], ],
"https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter": [
[
"SD35LargeIPAdapterLoader"
],
{
"title_aux": "ComfyUI_InstantX_SD35_Large_IPAdapter"
}
],
"https://github.com/zer0TF/cute-comfy": [ "https://github.com/zer0TF/cute-comfy": [
[ [
"Cute.Placeholder" "Cute.Placeholder"
@@ -23870,19 +24114,6 @@
"title_aux": "ComfyUI_Bxb" "title_aux": "ComfyUI_Bxb"
} }
], ],
"https://github.com/zmwv823/ComfyUI_Ctrlora": [
[
"UL_Image_Generation_Ctrlora_AIO_Preprocessor",
"UL_Image_Generation_Ctrlora_Condition_Params",
"UL_Image_Generation_Ctrlora_Sampler",
"UL_Image_Generation_Ctrlora_loader",
"UL_Image_Process_Prepare_Img_for_Inpaint",
"UL_Image_Process_Prepare_Img_for_Outpaint"
],
{
"title_aux": "ComfyUI_Ctrlora"
}
],
"https://github.com/zohac/ComfyUI_ZC_DrawShape": [ "https://github.com/zohac/ComfyUI_ZC_DrawShape": [
[ [
"ZcDrawShape" "ZcDrawShape"

View File

File diff suppressed because it is too large Load Diff

View File

View File

@@ -1,174 +0,0 @@
import pygit2
import os
from tqdm import tqdm
import traceback
class GitProgress(pygit2.RemoteCallbacks):
def __init__(self):
super().__init__()
self.pbar = None
def transfer_progress(self, stats):
if self.pbar is None:
self.pbar = tqdm(total=stats.total_objects, unit="obj", desc="Fetching objects")
self.pbar.n = stats.received_objects
self.pbar.refresh()
if stats.received_objects == stats.total_objects:
self.pbar.close()
self.pbar = None
class Remote:
def __init__(self, repo, remote):
self.repo = repo
self.remote = remote
def get_default_branch(self, remote_name='origin'):
remote = self.repo.remotes[remote_name]
remote.fetch() # Fetch latest data from the remote
# Look for the remote HEAD reference
head_ref = f'refs/remotes/{remote_name}/HEAD'
if head_ref in self.repo.references:
# Resolve the symbolic reference to get the actual branch
target_ref = self.repo.references[head_ref].resolve().name
return target_ref.replace(f'refs/remotes/{remote_name}/', '')
else:
raise ValueError(f"Could not determine the default branch for remote '{remote_name}'")
def pull(self, remote_name='origin'):
try:
# Detect if we are in detached HEAD state
if self.repo.head_is_detached:
# Find the default branch
branch_name = self.get_default_branch(remote_name)
# Checkout the branch if exists, or create it
branch_ref = f"refs/heads/{branch_name}"
if branch_ref in self.repo.references:
self.repo.checkout(branch_ref)
else:
# Create and checkout the branch
target_commit = self.repo.lookup_reference(f"refs/remotes/{remote_name}/{branch_name}").target
self.repo.create_branch(branch_name, self.repo[target_commit])
self.repo.checkout(branch_ref)
# Get the current branch
current_branch = self.repo.head.shorthand
# Fetch from the remote
remote = self.repo.remotes[remote_name]
remote.fetch()
# Merge changes from the remote
remote_branch_ref = f"refs/remotes/{remote_name}/{current_branch}"
remote_branch = self.repo.lookup_reference(remote_branch_ref).target
self.repo.merge(remote_branch)
# Check for merge conflicts
if self.repo.index.conflicts is not None:
print("Merge conflicts detected!")
for conflict in self.repo.index.conflicts:
print(f"Conflict: {conflict}")
return
# Commit the merge
user = self.repo.default_signature
merge_commit = self.repo.create_commit(
'HEAD',
user,
user,
f"Merge branch '{current_branch}' from {remote_name}",
self.repo.index.write_tree(),
[self.repo.head.target, remote_branch]
)
except Exception as e:
traceback.print_exc()
print(f"An error occurred: {e}")
self.repo.state_cleanup() # Clean up the merge state if necessary
class Repo:
def __init__(self, repo_path):
self.repo = pygit2.Repository(repo_path)
def remote(self, name="origin"):
return Remote(self.repo, self.repo.remotes[name])
def update_recursive(self):
update_submodules(self.repo)
def resolve_repository_state(repo):
if repo.is_empty:
raise ValueError("Repository is empty. Cannot proceed with submodule update.")
try:
state = repo.state() # Call the state method
except Exception as e:
print(f"Error retrieving repository state: {e}")
raise
if state != pygit2.GIT_REPOSITORY_STATE_NONE:
if state in (pygit2.GIT_REPOSITORY_STATE_MERGE, pygit2.GIT_REPOSITORY_STATE_REVERT):
print(f"Conflict detected. Cleaning up repository state... {repo.path} / {state}")
repo.state_cleanup()
print("Repository state cleaned up.")
else:
raise RuntimeError(f"Unsupported repository state: {state}")
def update_submodules(repo):
try:
resolve_repository_state(repo)
except Exception as e:
print(f"Error resolving repository state: {e}")
return
gitmodules_path = os.path.join(repo.workdir, ".gitmodules")
if not os.path.exists(gitmodules_path):
return
with open(gitmodules_path, "r") as f:
lines = f.readlines()
submodules = []
submodule_path = None
submodule_url = None
for line in lines:
if line.strip().startswith("[submodule"):
if submodule_path and submodule_url:
submodules.append((submodule_path, submodule_url))
submodule_path = None
submodule_url = None
elif line.strip().startswith("path ="):
submodule_path = line.strip().split("=", 1)[1].strip()
elif line.strip().startswith("url ="):
submodule_url = line.strip().split("=", 1)[1].strip()
if submodule_path and submodule_url:
submodules.append((submodule_path, submodule_url))
for path, url in submodules:
submodule_repo_path = os.path.join(repo.workdir, path)
print(f"submodule_repo_path: {submodule_repo_path}")
if not os.path.exists(submodule_repo_path):
print(f"Cloning submodule {path}...")
pygit2.clone_repository(url, submodule_repo_path, callbacks=GitProgress())
else:
print(f"Updating submodule {path}...")
submodule_repo = Repo(submodule_repo_path)
submodule_repo.remote("origin").pull()
update_submodules(submodule_repo)
def clone_from(git_url, repo_dir, recursive=True):
pygit2.clone_repository(git_url, repo_dir, callbacks=GitProgress())
Repo(repo_dir).update_recursive()

View File

@@ -23,7 +23,7 @@ sys.path.append(glob_path)
import cm_global import cm_global
from manager_util import * from manager_util import *
version = [2, 53] version = [2, 54]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '') version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')

View File

@@ -248,23 +248,45 @@ import urllib.request
def get_model_dir(data): def get_model_dir(data):
if 'download_model_base' in folder_paths.folder_names_and_paths:
models_base = folder_paths.folder_names_and_paths['download_model_base'][0][0]
else:
models_base = folder_paths.models_dir
def resolve_custom_node(save_path):
save_path = save_path[13:] # remove 'custom_nodes/'
repo_name = os.path.dirname(save_path) # get custom node repo name
repo_path = core.lookup_installed_custom_nodes(repo_name)
if repo_path is not None and repo_path[0]:
# Returns the retargeted path based on the actually installed repository
return os.path.join(os.path.dirname(repo_path[1]), save_path)
else:
return None
if data['save_path'] != 'default': if data['save_path'] != 'default':
if '..' in data['save_path'] or data['save_path'].startswith('/'): if '..' in data['save_path'] or data['save_path'].startswith('/'):
print(f"[WARN] '{data['save_path']}' is not allowed path. So it will be saved into 'models/etc'.") print(f"[WARN] '{data['save_path']}' is not allowed path. So it will be saved into 'models/etc'.")
base_model = os.path.join(folder_paths.models_dir, "etc") base_model = os.path.join(models_base, "etc")
else: else:
if data['save_path'].startswith("custom_nodes"): if data['save_path'].startswith("custom_nodes"):
base_model = os.path.join(core.comfy_path, data['save_path']) base_model = resolve_custom_node(data['save_path'])
if base_model is None:
print(f"[ComfyUI-Manager] The target custom node for model download is not installed: {data['save_path']}")
return None
else: else:
base_model = os.path.join(folder_paths.models_dir, data['save_path']) base_model = os.path.join(models_base, data['save_path'])
else: else:
model_type = data['type'] model_type = data['type']
if model_type == "checkpoints" or model_type == "checkpoint": if model_type == "checkpoints" or model_type == "checkpoint":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0] base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "unclip": elif model_type == "unclip":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0] base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "clip": elif model_type == "clip" or model_type == "text_encoders":
base_model = folder_paths.folder_names_and_paths["clip"][0][0] if folder_paths.folder_names_and_paths.get("text_encoders"):
base_model = folder_paths.folder_names_and_paths["text_encoders"][0][0]
else:
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
base_model = folder_paths.folder_names_and_paths["clip"][0][0] # outdated version
elif model_type == "VAE": elif model_type == "VAE":
base_model = folder_paths.folder_names_and_paths["vae"][0][0] base_model = folder_paths.folder_names_and_paths["vae"][0][0]
elif model_type == "lora": elif model_type == "lora":
@@ -290,14 +312,17 @@ def get_model_dir(data):
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.") print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version
else: else:
base_model = os.path.join(folder_paths.models_dir, "etc") base_model = os.path.join(models_base, "etc")
return base_model return base_model
def get_model_path(data): def get_model_path(data):
base_model = get_model_dir(data) base_model = get_model_dir(data)
return os.path.join(base_model, data['filename']) if base_model is None:
return None
else:
return os.path.join(base_model, data['filename'])
def check_custom_nodes_installed(json_obj, do_fetch=False, do_update_check=True, do_update=False): def check_custom_nodes_installed(json_obj, do_fetch=False, do_update_check=True, do_update=False):

View File

@@ -14,6 +14,17 @@
{
"author": "StableDiffusionVN",
"title": "SDVN_Comfy_node",
"reference": "https://github.com/StableDiffusionVN/SDVN_Comfy_node",
"files": [
"https://github.com/StableDiffusionVN/SDVN_Comfy_node"
],
"install_type": "git-clone",
"description": "NODES:SDVN Load Image"
},
{ {
"author": "anze", "author": "anze",
"title": "ComfyUI-OIDN [WIP]", "title": "ComfyUI-OIDN [WIP]",

View File

@@ -1177,6 +1177,14 @@
"title_aux": "ComfyUI_Remaker_FaceSwap" "title_aux": "ComfyUI_Remaker_FaceSwap"
} }
], ],
"https://github.com/StableDiffusionVN/SDVN_Comfy_node": [
[
"Load Image Url"
],
{
"title_aux": "SDVN_Comfy_node"
}
],
"https://github.com/StartHua/Comfyui_CSDMT_CXH": [ "https://github.com/StartHua/Comfyui_CSDMT_CXH": [
[ [
"CSD" "CSD"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,16 @@
}, },
{
"author": "HentaiGirlfriendDotCom",
"title": "comfyui-highlight-connections [REMOVED]",
"reference": "https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections",
"files": [
"https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections"
],
"install_type": "git-clone",
"description": "A node that can be dropped into a group. When a node is then clicked within that group, all nodes and connections in that group get greyed out and the connections from the clicked node go bright red."
},
{ {
"author": "huangyangke", "author": "huangyangke",
"title": "ComfyUI-Kolors-IpadapterFaceId [DEPRECATED]", "title": "ComfyUI-Kolors-IpadapterFaceId [DEPRECATED]",

View File

@@ -10,6 +10,78 @@
{
"author": "Kling AI",
"title": "ComfyUI-KLingAI-API",
"reference": "https://github.com/KwaiVGI/ComfyUI-KLingAI-API",
"files": [
"https://github.com/KwaiVGI/ComfyUI-KLingAI-API"
],
"install_type": "git-clone",
"description": "Provide high-quality video and image generation capabilities, meeting creators' needs for creative content production and management through more convenient operations, richer functionalities, professional parameters, and stunning effects."
},
{
"author": "toyxyz",
"title": "ComfyUI_rgbx_Wrapper",
"reference": "https://github.com/toyxyz/ComfyUI_rgbx_Wrapper",
"files": [
"https://github.com/toyxyz/ComfyUI_rgbx_Wrapper"
],
"install_type": "git-clone",
"description": "This is the rgb2x wrapper node for ComfyUI. The required models are automatically downloaded on the first run.\noriginal project : [a/https://github.com/zheng95z/rgbx](original project : https://github.com/zheng95z/rgbx)"
},
{
"author": "Regi E",
"title": "Easy Pony",
"id": "comfyui-easy-pony",
"reference": "https://github.com/regiellis/ComfyUI-EasyPony",
"files": [
"https://github.com/regiellis/ComfyUI-EasyPony"
],
"install_type": "git-clone",
"description": "Simple node to assits with prompting for Pony models"
},
{
"author": "Yuan-ManX",
"title": "ComfyUI-LLaMA-Mesh",
"reference": "https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh",
"files": [
"https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for LLaMA-Mesh model."
},
{
"author": "zefu-lu",
"title": "ComfyUI_InstantX_SD35_Large_IPAdapter",
"id": "comfyui-instantx-sd3-5-large-ipadapter",
"reference": "https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter",
"files": [
"https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter"
],
"install_type": "git-clone",
"description": "Custom ComfyUI node for using InstantX SD3.5-Large IPAdapter"
},
{
"author": "mrhan1993",
"title": "ComfyUI-Fooocus",
"reference": "https://github.com/mrhan1993/ComfyUI-Fooocus",
"files": [
"https://github.com/mrhan1993/ComfyUI-Fooocus"
],
"install_type": "git-clone",
"description": "This extension provides image generation features based on Fooocus."
},
{
"author": "steelan9199",
"title": "ComfyUI-Teeth",
"reference": "https://github.com/steelan9199/ComfyUI-Teeth",
"files": [
"https://github.com/steelan9199/ComfyUI-Teeth"
],
"install_type": "git-clone",
"description": "NODES: Index List, TextSplitByDelimiter"
},
{ {
"author": "takemetosiberia", "author": "takemetosiberia",
"title": "SAMURAI Nodes for ComfyUI", "title": "SAMURAI Nodes for ComfyUI",
@@ -619,81 +691,6 @@
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Inspired by [a/InstantID](https://github.com/instantX-research/InstantID) and [a/InstantID Comfy](https://github.com/cubiq/ComfyUI_InstantID)\nThis ZenID Node has been refactored for specialized tasks like Face Swap" "description": "Inspired by [a/InstantID](https://github.com/instantX-research/InstantID) and [a/InstantID Comfy](https://github.com/cubiq/ComfyUI_InstantID)\nThis ZenID Node has been refactored for specialized tasks like Face Swap"
},
{
"author": "yorkane",
"title": "ComfyUI-KYNode",
"reference": "https://github.com/yorkane/ComfyUI-KYNode",
"files": [
"https://github.com/yorkane/ComfyUI-KYNode"
],
"install_type": "git-clone",
"description": "NODES:Advanced Lying Sigma Sampler, Save Image To target Path"
},
{
"author": "zer0thgear",
"title": "zer0 Comfy Utilities",
"id": "zer0-comfy-utils",
"reference": "https://github.com/zer0thgear/zer0-comfy-utils",
"files": [
"https://github.com/zer0thgear/zer0-comfy-utils"
],
"install_type": "git-clone",
"description": "Collection of personal nodes including tavern card-related nodes, prompt manipulation related utilities, and a node to combine a list of strings back into one string."
},
{
"author": "fallingmeteorite",
"title": "nsfw-image-check-comfyui",
"reference": "https://github.com/fallingmeteorite/nsfw-image-check-comfyui",
"files": [
"https://github.com/fallingmeteorite/nsfw-image-check-comfyui"
],
"install_type": "git-clone",
"description": "NODES:Nsfw Image Check Node"
},
{
"author": "lquesada",
"title": "ComfyUI-Interactive",
"id": "interactive",
"reference": "https://github.com/lquesada/ComfyUI-Interactive",
"files": [
"https://github.com/lquesada/ComfyUI-Interactive"
],
"install_type": "git-clone",
"description": "Nodes that allow making the UI interactive, with selectors and switches. Enables selecting across multiple options with the click of a button to move a workflow forward."
},
{
"author": "yondonfu",
"title": "ComfyUI-Background-Edit",
"id": "comfyui-background-edit",
"reference": "https://github.com/yondonfu/ComfyUI-Background-Edit",
"files": [
"https://github.com/yondonfu/ComfyUI-Background-Edit"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for editing background of images/videos with CUDA acceleration support."
},
{
"author": "TTPlanetPig",
"title": "Clothing Migration Kit",
"reference": "https://github.com/TTPlanetPig/Comfyui_Object_Migration",
"files": [
"https://github.com/TTPlanetPig/Comfyui_Object_Migration"
],
"install_type": "git-clone",
"description": "This is an experimental project focused on Stable Diffusion (SD) models. In a single generated image, the same object or character consistently maintains a very high level of consistency. I had already attempted to address this issue in the SDXL model."
},
{
"author": "chenbaiyujason",
"title": "ComfyUI-SCStepFun",
"reference": "https://github.com/chenbaiyujason/ComfyUI_StepFun",
"files": [
"https://github.com/chenbaiyujason/ComfyUI_StepFun"
],
"install_type": "git-clone",
"description": "To use stepfun's library, you need an official api that supports multimodal inputs such as video and pictures [a/https://platform.stepfun.com/request-restriction](https://platform.stepfun.com/request-restriction)"
} }
] ]
} }

View File

@@ -1121,6 +1121,7 @@
"https://github.com/Acly/comfyui-tooling-nodes": [ "https://github.com/Acly/comfyui-tooling-nodes": [
[ [
"ETN_ApplyMaskToImage", "ETN_ApplyMaskToImage",
"ETN_ApplyReferenceImages",
"ETN_AttentionMask", "ETN_AttentionMask",
"ETN_BackgroundRegion", "ETN_BackgroundRegion",
"ETN_CropImage", "ETN_CropImage",
@@ -1141,6 +1142,7 @@
"ETN_MergeImageTile", "ETN_MergeImageTile",
"ETN_NSFWFilter", "ETN_NSFWFilter",
"ETN_Parameter", "ETN_Parameter",
"ETN_ReferenceImage",
"ETN_SendImageWebSocket", "ETN_SendImageWebSocket",
"ETN_TileLayout", "ETN_TileLayout",
"ETN_Translate" "ETN_Translate"
@@ -3469,14 +3471,6 @@
"title_aux": "Hellrunner's Magical Nodes" "title_aux": "Hellrunner's Magical Nodes"
} }
], ],
"https://github.com/HentaiGirlfriendDotCom/comfyui-highlight-connections": [
[
"HighlightConnections"
],
{
"title_aux": "comfyui-highlight-connections"
}
],
"https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [ "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": [
[ [
"Load Prompt Travel file", "Load Prompt Travel file",
@@ -3494,6 +3488,8 @@
"https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [ "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [
[ [
"AgentMemoryProvider", "AgentMemoryProvider",
"AgentNode",
"BasicRecursionFilterNode",
"DocumentProcessor", "DocumentProcessor",
"LinuxMemoryDirectory", "LinuxMemoryDirectory",
"QueryNode" "QueryNode"
@@ -3676,6 +3672,7 @@
"IsulionClothingGenerator", "IsulionClothingGenerator",
"IsulionCuteAnimalRandom", "IsulionCuteAnimalRandom",
"IsulionEmotionGenerator", "IsulionEmotionGenerator",
"IsulionEpochGenerator",
"IsulionFantasyRaceGenerator", "IsulionFantasyRaceGenerator",
"IsulionHabitatGenerator", "IsulionHabitatGenerator",
"IsulionLoadImagesNode", "IsulionLoadImagesNode",
@@ -4402,6 +4399,19 @@
"title_aux": "ComfyUI-DenoiseChooser" "title_aux": "ComfyUI-DenoiseChooser"
} }
], ],
"https://github.com/KwaiVGI/ComfyUI-KLingAI-API": [
[
"Client",
"Image Generator",
"Image2Video",
"KLingAI Preview Video",
"Text2Video",
"Virtual Try On"
],
{
"title_aux": "ComfyUI-KLingAI-API"
}
],
"https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [ "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": [
[ [
"SendToDiscordWebhook" "SendToDiscordWebhook"
@@ -6073,6 +6083,16 @@
"title_aux": "ComfyUI-LexTools" "title_aux": "ComfyUI-LexTools"
} }
], ],
"https://github.com/SS-snap/ComfyUI-Snap_Processing": [
[
"AreaCalculator",
"PyQtCanvasNode",
"Snapload"
],
{
"title_aux": "Snap Processing for Comfyui"
}
],
"https://github.com/SamKhoze/ComfyUI-DeepFuze": [ "https://github.com/SamKhoze/ComfyUI-DeepFuze": [
[ [
"DeepFuze Save", "DeepFuze Save",
@@ -8434,6 +8454,16 @@
"title_aux": "MergeBlockWeighted_fo_ComfyUI" "title_aux": "MergeBlockWeighted_fo_ComfyUI"
} }
], ],
"https://github.com/Yuan-ManX/ComfyUI-LLaMA-Mesh": [
[
"Apply Gradient Color",
"Chat LLaMa Mesh",
"Visualize Mesh"
],
{
"title_aux": "ComfyUI-LLaMA-Mesh"
}
],
"https://github.com/Yuan-ManX/ComfyUI-SoundHub": [ "https://github.com/Yuan-ManX/ComfyUI-SoundHub": [
[ [
"Load Audio", "Load Audio",
@@ -8883,6 +8913,7 @@
"https://github.com/ai-shizuka/ComfyUI-tbox": [ "https://github.com/ai-shizuka/ComfyUI-tbox": [
[ [
"AnimalPosePreprocessor", "AnimalPosePreprocessor",
"BatchManager",
"ConstrainImageNode", "ConstrainImageNode",
"DWPosePreprocessor", "DWPosePreprocessor",
"DWPreprocessor", "DWPreprocessor",
@@ -8892,7 +8923,12 @@
"ImageSaver", "ImageSaver",
"ImageSize", "ImageSize",
"ImagesSaver", "ImagesSaver",
"MiDaSDepthPreprocessor" "MaskAddNode",
"MiDaSDepthPreprocessor",
"VideoInfo",
"VideoLoader",
"VideoSaver",
"WatermarkNode"
], ],
{ {
"author": "tstandley", "author": "tstandley",
@@ -9397,6 +9433,7 @@
"Sage_GetFileHash", "Sage_GetFileHash",
"Sage_GetInfoFromHash", "Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash", "Sage_GetModelJSONFromHash",
"Sage_IterOverFiles",
"Sage_JoinText", "Sage_JoinText",
"Sage_KSampler", "Sage_KSampler",
"Sage_LoraStack", "Sage_LoraStack",
@@ -9510,6 +9547,10 @@
"SaveImageExtended" "SaveImageExtended"
], ],
{ {
"author": "AudioscavengeR",
"description": "1 custom node to save your pictures in various folders and formats.",
"nickname": "Save Image Extended",
"title": "Save Image Extended",
"title_aux": "Save Image Extended for ComfyUI" "title_aux": "Save Image Extended for ComfyUI"
} }
], ],
@@ -12842,11 +12883,17 @@
], ],
"https://github.com/dymokomi/comfyui_dygen": [ "https://github.com/dymokomi/comfyui_dygen": [
[ [
"AdaptiveColorCircles",
"AdaptiveColorLines",
"AdaptiveColorRectangles",
"BinaryPatternStamper",
"DYImageCluster", "DYImageCluster",
"DYImageMasks", "DYImageMasks",
"DYImagePalette", "DYImagePalette",
"DYImageQuantize", "DYImageQuantize",
"ImageListToGrid" "ImageListToGrid",
"ImageScaler",
"RandomLines"
], ],
{ {
"title_aux": "comfyui_dygen" "title_aux": "comfyui_dygen"
@@ -14497,6 +14544,7 @@
"VAEDecode_party", "VAEDecode_party",
"accuweather_tool", "accuweather_tool",
"advance_ebd_tool", "advance_ebd_tool",
"aisuite_loader",
"any2str", "any2str",
"any_switcher", "any_switcher",
"api_function", "api_function",
@@ -17718,7 +17766,12 @@
"Added Layer Info To Array", "Added Layer Info To Array",
"Enhanced Random Light Source", "Enhanced Random Light Source",
"Float Relay", "Float Relay",
"HLFrequencyDetailRestore",
"Image Add Alpha",
"Image Frequency Analyzer",
"Image Relay", "Image Relay",
"Image Remove Alpha",
"Image Resize With Padding",
"Init Layer Info Array", "Init Layer Info Array",
"Int Relay", "Int Relay",
"Layer Image Seleted", "Layer Image Seleted",
@@ -17838,7 +17891,9 @@
], ],
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [ "https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [
[ [
"AddMaskForICLora" "AddMaskForICLora",
"ConcatContextWindow",
"CreateContextWindow"
], ],
{ {
"title_aux": "Comfyui-In-Context-Lora-Utils" "title_aux": "Comfyui-In-Context-Lora-Utils"
@@ -18970,6 +19025,162 @@
"title_aux": "ComfyUI_Seamless_Patten" "title_aux": "ComfyUI_Seamless_Patten"
} }
], ],
"https://github.com/mrhan1993/ComfyUI-Fooocus": [
[
"AlignYourStepsScheduler",
"BasicScheduler",
"CLIPLoader",
"CLIPMergeSimple",
"CLIPSave",
"CLIPSetLastLayer",
"CLIPTextEncode",
"CLIPTextEncodeSDXL",
"CLIPTextEncodeSDXLRefiner",
"CLIPVisionEncode",
"CLIPVisionLoader",
"Canny",
"CheckpointLoader",
"CheckpointLoaderSimple",
"CheckpointSave",
"ConditioningAverage",
"ConditioningCombine",
"ConditioningConcat",
"ConditioningSetArea",
"ConditioningSetAreaPercentage",
"ConditioningSetMask",
"ConditioningSetTimestepRange",
"ConditioningZeroOut",
"ControlNetApply",
"ControlNetApplyAdvanced",
"ControlNetLoader",
"CropMask",
"DiffControlNetLoader",
"DiffusersLoader",
"DualCLIPLoader",
"EmptyImage",
"EmptyLatentImage",
"EnhanceControl",
"EnhanceControls",
"ExponentialScheduler",
"FeatherMask",
"FlipSigmas",
"FooocusSampler",
"FooocusSettings",
"FreeU",
"FreeU_V2",
"GLIGENLoader",
"GLIGENTextBoxApply",
"GrowMask",
"HyperTile",
"HypernetworkLoader",
"ImageBatch",
"ImageBlend",
"ImageBlur",
"ImageColorToMask",
"ImageCompositeMasked",
"ImageCrop",
"ImageInvert",
"ImageOnlyCheckpointLoader",
"ImageOnlyCheckpointSave",
"ImagePadForOutpaint",
"ImagePrompts",
"ImageQuantize",
"ImageScale",
"ImageScaleBy",
"ImageScaleToTotalPixels",
"ImageSharpen",
"ImageToMask",
"ImageUpscaleWithModel",
"InpaintModelConditioning",
"InpaintOutpaint",
"InvertMask",
"JoinImageWithAlpha",
"KSampler",
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LatentAdd",
"LatentBatch",
"LatentBatchSeedBehavior",
"LatentBlend",
"LatentComposite",
"LatentCompositeMasked",
"LatentCrop",
"LatentFlip",
"LatentFromBatch",
"LatentInterpolate",
"LatentMultiply",
"LatentRotate",
"LatentSubtract",
"LatentUpscale",
"LatentUpscaleBy",
"LoadImage",
"LoadImageMask",
"LoadLatent",
"LoraLoader",
"LoraLoaderModelOnly",
"LoraStacks",
"MaskComposite",
"MaskToImage",
"ModelMergeAdd",
"ModelMergeBlocks",
"ModelMergeSimple",
"ModelMergeSubtract",
"ModelSamplingContinuousEDM",
"ModelSamplingDiscrete",
"PatchModelAddDownscale",
"PerpNeg",
"PhotoMakerEncode",
"PhotoMakerLoader",
"PolyexponentialScheduler",
"PorterDuffImageComposite",
"PreviewImage",
"RebatchImages",
"RebatchLatents",
"RepeatImageBatch",
"RepeatLatentBatch",
"RescaleCFG",
"SDTurboScheduler",
"SD_4XUpscale_Conditioning",
"SVD_img2vid_Conditioning",
"SamplerCustom",
"SamplerDPMPP_2M_SDE",
"SamplerDPMPP_SDE",
"SamplerTCD",
"SaveAnimatedPNG",
"SaveAnimatedWEBP",
"SaveImage",
"SaveLatent",
"SelfAttentionGuidance",
"SetLatentNoiseMask",
"SolidMask",
"SplitImageWithAlpha",
"SplitSigmas",
"StableZero123_Conditioning",
"StableZero123_Conditioning_Batched",
"StyleModelApply",
"StyleModelLoader",
"TomePatchModel",
"UNETLoader",
"UpscaleModelLoader",
"UpscaleVary",
"VAEDecode",
"VAEDecodeTiled",
"VAEEncode",
"VAEEncodeForInpaint",
"VAEEncodeTiled",
"VAELoader",
"VAESave",
"VPScheduler",
"VideoLinearCFGGuidance",
"unCLIPCheckpointLoader",
"unCLIPConditioning"
],
{
"author": "Konie",
"title_aux": "ComfyUI-Fooocus"
}
],
"https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [ "https://github.com/mullakhmetov/comfyui_dynamic_util_nodes": [
[ [
"ConcatStrings", "ConcatStrings",
@@ -20148,6 +20359,14 @@
"title_aux": "ComfyUI-Prediction" "title_aux": "ComfyUI-Prediction"
} }
], ],
"https://github.com/regiellis/ComfyUI-EasyPony": [
[
"EasyPony"
],
{
"title_aux": "Easy Pony"
}
],
"https://github.com/revirevy/Comfyui_saveimage_imgbb": [ "https://github.com/revirevy/Comfyui_saveimage_imgbb": [
[ [
"ImgBBUploader", "ImgBBUploader",
@@ -21735,6 +21954,15 @@
"title_aux": "ComfyUI Ollama" "title_aux": "ComfyUI Ollama"
} }
], ],
"https://github.com/steelan9199/ComfyUI-Teeth": [
[
"Index List",
"TextSplitByDelimiter"
],
{
"title_aux": "ComfyUI-Teeth"
}
],
"https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [ "https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [
[ [
"GridImageSplitter" "GridImageSplitter"
@@ -22223,6 +22451,14 @@
"title_aux": "TTools for ComfyUI" "title_aux": "TTools for ComfyUI"
} }
], ],
"https://github.com/toyxyz/ComfyUI_rgbx_Wrapper": [
[
"rgb2x"
],
{
"title_aux": "ComfyUI_rgbx_Wrapper"
}
],
"https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [ "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": [
[ [
"CaptureWebcam", "CaptureWebcam",
@@ -23742,6 +23978,14 @@
"title_aux": "comfyui_visual_anagram" "title_aux": "comfyui_visual_anagram"
} }
], ],
"https://github.com/zefu-lu/ComfyUI-InstantX-SD3_5-Large-IPAdapter": [
[
"SD35LargeIPAdapterLoader"
],
{
"title_aux": "ComfyUI_InstantX_SD35_Large_IPAdapter"
}
],
"https://github.com/zer0TF/cute-comfy": [ "https://github.com/zer0TF/cute-comfy": [
[ [
"Cute.Placeholder" "Cute.Placeholder"
@@ -23870,19 +24114,6 @@
"title_aux": "ComfyUI_Bxb" "title_aux": "ComfyUI_Bxb"
} }
], ],
"https://github.com/zmwv823/ComfyUI_Ctrlora": [
[
"UL_Image_Generation_Ctrlora_AIO_Preprocessor",
"UL_Image_Generation_Ctrlora_Condition_Params",
"UL_Image_Generation_Ctrlora_Sampler",
"UL_Image_Generation_Ctrlora_loader",
"UL_Image_Process_Prepare_Img_for_Inpaint",
"UL_Image_Process_Prepare_Img_for_Outpaint"
],
{
"title_aux": "ComfyUI_Ctrlora"
}
],
"https://github.com/zohac/ComfyUI_ZC_DrawShape": [ "https://github.com/zohac/ComfyUI_ZC_DrawShape": [
[ [
"ZcDrawShape" "ZcDrawShape"

View File

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

View File

@@ -1,4 +1,3 @@
pygit2
GitPython GitPython
PyGithub PyGithub
matrix-client==0.4.0 matrix-client==0.4.0
@@ -6,4 +5,4 @@ transformers
huggingface-hub>0.20 huggingface-hub>0.20
typer typer
rich rich
typing-extensions typing-extensions

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
rm ~/.tmp/default/*.py > /dev/null 2>&1 rm ~/.tmp/default/*.py > /dev/null 2>&1
python -m scanner ~/.tmp/default $* python scanner.py ~/.tmp/default $*
cp extension-node-map.json node_db/new/. cp extension-node-map.json node_db/new/.
echo "Integrity check" echo "Integrity check"

View File

@@ -2,8 +2,7 @@ import ast
import re import re
import os import os
import json import json
import sys from git import Repo
from glob import git_wrapper
import concurrent import concurrent
import datetime import datetime
import concurrent.futures import concurrent.futures
@@ -244,27 +243,25 @@ def get_py_urls_from_json(json_file):
return py_files return py_files
import traceback
def clone_or_pull_git_repository(git_url): def clone_or_pull_git_repository(git_url):
repo_name = git_url.split("/")[-1].split(".")[0] repo_name = git_url.split("/")[-1].split(".")[0]
repo_dir = os.path.join(temp_dir, repo_name) repo_dir = os.path.join(temp_dir, repo_name)
if os.path.exists(repo_dir): if os.path.exists(repo_dir):
try: try:
repo = git_wrapper.Repo(repo_dir) repo = Repo(repo_dir)
origin = repo.remote(name="origin") origin = repo.remote(name="origin")
origin.pull() origin.pull()
repo.update_recursive() repo.git.submodule('update', '--init', '--recursive')
print(f"Pulling {repo_name}...") print(f"Pulling {repo_name}...")
except Exception as e: except Exception as e:
traceback.print_exc()
print(f"Pulling {repo_name} failed: {e}") print(f"Pulling {repo_name} failed: {e}")
else: else:
try: try:
git_wrapper.clone_from(git_url, repo_dir, recursive=True) Repo.clone_from(git_url, repo_dir, recursive=True)
print(f"Cloning {repo_name}...") print(f"Cloning {repo_name}...")
except Exception as e: except Exception as e:
traceback.print_exc()
print(f"Cloning {repo_name} failed: {e}") print(f"Cloning {repo_name} failed: {e}")