Skip to content

Commit 1a771fa

Browse files
author
longgui0318
committed
Open more model nodes
1 parent 44642fe commit 1a771fa

134 files changed

Lines changed: 11214 additions & 1104 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.style.yapf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[style]
2+
based_on_style = pep8
3+
column_limit = 230
4+
SPLIT_BEFORE_FIRST_ARGUMENT = true
5+
SPLIT_ARGUMENTS_WHEN_COMMA_TERMINATED = true

README.md

Lines changed: 129 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,42 +20,134 @@ Before using this node, you need to have a WaveSpeed AI API key. You can obtain
2020

2121
5. Start ComfyUI and enjoy using the WaveSpeed AI API node!
2222

23-
## Nodes
2423

25-
### Client
24+
## How to Use
2625

27-
This node is used to create a WaveSpeed AI client.
28-
29-
### Wan Text to Video (T2V)
30-
31-
This node generates a video from a text prompt using the Wan2.1 T2V model.
32-
33-
<p align="center">
34-
<img src="./examples/wan-t2v-lora.png" alt="Wan T2V with LoRA">
35-
</p>
36-
37-
Example workflow: [wan-t2v-lora.json](./examples/wan-t2v-lora.json)
38-
39-
Sample output: [wavespeed_video_1743346194.mp4](./examples/wavespeed_video_1743346194.mp4)
40-
41-
### Flux Image to Image (I2I)
42-
43-
This node generates images from input images using the Flux Dev model with LoRA support.
44-
45-
<p align="center">
46-
<img src="./examples/flux-dev-lora-i2i.png" alt="Flux I2I with LoRA">
47-
</p>
48-
49-
Example workflow: [flux-dev-lora-i2i.json](./examples/flux-dev-lora-i2i.json)
50-
51-
### Flux Text to Image (T2I)
52-
53-
This node generates images from text prompts using the Flux Dev model with LoRA support.
54-
55-
<p align="center">
56-
<img src="./examples/flux-dev-lora-t2i.png" alt="Flux T2I with LoRA">
57-
</p>
58-
59-
### Preview Video
60-
61-
This node is used to preview and save videos generated by the WaveSpeed AI API.
26+
The following are typical workflows and result demonstrations (each group includes a ComfyUI workflow screenshot).
27+
The workflow images contain workflow information and can be directly dragged into ComfyUI for use.
28+
29+
---
30+
31+
#### 1. Dia TTS
32+
- Workflow Example:
33+
34+
![Dia TTS Workflow](examples/dia_tts.png)
35+
36+
---
37+
38+
#### 2. Flux Control LoRA Canny
39+
- Workflow Example:
40+
41+
![Flux Control LoRA Canny Workflow](examples/flux_control_lora_canny.png)
42+
43+
---
44+
45+
#### 3. Flux Dev Lora Ultra Fast
46+
- Workflow Example:
47+
48+
![Flux Dev Lora Ultra Fast Workflow](examples/flux_dev_lora_ultra_fast.png)
49+
50+
---
51+
52+
#### 4. Hunyuan Custom Ref2V 720p Workflow and Result
53+
- Workflow Example:
54+
55+
![Hunyuan Custom Ref2V 720p Workflow](examples/hunyuan_custom_ref2v_720p.png)
56+
57+
- Result Video:
58+
59+
<video src="examples/hunyuan_custom_ref2v_720p.mp4" controls width="480"></video>
60+
61+
---
62+
63+
#### 5. Wan2.1 I2V 720p Ultra Fast Workflow and Result
64+
- Workflow Example:
65+
66+
![Wan2.1 I2V 720p Ultra Fast Workflow](examples/wan_2_1_i2v_720p_ultra_fast.png)
67+
68+
- Result Video:
69+
70+
<video src="examples/wan_2_1_i2v_720p_ultra_fast.mp4" controls width="480"></video>
71+
72+
---
73+
74+
75+
### Here are some popular models you can experience in ComfyUI:
76+
1. Hunyuan Custom
77+
2. Ghibli
78+
3. Wan2.1
79+
80+
### Here are some nodes list
81+
* "WaveSpeedAI Client"
82+
* "WaveSpeedAI Dia TTS"
83+
* "WaveSpeedAI Flux Control LoRA Canny"
84+
* "WaveSpeedAI Flux Control LoRA Depth"
85+
* "WaveSpeedAI Flux Dev"
86+
* "WaveSpeedAI Flux Dev Fill"
87+
* "WaveSpeedAI Flux Dev Lora"
88+
* "WaveSpeedAI Flux Dev Lora Ultra Fast"
89+
* "WaveSpeedAI Flux Dev Ultra Fast"
90+
* "WaveSpeedAI Flux Pro Redux"
91+
* "WaveSpeedAI Flux Redux Dev"
92+
* "WaveSpeedAI Flux Schnell"
93+
* "WaveSpeedAI Flux Schnell Lora"
94+
* "WaveSpeedAI Flux and SDXL Loras"
95+
* "WaveSpeedAI Framepack"
96+
* "WaveSpeedAI Ghibli"
97+
* "WaveSpeedAI Hidream E1 Full"
98+
* "WaveSpeedAI Hidream I1 Dev"
99+
* "WaveSpeedAI Hidream I1 Full"
100+
* "WaveSpeedAI Hunyuan 3D V2 Multi View"
101+
* "WaveSpeedAI Hunyuan Custom Ref2V 480p"
102+
* "WaveSpeedAI Hunyuan Custom Ref2V 720p"
103+
* "WaveSpeedAI Hunyuan Video I2V"
104+
* "WaveSpeedAI Hunyuan Video T2V"
105+
* "WaveSpeedAI Instant Character"
106+
* "WaveSpeedAI Kling v1.6 I2V Pro"
107+
* "WaveSpeedAI Kling v1.6 I2V Standard"
108+
* "WaveSpeedAI Kling v1.6 T2V Standard"
109+
* "WaveSpeedAI LTX Video I2V 480p"
110+
* "WaveSpeedAI LTX Video I2V 720p"
111+
* "WaveSpeedAI MMAudio V2"
112+
* "WaveSpeedAI Magi 1.24b"
113+
* "WaveSpeedAI Minimax Video 01"
114+
* "WaveSpeedAI Preview Video"
115+
* "WaveSpeedAI Real-ESRGAN"
116+
* "WaveSpeedAI SDXL"
117+
* "WaveSpeedAI SDXL Lora"
118+
* "WaveSpeedAI Save Audio"
119+
* "WaveSpeedAI SkyReels V1"
120+
* "WaveSpeedAI Step1X Edit"
121+
* "WaveSpeedAI Uno"
122+
* "WaveSpeedAI Upload Image"
123+
* "WaveSpeedAI Vidu Image to Video2.0"
124+
* "WaveSpeedAI Vidu Reference To Video2.0"
125+
* "WaveSpeedAI Vidu Start/End To Video2.0"
126+
* "WaveSpeedAI Wan Loras"
127+
* "WaveSpeedAI Wan2.1 I2V 480p"
128+
* "WaveSpeedAI Wan2.1 I2V 480p LoRA Ultra Fast"
129+
* "WaveSpeedAI Wan2.1 I2V 480p Lora"
130+
* "WaveSpeedAI Wan2.1 I2V 480p Ultra Fast"
131+
* "WaveSpeedAI Wan2.1 I2V 720p"
132+
* "WaveSpeedAI Wan2.1 I2V 720p LoRA Ultra Fast"
133+
* "WaveSpeedAI Wan2.1 I2V 720p Lora"
134+
* "WaveSpeedAI Wan2.1 I2V 720p Ultra Fast"
135+
* "WaveSpeedAI Wan2.1 T2V 480p LoRA"
136+
* "WaveSpeedAI Wan2.1 T2V 480p LoRA Ultra Fast"
137+
* "WaveSpeedAI Wan2.1 T2V 480p Ultra Fast"
138+
* "WaveSpeedAI Wan2.1 T2V 720p"
139+
* "WaveSpeedAI Wan2.1 T2V 720p LoRA"
140+
* "WaveSpeedAI Wan2.1 T2V 720p LoRA Ultra Fast"
141+
* "WaveSpeedAI Wan2.1 T2V 720p Ultra Fast"
142+
143+
### How to Apply Lora
144+
1. As we provide services on WaveSpeedAI-API, you cannot use your local lora files. However, we support loading lora via URL.
145+
2. You can use "WaveSpeedAi Wan Loras", "WaveSpeedAi Flux Loras", or "WaveSpeedAi Flux SDXL Loras" nodes.
146+
3. Enter the lora URL in the lora_path field. For example: https://huggingface.co/WaveSpeedAi/WanLoras/resolve/main/wan_loras.safetensors
147+
4. Enter the lora weight in the lora_weight field. For example: 0.5
148+
5. If you have multiple loras, you can add additional lora_path and lora_weight pairs.
149+
6. If your model is not on Hugging Face, that's fine. Any publicly accessible URL will work.
150+
151+
### How to Use image_url in Nodes
152+
1. You can use the "WaveSpeedAi Upload Image" node to convert a local IMAGE into an image_url.
153+
2. Connect the output to the corresponding node that requires it. You can find examples in the provided samples.

