Compare commits

..

1 Commits

Author SHA1 Message Date
Dr.Lt.Data
34a48fbae4 wip: pygit2 2024-11-29 19:50:35 +09:00
17 changed files with 1661 additions and 2095 deletions

View File

@@ -4059,7 +4059,7 @@
{
"author": "toyxyz",
"title": "ComfyUI_toyxyz_test_nodes",
"id": "comfyui_toyxyz_test_nodes",
"id": "toyxyz",
"reference": "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes",
"files": [
"https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes"
@@ -4067,16 +4067,6 @@
"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."
},
{
"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",
"title": "ComfyUI Stable Video Diffusion",
@@ -12963,7 +12953,7 @@
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils"
],
"install_type": "git-clone",
"description": "NODES: Add Mask For IC Lora, Create Context Window, Concatenate Context Window"
"description": "NODES: Add Mask For IC Lora"
},
{
"author": "lrzjason",
@@ -15070,6 +15060,16 @@
"install_type": "git-clone",
"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",
"title": "ComfyUI_Auto_Caption",
@@ -17047,15 +17047,14 @@
"description": "A modulation layer addon for Flux that reduces model size to 8.8B parameters without significant quality loss."
},
{
"author": "lth",
"author": "lo-th",
"title": "Comfyui_three_js",
"id": "lth",
"reference": "https://github.com/lo-th/Comfyui_three_js",
"files": [
"https://github.com/lo-th/Comfyui_three_js"
],
"install_type": "git-clone",
"description": "Use power of three.js in 3d view on comfyui."
"description": "Custom node for ComfyUI to run three js"
},
{
"author": "AIPOQUE",
@@ -17335,7 +17334,7 @@
"https://github.com/dymokomi/comfyui_dygen"
],
"install_type": "git-clone",
"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"
"description": "NODES: DY Image Quantize, DY Image Cluster, DY Image Palette, DY Image Masks, Image List to Grid"
},
{
"author": "bananasss00",
@@ -17357,16 +17356,6 @@
"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."
},
{
"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",
"title": "ComfyUI_StarNodes",
@@ -17418,59 +17407,6 @@
"install_type": "git-clone",
"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,7 +1121,6 @@
"https://github.com/Acly/comfyui-tooling-nodes": [
[
"ETN_ApplyMaskToImage",
"ETN_ApplyReferenceImages",
"ETN_AttentionMask",
"ETN_BackgroundRegion",
"ETN_CropImage",
@@ -1142,7 +1141,6 @@
"ETN_MergeImageTile",
"ETN_NSFWFilter",
"ETN_Parameter",
"ETN_ReferenceImage",
"ETN_SendImageWebSocket",
"ETN_TileLayout",
"ETN_Translate"
@@ -3471,6 +3469,14 @@
"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": [
[
"Load Prompt Travel file",
@@ -3488,8 +3494,6 @@
"https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [
[
"AgentMemoryProvider",
"AgentNode",
"BasicRecursionFilterNode",
"DocumentProcessor",
"LinuxMemoryDirectory",
"QueryNode"
@@ -3672,7 +3676,6 @@
"IsulionClothingGenerator",
"IsulionCuteAnimalRandom",
"IsulionEmotionGenerator",
"IsulionEpochGenerator",
"IsulionFantasyRaceGenerator",
"IsulionHabitatGenerator",
"IsulionLoadImagesNode",
@@ -4399,19 +4402,6 @@
"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": [
[
"SendToDiscordWebhook"
@@ -6083,16 +6073,6 @@
"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": [
[
"DeepFuze Save",
@@ -8454,16 +8434,6 @@
"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": [
[
"Load Audio",
@@ -8913,7 +8883,6 @@
"https://github.com/ai-shizuka/ComfyUI-tbox": [
[
"AnimalPosePreprocessor",
"BatchManager",
"ConstrainImageNode",
"DWPosePreprocessor",
"DWPreprocessor",
@@ -8923,12 +8892,7 @@
"ImageSaver",
"ImageSize",
"ImagesSaver",
"MaskAddNode",
"MiDaSDepthPreprocessor",
"VideoInfo",
"VideoLoader",
"VideoSaver",
"WatermarkNode"
"MiDaSDepthPreprocessor"
],
{
"author": "tstandley",
@@ -9433,7 +9397,6 @@
"Sage_GetFileHash",
"Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash",
"Sage_IterOverFiles",
"Sage_JoinText",
"Sage_KSampler",
"Sage_LoraStack",
@@ -9547,10 +9510,6 @@
"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"
}
],
@@ -12883,17 +12842,11 @@
],
"https://github.com/dymokomi/comfyui_dygen": [
[
"AdaptiveColorCircles",
"AdaptiveColorLines",
"AdaptiveColorRectangles",
"BinaryPatternStamper",
"DYImageCluster",
"DYImageMasks",
"DYImagePalette",
"DYImageQuantize",
"ImageListToGrid",
"ImageScaler",
"RandomLines"
"ImageListToGrid"
],
{
"title_aux": "comfyui_dygen"
@@ -14544,7 +14497,6 @@
"VAEDecode_party",
"accuweather_tool",
"advance_ebd_tool",
"aisuite_loader",
"any2str",
"any_switcher",
"api_function",
@@ -17766,12 +17718,7 @@
"Added Layer Info To Array",
"Enhanced Random Light Source",
"Float Relay",
"HLFrequencyDetailRestore",
"Image Add Alpha",
"Image Frequency Analyzer",
"Image Relay",
"Image Remove Alpha",
"Image Resize With Padding",
"Init Layer Info Array",
"Int Relay",
"Layer Image Seleted",
@@ -17891,9 +17838,7 @@
],
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [
[
"AddMaskForICLora",
"ConcatContextWindow",
"CreateContextWindow"
"AddMaskForICLora"
],
{
"title_aux": "Comfyui-In-Context-Lora-Utils"
@@ -19025,162 +18970,6 @@
"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": [
[
"ConcatStrings",
@@ -20359,14 +20148,6 @@
"title_aux": "ComfyUI-Prediction"
}
],
"https://github.com/regiellis/ComfyUI-EasyPony": [
[
"EasyPony"
],
{
"title_aux": "Easy Pony"
}
],
"https://github.com/revirevy/Comfyui_saveimage_imgbb": [
[
"ImgBBUploader",
@@ -21954,15 +21735,6 @@
"title_aux": "ComfyUI Ollama"
}
],
"https://github.com/steelan9199/ComfyUI-Teeth": [
[
"Index List",
"TextSplitByDelimiter"
],
{
"title_aux": "ComfyUI-Teeth"
}
],
"https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [
[
"GridImageSplitter"
@@ -22451,14 +22223,6 @@
"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": [
[
"CaptureWebcam",
@@ -23978,14 +23742,6 @@
"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": [
[
"Cute.Placeholder"
@@ -24114,6 +23870,19 @@
"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": [
[
"ZcDrawShape"

View File

File diff suppressed because it is too large Load Diff

0
glob/__init__.py Normal file
View File

174
glob/git_wrapper.py Normal file
View File

@@ -0,0 +1,174 @@
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
from manager_util import *
version = [2, 54]
version = [2, 53]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')

View File

@@ -248,45 +248,23 @@ import urllib.request
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 '..' 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'.")
base_model = os.path.join(models_base, "etc")
base_model = os.path.join(folder_paths.models_dir, "etc")
else:
if data['save_path'].startswith("custom_nodes"):
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
base_model = os.path.join(core.comfy_path, data['save_path'])
else:
base_model = os.path.join(models_base, data['save_path'])
base_model = os.path.join(folder_paths.models_dir, data['save_path'])
else:
model_type = data['type']
if model_type == "checkpoints" or model_type == "checkpoint":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "unclip":
base_model = folder_paths.folder_names_and_paths["checkpoints"][0][0]
elif model_type == "clip" or model_type == "text_encoders":
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 == "clip":
base_model = folder_paths.folder_names_and_paths["clip"][0][0]
elif model_type == "VAE":
base_model = folder_paths.folder_names_and_paths["vae"][0][0]
elif model_type == "lora":
@@ -312,17 +290,14 @@ def get_model_dir(data):
print(f"[ComfyUI-Manager] Your ComfyUI is outdated version.")
base_model = folder_paths.folder_names_and_paths["unet"][0][0] # outdated version
else:
base_model = os.path.join(models_base, "etc")
base_model = os.path.join(folder_paths.models_dir, "etc")
return base_model
def get_model_path(data):
base_model = get_model_dir(data)
if base_model is None:
return None
else:
return os.path.join(base_model, data['filename'])
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):

View File

@@ -14,17 +14,6 @@
{
"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",
"title": "ComfyUI-OIDN [WIP]",

View File

@@ -1177,14 +1177,6 @@
"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": [
[
"CSD"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -10,16 +10,6 @@
},
{
"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",
"title": "ComfyUI-Kolors-IpadapterFaceId [DEPRECATED]",

View File

@@ -10,78 +10,6 @@
{
"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",
"title": "SAMURAI Nodes for ComfyUI",
@@ -691,6 +619,81 @@
],
"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"
},
{
"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,7 +1121,6 @@
"https://github.com/Acly/comfyui-tooling-nodes": [
[
"ETN_ApplyMaskToImage",
"ETN_ApplyReferenceImages",
"ETN_AttentionMask",
"ETN_BackgroundRegion",
"ETN_CropImage",
@@ -1142,7 +1141,6 @@
"ETN_MergeImageTile",
"ETN_NSFWFilter",
"ETN_Parameter",
"ETN_ReferenceImage",
"ETN_SendImageWebSocket",
"ETN_TileLayout",
"ETN_Translate"
@@ -3471,6 +3469,14 @@
"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": [
[
"Load Prompt Travel file",
@@ -3488,8 +3494,6 @@
"https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": [
[
"AgentMemoryProvider",
"AgentNode",
"BasicRecursionFilterNode",
"DocumentProcessor",
"LinuxMemoryDirectory",
"QueryNode"
@@ -3672,7 +3676,6 @@
"IsulionClothingGenerator",
"IsulionCuteAnimalRandom",
"IsulionEmotionGenerator",
"IsulionEpochGenerator",
"IsulionFantasyRaceGenerator",
"IsulionHabitatGenerator",
"IsulionLoadImagesNode",
@@ -4399,19 +4402,6 @@
"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": [
[
"SendToDiscordWebhook"
@@ -6083,16 +6073,6 @@
"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": [
[
"DeepFuze Save",
@@ -8454,16 +8434,6 @@
"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": [
[
"Load Audio",
@@ -8913,7 +8883,6 @@
"https://github.com/ai-shizuka/ComfyUI-tbox": [
[
"AnimalPosePreprocessor",
"BatchManager",
"ConstrainImageNode",
"DWPosePreprocessor",
"DWPreprocessor",
@@ -8923,12 +8892,7 @@
"ImageSaver",
"ImageSize",
"ImagesSaver",
"MaskAddNode",
"MiDaSDepthPreprocessor",
"VideoInfo",
"VideoLoader",
"VideoSaver",
"WatermarkNode"
"MiDaSDepthPreprocessor"
],
{
"author": "tstandley",
@@ -9433,7 +9397,6 @@
"Sage_GetFileHash",
"Sage_GetInfoFromHash",
"Sage_GetModelJSONFromHash",
"Sage_IterOverFiles",
"Sage_JoinText",
"Sage_KSampler",
"Sage_LoraStack",
@@ -9547,10 +9510,6 @@
"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"
}
],
@@ -12883,17 +12842,11 @@
],
"https://github.com/dymokomi/comfyui_dygen": [
[
"AdaptiveColorCircles",
"AdaptiveColorLines",
"AdaptiveColorRectangles",
"BinaryPatternStamper",
"DYImageCluster",
"DYImageMasks",
"DYImagePalette",
"DYImageQuantize",
"ImageListToGrid",
"ImageScaler",
"RandomLines"
"ImageListToGrid"
],
{
"title_aux": "comfyui_dygen"
@@ -14544,7 +14497,6 @@
"VAEDecode_party",
"accuweather_tool",
"advance_ebd_tool",
"aisuite_loader",
"any2str",
"any_switcher",
"api_function",
@@ -17766,12 +17718,7 @@
"Added Layer Info To Array",
"Enhanced Random Light Source",
"Float Relay",
"HLFrequencyDetailRestore",
"Image Add Alpha",
"Image Frequency Analyzer",
"Image Relay",
"Image Remove Alpha",
"Image Resize With Padding",
"Init Layer Info Array",
"Int Relay",
"Layer Image Seleted",
@@ -17891,9 +17838,7 @@
],
"https://github.com/lrzjason/Comfyui-In-Context-Lora-Utils": [
[
"AddMaskForICLora",
"ConcatContextWindow",
"CreateContextWindow"
"AddMaskForICLora"
],
{
"title_aux": "Comfyui-In-Context-Lora-Utils"
@@ -19025,162 +18970,6 @@
"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": [
[
"ConcatStrings",
@@ -20359,14 +20148,6 @@
"title_aux": "ComfyUI-Prediction"
}
],
"https://github.com/regiellis/ComfyUI-EasyPony": [
[
"EasyPony"
],
{
"title_aux": "Easy Pony"
}
],
"https://github.com/revirevy/Comfyui_saveimage_imgbb": [
[
"ImgBBUploader",
@@ -21954,15 +21735,6 @@
"title_aux": "ComfyUI Ollama"
}
],
"https://github.com/steelan9199/ComfyUI-Teeth": [
[
"Index List",
"TextSplitByDelimiter"
],
{
"title_aux": "ComfyUI-Teeth"
}
],
"https://github.com/stormcenter/ComfyUI-AutoSplitGridImage": [
[
"GridImageSplitter"
@@ -22451,14 +22223,6 @@
"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": [
[
"CaptureWebcam",
@@ -23978,14 +23742,6 @@
"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": [
[
"Cute.Placeholder"
@@ -24114,6 +23870,19 @@
"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": [
[
"ZcDrawShape"

View File

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

View File

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

View File

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

View File

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