Skip to content

Commit

Permalink
Added SharedControlNetLoader node and updated path_manager.py (#207)
Browse files Browse the repository at this point in the history
  • Loading branch information
ccssu authored Nov 7, 2024
1 parent deb7f1d commit 4620786
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
43 changes: 43 additions & 0 deletions js/share_load_controlnet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { api } from "../../../scripts/api.js";
import { app } from "../../scripts/app.js";
app.registerExtension({
name: "bizyair.siliconcloud.share.controlnet.loader",
async beforeRegisterNodeDef(nodeType, nodeData, app) {
if (nodeData.name === "BizyAir_SharedControlNetLoader") {
async function onTextChange(share_id, canvas, comfynode) {
console.log("share_id:", share_id);
const response = await api.fetchApi(`/bizyair/modelhost/${share_id}/models/files?type=bizyair/controlnet`, {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});

const { data: controlnets } = await response.json();
const controlnet_name_widget = comfynode.widgets.find(widget => widget.name === "control_net_name");
if (controlnets.length > 0) {
controlnet_name_widget.value = controlnets[0];
controlnet_name_widget.options.values = controlnets;
} else {
console.log("No controlnets found in the response");
controlnet_name_widget.value = "";
controlnet_name_widget.options.values = [];
}
}

function setWigetCallback(){
const shareid_widget = this.widgets.find(widget => widget.name === "share_id");
if (shareid_widget) {
shareid_widget.callback = onTextChange;
} else {
console.log("share_id widget not found");
}
}
const onNodeCreated = nodeType.prototype.onNodeCreated
nodeType.prototype.onNodeCreated = function () {
onNodeCreated?.apply(this, arguments);
setWigetCallback.call(this, arguments);
};
}
},
})
25 changes: 25 additions & 0 deletions nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -990,3 +990,28 @@ def INPUT_TYPES(s):
# FUNCTION = "set_range"

CATEGORY = "advanced/conditioning"


class SharedControlNetLoader(BizyAir_ControlNetLoader):
@classmethod
def INPUT_TYPES(s):
ret = super().INPUT_TYPES()
ret["required"]["share_id"] = ("STRING", {"default": "share_id"})
return ret

NODE_DISPLAY_NAME = "Shared Load ControlNet Model"

@classmethod
def VALIDATE_INPUTS(cls, share_id: str, control_net_name: str):
if control_net_name in folder_paths.filename_path_mapping.get("controlnet", {}):
return True

outs = folder_paths.get_share_filename_list("controlnet", share_id=share_id)
if control_net_name not in outs:
raise ValueError(
f"ControlNet {control_net_name} not found in share {share_id} with {outs}"
)
return True

def load_controlnet(self, control_net_name, share_id, **kwargs):
return super().load_controlnet(control_net_name=control_net_name, **kwargs)
1 change: 1 addition & 0 deletions src/bizyair/path_utils/path_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
@dataclass
class RefreshSettings:
loras: bool = True
controlnet: bool = True

def get(self, folder_name: str, default: bool = True):
return getattr(self, folder_name, default)
Expand Down

0 comments on commit 4620786

Please sign in to comment.