init Wan Node
This commit is contained in:
+3
-1
@@ -9,7 +9,7 @@ from .nodes.save_file import ComfyOnlineSaveFile
|
||||
from .nodes.LoadEmbedding import EmbeddingLoader
|
||||
from .nodes.AudioSave import SaveAudioAsWav
|
||||
from .nodes.TextSave import TextSave
|
||||
|
||||
from .nodes.nodes import LoadWanVideoLoraFromCivitAIWithDownloader
|
||||
from .nodes.LoadCheckpointFromCivitAI import LoadCheckpointFromCivitAIWithDownloader
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
@@ -17,6 +17,7 @@ NODE_CLASS_MAPPINGS = {
|
||||
"LoadLoraFromComfyOnline":LoadLoraFromComfyOnlineWithDownloader,
|
||||
"LoadHunyuanLoraFromCivitAI":LoadHunyuanLoraFromCivitAIWithDownloader,
|
||||
"LoadHunyuanLoraFromComfyOnline":LoadHunyuanLoraFromComfyOnlineWithDownloader,
|
||||
"LoadWanVideoLoraFromCivitAI":LoadWanVideoLoraFromCivitAIWithDownloader,
|
||||
"LoadHunyuanLoraFromHF":LoadHunyuanLoraFromHFWithDownloader,
|
||||
"LoadLoraFromHF":LoadLoraFromHFWithDownloader,
|
||||
"LoadLoraFromHFWithToken": LoadLoraFromHFWithToken,
|
||||
@@ -36,6 +37,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"LoadHunyuanLoraFromComfyOnline":" Load Lora From ComfyOnline",
|
||||
"LoadHunyuanLoraFromCivitAI": "Load HunyuanLora From CivitAI",
|
||||
"LoadHunyuanLoraFromHF": "Load HunyuanLora From HF",
|
||||
"LoadWanVideoLoraFromCivitAI": "Load WanVideoLora From CivitAI",
|
||||
'ComfyOnlineUploadAnything': "ComfyOnlineUploadAnything",
|
||||
"ComfyOnlineSaveFile": "ComfyOnlineSaveFile",
|
||||
"EmbeddingLoader": "Load Embedding",
|
||||
|
||||
@@ -14,6 +14,66 @@ import os
|
||||
folder_paths.add_model_folder_path("tmp_hunyuan_loras", os.path.join(folder_paths.models_dir, "tmp_hunyuan_loras"))
|
||||
|
||||
|
||||
class LoadWanVideoLoraFromCivitAIWithDownloader:
|
||||
def __init__(self):
|
||||
self.loaded_lora = None
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"civitai_model_id": ("STRING", {"default": "", "tooltip": "The ID of the model to download from CivitAI."}),
|
||||
"strength": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.0001, "tooltip": "LORA strength, set to 0.0 to unmerge the LORA"}),
|
||||
},
|
||||
"optional": {
|
||||
"prev_lora":("HYVIDLORA", {"default": None, "tooltip": "For loading multiple LoRAs"}),
|
||||
"blocks":("SELECTEDBLOCKS", ),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("WANVIDLORA",)
|
||||
RETURN_NAMES = ("lora", )
|
||||
FUNCTION = "getlorapath"
|
||||
CATEGORY = "WanVideoWrapper"
|
||||
DESCRIPTION = "Select a LoRA model from civitAI"
|
||||
|
||||
def getlorapath(self, civitai_model_id, strength, blocks=None, prev_lora=None, fuse_lora=False):
|
||||
# 获取 CivitAI Token
|
||||
civitai_token_id = os.getenv("CIVITAI_TOKEN", "").strip()
|
||||
if not civitai_token_id:
|
||||
raise RuntimeError("CIVITAI_TOKEN environment variable is not set or empty.")
|
||||
# 目标存储路径为 loras 目录
|
||||
loras_dir = folder_paths.get_folder_paths("tmp_wanvideo_loras")[0]
|
||||
|
||||
# 下载文件到 loras 目录
|
||||
lora_filename = f"tmp_civit_{civitai_model_id or 'downloaded_lora'}.safetensors" # 生成临时文件名
|
||||
lora_path = os.path.join(loras_dir, lora_filename)
|
||||
|
||||
self.download_from_civitai(civitai_model_id, civitai_token_id, lora_path)
|
||||
|
||||
loras_list = []
|
||||
lora = {
|
||||
"path": lora_path,
|
||||
"strength": strength,
|
||||
"name": lora_filename,
|
||||
"fuse_lora": fuse_lora,
|
||||
"blocks": blocks
|
||||
}
|
||||
if prev_lora is not None:
|
||||
loras_list.extend(prev_lora)
|
||||
|
||||
loras_list.append(lora)
|
||||
return (loras_list,)
|
||||
|
||||
def download_from_civitai(self, model_id, token_id, lora_path):
|
||||
print("Downloading LoRA from CivitAI")
|
||||
print(f"\tModel ID: {model_id}")
|
||||
print(f"\tToken ID: {token_id}")
|
||||
print(f"\tSave path: {lora_path}")
|
||||
# 实现下载逻辑
|
||||
download_cai(model_id, token_id, lora_path)
|
||||
|
||||
|
||||
class LoadHunyuanLoraFromCivitAIWithDownloader:
|
||||
def __init__(self):
|
||||
self.loaded_lora = None
|
||||
|
||||
Reference in New Issue
Block a user