__init__.py

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,55 @@
1-
from .py import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
1+
import importlib.util
2+
import os
3+
import sys
4+
5+
NODE_CLASS_MAPPINGS = {}
6+
NODE_DISPLAY_NAME_MAPPINGS = {}
7+
8+
python = sys.executable
9+
10+
def get_ext_dir(subpath=None, mkdir=False):
11+
dir = os.path.dirname(__file__)
12+
if subpath is not None:
13+
dir = os.path.join(dir, subpath)
14+
15+
dir = os.path.abspath(dir)
16+
17+
if mkdir and not os.path.exists(dir):
18+
os.makedirs(dir)
19+
return dir
20+
21+
def serialize(obj):
22+
if isinstance(obj, (str, int, float, bool, list, dict, type(None))):
23+
return obj
24+
return str(obj) # 转为字符串
25+
26+
27+
py = get_ext_dir("py")
28+
files = os.listdir(py)
29+
30+
all_nodes = {}
31+
for file in files:
32+
if not file.endswith(".py"):
33+
continue
34+
name = os.path.splitext(file)[0]
35+
imported_module = importlib.import_module(".py.{}".format(name), __name__)
36+
try:
37+
NODE_CLASS_MAPPINGS = {**NODE_CLASS_MAPPINGS, **imported_module.NODE_CLASS_MAPPINGS}
38+
NODE_DISPLAY_NAME_MAPPINGS = {**NODE_DISPLAY_NAME_MAPPINGS, **imported_module.NODE_DISPLAY_NAME_MAPPINGS}
39+
serialized_CLASS_MAPPINGS = {k: serialize(v) for k, v in imported_module.NODE_CLASS_MAPPINGS.items()}
40+
serialized_DISPLAY_NAME_MAPPINGS = {k: serialize(v) for k, v in imported_module.NODE_DISPLAY_NAME_MAPPINGS.items()}
41+
all_nodes[file]={"NODE_CLASS_MAPPINGS": serialized_CLASS_MAPPINGS, "NODE_DISPLAY_NAME_MAPPINGS": serialized_DISPLAY_NAME_MAPPINGS}
42+
except:
43+
pass
44+
print("------------------------")
45+
names_list = []
46+
for key, value in NODE_DISPLAY_NAME_MAPPINGS.items():
47+
names_list.append(value)
48+
names_list.sort()
49+
50+
for name in names_list:
51+
print(f"\"{name}\"")
52+
print("------------------------")
253

354
WEB_DIRECTORY = "./web"
455

examples/dia_tts.png

264 KB
Loading

0 commit comments

Comments
 (0)