218 lines
12 KiB
Python
218 lines
12 KiB
Python
import os
|
|
import traceback
|
|
|
|
from server import PromptServer
|
|
from aiohttp import web
|
|
|
|
HAS_TKINTER = False
|
|
try:
|
|
import tkinter as tk
|
|
from tkinter import filedialog
|
|
HAS_TKINTER = True
|
|
except ImportError:
|
|
pass # 静默放行,不要让整个节点加载失败
|
|
|
|
@PromptServer.instance.routes.post("/xb_toolbox/choose_folder")
|
|
async def choose_folder(request):
|
|
if not HAS_TKINTER:
|
|
return web.json_response({"path": "", "error": "当前整合包环境缺少弹窗依赖,请手动输入或粘贴文件夹路径。"})
|
|
|
|
try:
|
|
root = tk.Tk()
|
|
root.withdraw()
|
|
root.attributes('-topmost', True)
|
|
folder_path = filedialog.askdirectory()
|
|
root.destroy()
|
|
return web.json_response({"path": folder_path})
|
|
except Exception as e:
|
|
return web.json_response({"path": "", "error": f"弹窗调用失败: {str(e)}"})
|
|
|
|
|
|
from .nodes_audio_slicer import handle_audio_waveform
|
|
|
|
@PromptServer.instance.routes.post("/xb_toolbox/audio_waveform")
|
|
async def get_audio_waveform(request):
|
|
return await handle_audio_waveform(request)
|
|
|
|
|
|
def print_success(msg):
|
|
print(f"\033[92m{msg}\033[0m")
|
|
|
|
def print_error(msg):
|
|
print(f"\033[91m{msg}\033[0m")
|
|
|
|
def print_warning(msg):
|
|
print(f"\033[93m{msg}\033[0m")
|
|
|
|
NODE_CLASS_MAPPINGS = {}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {}
|
|
WEB_DIRECTORY = os.path.join(os.path.dirname(os.path.abspath(__file__)), "js")
|
|
|
|
try:
|
|
from .nodes_vis import XB_VRAM_Calculator, XB_ChunkVisualization
|
|
from .nodes_vram import XTX_Data_Radar
|
|
from .nodes_video import XB_VideoParamsMaster, XB_ImageParamsMaster, XB_MasterParameter
|
|
from .nodes_blockswap import XB_UNetBlockSwap, XB_CheckpointBlockSwap
|
|
from .nodes_wiring import XB_DynamicBus, XB_UNetNameBroadcaster, XB_CLIPNameBroadcaster
|
|
from .nodes_dashboard import XB_Dashboard_Zen
|
|
from .nodes_tile import XB_SamplerChunkMaster
|
|
from .nodes_wan_vae import XB_WanImageToVideo, XB_WanFirstLastFrameToVideo, XB_WanSoundImageToVideo, XB_WanFunControlToVideo, XB_WanVaceToVideo, XB_Wan22FunControlToVideo, XB_WanInfiniteTalkToVideo, XB_WanInfiniteTalkToVideo_Single, XB_WanInfiniteTalkToVideo_Dual, XB_WanVAEDecodeTiled, XB_WanFunInpaintToVideo, XB_WanCameraImageToVideo, XB_WanPhantomSubjectToVideo, XB_WanHuMoImageToVideo, XB_Wan22ImageToVideoLatent, XB_WanSoundImageToVideoExtend, XB_WanSCAILToVideo, XB_WanSCAILToVideoPro
|
|
from .nodes_batch import XB_BatchFolderLoader
|
|
from .nodes_pipeline import XB_Wan_ParamBus, XB_Wan_RelayNode, XB_Wan_InfiniteRelayNode, XB_Video_Merger, XB_StoryboardSlicer,XB_WanAnimate_ParamBus,XB_WanAnimate_RelayNode, XB_WanInfiniteTalk_ParamBus, XB_WanInfiniteTalk_RelayNode
|
|
from .nodes_sageatt import XB_SageAttentionAccelerator
|
|
from .nodes_wan_t5 import XB_WanT5Loader
|
|
from .nodes_wan import (XB_WanCompileSettings, XB_WanModelLoader, XB_WanBlockSwap,
|
|
XB_WanSampler, XB_WanTextEncode, XB_WanVAELoader, XB_WanDecode,
|
|
XB_WanAnimateToVideo)
|
|
|
|
from .nodes_label import XB_CanvasLabel
|
|
from .nodes_audio_slicer import XB_AudioSlicer, XB_AudioSlicerV1, XB_AudioSlicerV2, XB_AudioSlicerV3
|
|
from .nodes_segmentation import XB_HumanSegModelLoader, XB_HumanSegmentation
|
|
from .nodes_rocm import (XB_ROCmKSampler, XB_ROCmKSamplerAdvanced,
|
|
XB_ROCmSamplerCustom, XB_ROCmSamplerCustomAdvanced,
|
|
XB_ROCmVAEDecode, XB_ROCmVAEEncode,
|
|
XB_ROCmVAEDecodeTemporal, XB_ROCmMemCleaner)
|
|
from .nodes_string_merge import XB_StringMerge
|
|
from .nodes_msr import XB_MSR
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"XB_VRAM_Calculator": XB_VRAM_Calculator,
|
|
"XB_ChunkVisualization": XB_ChunkVisualization,
|
|
"XTX_Data_Radar": XTX_Data_Radar,
|
|
"XB_VideoParamsMaster": XB_VideoParamsMaster,
|
|
"XB_ImageParamsMaster": XB_ImageParamsMaster,
|
|
"XB_MasterParameter": XB_MasterParameter,
|
|
"XB_UNetBlockSwap": XB_UNetBlockSwap,
|
|
"XB_CheckpointBlockSwap": XB_CheckpointBlockSwap,
|
|
"XB_DynamicBus": XB_DynamicBus,
|
|
"XB_UNetNameBroadcaster": XB_UNetNameBroadcaster,
|
|
"XB_CLIPNameBroadcaster": XB_CLIPNameBroadcaster,
|
|
"XB_Dashboard_Zen": XB_Dashboard_Zen,
|
|
"XB_SamplerChunkMaster": XB_SamplerChunkMaster,
|
|
"XB_WanImageToVideo": XB_WanImageToVideo,
|
|
"XB_WanFirstLastFrameToVideo": XB_WanFirstLastFrameToVideo,
|
|
"XB_WanFunControlToVideo": XB_WanFunControlToVideo,
|
|
"XB_WanVaceToVideo": XB_WanVaceToVideo,
|
|
"XB_Wan22FunControlToVideo": XB_Wan22FunControlToVideo,
|
|
"XB_WanSoundImageToVideo": XB_WanSoundImageToVideo,
|
|
"XB_WanInfiniteTalkToVideo": XB_WanInfiniteTalkToVideo,
|
|
"XB_WanInfiniteTalkToVideo_Single": XB_WanInfiniteTalkToVideo_Single,
|
|
"XB_WanInfiniteTalkToVideo_Dual": XB_WanInfiniteTalkToVideo_Dual,
|
|
"XB_WanVAEDecodeTiled": XB_WanVAEDecodeTiled,
|
|
"XB_WanFunInpaintToVideo": XB_WanFunInpaintToVideo,
|
|
"XB_WanCameraImageToVideo": XB_WanCameraImageToVideo,
|
|
"XB_WanPhantomSubjectToVideo": XB_WanPhantomSubjectToVideo,
|
|
"XB_WanHuMoImageToVideo": XB_WanHuMoImageToVideo,
|
|
"XB_Wan22ImageToVideoLatent": XB_Wan22ImageToVideoLatent,
|
|
"XB_WanSoundImageToVideoExtend": XB_WanSoundImageToVideoExtend,
|
|
"XB_WanSCAILToVideo": XB_WanSCAILToVideo,
|
|
"XB_WanSCAILToVideoPro": XB_WanSCAILToVideoPro,
|
|
"XB_BatchFolderLoader": XB_BatchFolderLoader,
|
|
"XB_Wan_ParamBus": XB_Wan_ParamBus,
|
|
"XB_Wan_RelayNode": XB_Wan_RelayNode,
|
|
"XB_Wan_InfiniteRelayNode": XB_Wan_InfiniteRelayNode,
|
|
"XB_Video_Merger": XB_Video_Merger,
|
|
"XB_StoryboardSlicer": XB_StoryboardSlicer,
|
|
"XB_SageAttentionAccelerator": XB_SageAttentionAccelerator,
|
|
"XB_ROCmKSampler": XB_ROCmKSampler,
|
|
"XB_ROCmKSamplerAdvanced": XB_ROCmKSamplerAdvanced,
|
|
"XB_ROCmSamplerCustom": XB_ROCmSamplerCustom,
|
|
"XB_ROCmSamplerCustomAdvanced": XB_ROCmSamplerCustomAdvanced,
|
|
"XB_ROCmVAEDecode": XB_ROCmVAEDecode,
|
|
"XB_ROCmVAEEncode": XB_ROCmVAEEncode,
|
|
"XB_ROCmVAEDecodeTemporal": XB_ROCmVAEDecodeTemporal,
|
|
"XB_ROCmMemCleaner": XB_ROCmMemCleaner,
|
|
"XB_WanT5Loader": XB_WanT5Loader,
|
|
"XB_WanCompileSettings": XB_WanCompileSettings,
|
|
"XB_WanModelLoader": XB_WanModelLoader,
|
|
"XB_WanBlockSwap": XB_WanBlockSwap,
|
|
"XB_WanSampler": XB_WanSampler,
|
|
"XB_WanTextEncode": XB_WanTextEncode,
|
|
"XB_WanVAELoader": XB_WanVAELoader,
|
|
"XB_WanDecode": XB_WanDecode,
|
|
"XB_WanAnimateToVideo": XB_WanAnimateToVideo,
|
|
"XB_WanAnimate_ParamBus": XB_WanAnimate_ParamBus,
|
|
"XB_WanAnimate_RelayNode": XB_WanAnimate_RelayNode,
|
|
"XB_WanInfiniteTalk_ParamBus": XB_WanInfiniteTalk_ParamBus,
|
|
"XB_WanInfiniteTalk_RelayNode": XB_WanInfiniteTalk_RelayNode,
|
|
"XB_HumanSegmentation": XB_HumanSegmentation,
|
|
"XB_HumanSegModelLoader": XB_HumanSegModelLoader,
|
|
"XB_CanvasLabel": XB_CanvasLabel,
|
|
"XB_AudioSlicer": XB_AudioSlicer,
|
|
"XB_AudioSlicerV1": XB_AudioSlicerV1,
|
|
"XB_AudioSlicerV2": XB_AudioSlicerV2,
|
|
"XB_AudioSlicerV3": XB_AudioSlicerV3,
|
|
"XB_StringMerge": XB_StringMerge,
|
|
"XB_MSR": XB_MSR
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"XB_VRAM_Calculator": "XB-BOX - VRAM Calculator",
|
|
"XB_ChunkVisualization": "XB-BOX - Chunk Visualization",
|
|
"XTX_Data_Radar": "XB-BOX - Data Radar",
|
|
"XB_VideoParamsMaster": "XB-BOX - Video Params Master",
|
|
"XB_ImageParamsMaster": "XB-BOX - Image Params Master",
|
|
"XB_MasterParameter": "XB-BOX - Master Parameter",
|
|
"XB_UNetBlockSwap": "XB-BOX - UNet Block Swap",
|
|
"XB_CheckpointBlockSwap": "XB-BOX - Checkpoint Block Swap",
|
|
"XB_DynamicBus": "XB-BOX - Dynamic Bus",
|
|
"XB_UNetNameBroadcaster": "XB-BOX - UNet Name Broadcaster",
|
|
"XB_CLIPNameBroadcaster": "XB-BOX - CLIP Name Broadcaster",
|
|
"XB_Dashboard_Zen": "XB-BOX - Dashboard Zen",
|
|
"XB_SamplerChunkMaster": "XB-BOX - Sampler Chunk Master",
|
|
"XB_WanImageToVideo": "XB-BOX - Wan Image2Video",
|
|
"XB_WanFirstLastFrameToVideo": "XB-BOX - Wan First/Last Frame2Video",
|
|
"XB_BatchFolderLoader": "XB-BOX - Batch Folder Loader",
|
|
"XB_Wan_ParamBus": "XB-BOX - Wan Param Bus",
|
|
"XB_Wan_RelayNode": "XB-BOX - Wan Relay Node",
|
|
"XB_Wan_InfiniteRelayNode": "XB-BOX - Wan Infinite Relay Node",
|
|
"XB_Video_Merger": "XB-BOX - Video Merger",
|
|
"XB_StoryboardSlicer": "XB-BOX - Storyboard Slicer",
|
|
"XB_SageAttentionAccelerator": "XB-BOX - SageAttention Accelerator",
|
|
"XB_ROCmKSampler": "XB-BOX - 🚀 ROCm 采样器",
|
|
"XB_ROCmKSamplerAdvanced": "XB-BOX - 🚀 ROCm 高级采样器",
|
|
"XB_ROCmSamplerCustom": "XB-BOX - ⚙️ ROCm 自定义采样器",
|
|
"XB_ROCmSamplerCustomAdvanced": "XB-BOX - ⚙️ ROCm 自定义高级采样器",
|
|
"XB_ROCmVAEDecode": "XB-BOX - 🖼️ ROCm VAE 解码",
|
|
"XB_ROCmVAEEncode": "XB-BOX - 📦 ROCm VAE 编码",
|
|
"XB_ROCmVAEDecodeTemporal": "XB-BOX - 🎬 ROCm VAE 时空解码",
|
|
"XB_ROCmMemCleaner": "XB-BOX - 🧹 ROCm 显存清理",
|
|
"XB_WanT5Loader": "XB-BOX - 📝 Wan T5 加载器(FP8)",
|
|
"XB_WanCompileSettings": "XB-BOX - ⚡ Wan 编译设置",
|
|
"XB_WanModelLoader": "XB-BOX - 🧠 Wan 模型加载",
|
|
"XB_WanBlockSwap": "XB-BOX - 🔄 Wan 分块交换",
|
|
"XB_WanSampler": "XB-BOX - 🎯 Wan 采样器",
|
|
"XB_WanTextEncode": "XB-BOX - ✍️ Wan 文本编码",
|
|
"XB_WanVAELoader": "XB-BOX - 🎨 Wan VAE 加载",
|
|
"XB_WanDecode": "XB-BOX - 🖼️ Wan VAE 解码",
|
|
"XB_WanAnimateToVideo": "XB-BOX - 🎬 Wan 动画转视频",
|
|
"XB_WanAnimate_ParamBus": "XB-BOX - 🎬 Animate 动作迁移总线",
|
|
"XB_WanAnimate_RelayNode": "XB-BOX - 🏃♀️ Animate 无限接力点",
|
|
"XB_WanInfiniteTalk_ParamBus": "XB-BOX - 🎵 InfiniteTalk 无限对口型总线",
|
|
"XB_WanInfiniteTalk_RelayNode": "XB-BOX - 🏃 InfiniteTalk 无限对口型接力点",
|
|
"XB_HumanSegmentation": "XB-BOX - ✂️ 人物分割 (DirectML/ROCm)",
|
|
"XB_HumanSegModelLoader": "XB-BOX - 📥 人物分割模型加载",
|
|
"XB_CanvasLabel": "XB-BOX - 🏷️ Canvas Label (文字标签)",
|
|
"XB_AudioSlicer": "XB-BOX - 🎵 音频切片(基础)",
|
|
"XB_AudioSlicerV1": "XB-BOX - 🎵 音频切片V1(单人)",
|
|
"XB_AudioSlicerV2": "XB-BOX - 🎵 音频切片V2(双人)",
|
|
"XB_AudioSlicerV3": "XB-BOX - 🎵 音频切片V3(高级)",
|
|
"XB_WanInfiniteTalkToVideo": "XB-BOX - 🎵 语音转视频分块",
|
|
"XB_WanInfiniteTalkToVideo_Single": "XB-BOX - 🎵 语音转视频分块(单人)",
|
|
"XB_WanInfiniteTalkToVideo_Dual": "XB-BOX - 🎵 语音转视频分块(双人)",
|
|
"XB_StringMerge": "XB-BOX - 📝 字符串合并",
|
|
"XB_MSR": "XB-BOX - 🎞️ MSR 多图合成帧序列",
|
|
}
|
|
|
|
print_success("\n" + "="*50)
|
|
print_success("🚀 [XB-BOX] XB_ToolBox Core Modules Loaded Successfully!")
|
|
print_success("="*50 + "\n")
|
|
|
|
except Exception as e:
|
|
print_error("\n" + "="*50)
|
|
print_error("🚨 [XB-BOX] FATAL ERROR: XB_ToolBox Loading Failed!")
|
|
print_error(f"❌ Error Detail: {str(e)}")
|
|
traceback.print_exc()
|
|
print_error("="*50 + "\n")
|
|
|
|
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS', 'WEB_DIRECTORY'] |