bizyengine 1.2.76__py3-none-any.whl → 1.2.78__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,269 @@
1
+ from bizyairsdk import tensor_to_bytesio
2
+
3
+ from .trd_nodes_base import BizyAirTrdApiBaseNode
4
+
5
+
6
+ class VIDU_Q1_T2V_API(BizyAirTrdApiBaseNode):
7
+ NODE_DISPLAY_NAME = "Vidu Q1 Text To Video"
8
+ RETURN_TYPES = ("VIDEO", """{"vidu-q1-text2video": "vidu-q1"}""")
9
+ RETURN_NAMES = ("video", "bizyair_model_name")
10
+ CATEGORY = "☁️BizyAir/External APIs/Vidu"
11
+
12
+ @classmethod
13
+ def INPUT_TYPES(cls):
14
+ return {
15
+ "required": {
16
+ "prompt": (
17
+ "STRING",
18
+ {
19
+ "multiline": True,
20
+ "default": "",
21
+ },
22
+ ),
23
+ "seed": ("INT", {"default": 0, "min": 0, "max": 2147483647}),
24
+ "style": (["general", "anime"], {"default": "general"}),
25
+ "duration": ([5], {"default": 5}),
26
+ "aspect_ratio": (["16:9", "9:16", "1:1"], {"default": "16:9"}),
27
+ "resolution": (["1080p"], {"default": "1080p"}),
28
+ "movement_amplitude": (
29
+ ["auto", "small", "medium", "large"],
30
+ {"default": "auto", "tooltip": "画面中物体的运动幅度。"},
31
+ ),
32
+ "bgm": (
33
+ "BOOLEAN",
34
+ {
35
+ "default": False,
36
+ "tooltip": "当设置为 true 时,系统将自动添加合适的 BGM。BGM 无时长限制,系统会自动适配。",
37
+ },
38
+ ),
39
+ },
40
+ }
41
+
42
+ def handle_inputs(self, headers, prompt_id, **kwargs):
43
+ prompt = kwargs.get("prompt", "")
44
+ seed = kwargs.get("seed", 0)
45
+ style = kwargs.get("style", "general")
46
+ duration = kwargs.get("duration", 5)
47
+ aspect_ratio = kwargs.get("aspect_ratio", "16:9")
48
+ resolution = kwargs.get("resolution", "1080p")
49
+ movement_amplitude = kwargs.get("movement_amplitude", "auto")
50
+ bgm = kwargs.get("bgm", False)
51
+ if len(prompt) > 1500:
52
+ raise ValueError("Prompt must be less than 1500 characters")
53
+ data = {
54
+ "prompt": prompt,
55
+ "seed": seed,
56
+ "style": style,
57
+ "duration": duration,
58
+ "aspect_ratio": aspect_ratio,
59
+ "resolution": resolution,
60
+ "movement_amplitude": movement_amplitude,
61
+ "bgm": bgm,
62
+ "model": "vidu-q1-text2video",
63
+ }
64
+ return data, "vidu-q1"
65
+
66
+ def handle_outputs(self, outputs):
67
+ return (outputs[0][0], "")
68
+
69
+
70
+ class VIDU_Q1_I2V_API(BizyAirTrdApiBaseNode):
71
+ NODE_DISPLAY_NAME = "Vidu Q1 Image To Video"
72
+ RETURN_TYPES = ("VIDEO", """{"vidu-q1-img2video": "vidu-q1"}""")
73
+ RETURN_NAMES = ("video", "bizyair_model_name")
74
+ CATEGORY = "☁️BizyAir/External APIs/Vidu"
75
+
76
+ @classmethod
77
+ def INPUT_TYPES(cls):
78
+ return {
79
+ "required": {
80
+ "prompt": (
81
+ "STRING",
82
+ {
83
+ "multiline": True,
84
+ "default": "",
85
+ },
86
+ ),
87
+ "first_frame_image": ("IMAGE",),
88
+ "seed": ("INT", {"default": 0, "min": 0, "max": 2147483647}),
89
+ "duration": ([5], {"default": 5}),
90
+ "resolution": (["1080p"], {"default": "1080p"}),
91
+ "movement_amplitude": (
92
+ ["auto", "small", "medium", "large"],
93
+ {"default": "auto", "tooltip": "画面中物体的运动幅度。"},
94
+ ),
95
+ "bgm": (
96
+ "BOOLEAN",
97
+ {
98
+ "default": False,
99
+ "tooltip": "当设置为 true 时,系统将自动添加合适的 BGM。BGM 无时长限制,系统会自动适配。",
100
+ },
101
+ ),
102
+ },
103
+ "optional": {
104
+ "last_frame_image": ("IMAGE",),
105
+ },
106
+ }
107
+
108
+ def handle_inputs(self, headers, prompt_id, **kwargs):
109
+ prompt = kwargs.get("prompt", "")
110
+ seed = kwargs.get("seed", 0)
111
+ duration = kwargs.get("duration", 5)
112
+ resolution = kwargs.get("resolution", "1080p")
113
+ movement_amplitude = kwargs.get("movement_amplitude", "auto")
114
+ bgm = kwargs.get("bgm", False)
115
+ first_frame_image = kwargs.get("first_frame_image", None)
116
+ last_frame_image = kwargs.get("last_frame_image", None)
117
+ if len(prompt) > 1500:
118
+ raise ValueError("Prompt must be less than 1500 characters")
119
+ if first_frame_image is None:
120
+ raise ValueError("First frame image is required")
121
+ images = []
122
+ total_size = 0
123
+ model = "vidu-q1-img2video"
124
+ # 上传首帧图片
125
+ bio = tensor_to_bytesio(image=first_frame_image, total_pixels=4096 * 4096)
126
+ length = bio.getbuffer().nbytes
127
+ total_size += length
128
+ if total_size > 50 * 1024 * 1024:
129
+ raise ValueError(
130
+ "Image size is too large, Vidu Q1 only supports images up to 50MB"
131
+ )
132
+ first_frame_image_url = self.upload_file(
133
+ bio,
134
+ f"{prompt_id}_first.png",
135
+ headers,
136
+ )
137
+ images.append(first_frame_image_url)
138
+ if last_frame_image is not None:
139
+ # 上传末帧图片
140
+ bio = tensor_to_bytesio(image=last_frame_image, total_pixels=4096 * 4096)
141
+ length = bio.getbuffer().nbytes
142
+ total_size += length
143
+ if total_size > 50 * 1024 * 1024:
144
+ raise ValueError(
145
+ "Image size is too large, Vidu Q1 only supports images up to 50MB"
146
+ )
147
+ last_frame_image_url = self.upload_file(
148
+ bio,
149
+ f"{prompt_id}_last.png",
150
+ headers,
151
+ )
152
+ images.append(last_frame_image_url)
153
+ model = "vidu-q1-startend2video"
154
+
155
+ data = {
156
+ "prompt": prompt,
157
+ "seed": seed,
158
+ "duration": duration,
159
+ "resolution": resolution,
160
+ "movement_amplitude": movement_amplitude,
161
+ "bgm": bgm,
162
+ "model": model,
163
+ "images": images,
164
+ }
165
+ return data, "vidu-q1"
166
+
167
+ def handle_outputs(self, outputs):
168
+ return (outputs[0][0], "")
169
+
170
+
171
+ class VIDU_Q1_I2V_REF_API(BizyAirTrdApiBaseNode):
172
+ NODE_DISPLAY_NAME = "Vidu Q1 Reference Images To Video"
173
+ RETURN_TYPES = ("VIDEO", """{"vidu-q1-reference2video": "vidu-q1"}""")
174
+ RETURN_NAMES = ("video", "bizyair_model_name")
175
+ CATEGORY = "☁️BizyAir/External APIs/Vidu"
176
+
177
+ @classmethod
178
+ def INPUT_TYPES(cls):
179
+ return {
180
+ "required": {
181
+ "prompt": (
182
+ "STRING",
183
+ {
184
+ "multiline": True,
185
+ "default": "",
186
+ },
187
+ ),
188
+ "ref_image_1": ("IMAGE",),
189
+ "seed": ("INT", {"default": 0, "min": 0, "max": 2147483647}),
190
+ "duration": ([5], {"default": 5}),
191
+ "resolution": (["1080p"], {"default": "1080p"}),
192
+ "movement_amplitude": (
193
+ ["auto", "small", "medium", "large"],
194
+ {"default": "auto", "tooltip": "画面中物体的运动幅度。"},
195
+ ),
196
+ "bgm": (
197
+ "BOOLEAN",
198
+ {
199
+ "default": False,
200
+ "tooltip": "当设置为 true 时,系统将自动添加合适的 BGM。BGM 无时长限制,系统会自动适配。",
201
+ },
202
+ ),
203
+ },
204
+ "optional": {
205
+ "ref_image_2": ("IMAGE",),
206
+ "ref_image_3": ("IMAGE",),
207
+ "ref_image_4": ("IMAGE",),
208
+ "ref_image_5": ("IMAGE",),
209
+ "ref_image_6": ("IMAGE",),
210
+ "ref_image_7": ("IMAGE",),
211
+ },
212
+ }
213
+
214
+ def handle_inputs(self, headers, prompt_id, **kwargs):
215
+ prompt = kwargs.get("prompt", "")
216
+ seed = kwargs.get("seed", 0)
217
+ duration = kwargs.get("duration", 5)
218
+ resolution = kwargs.get("resolution", "1080p")
219
+ movement_amplitude = kwargs.get("movement_amplitude", "auto")
220
+ bgm = kwargs.get("bgm", False)
221
+ if len(prompt) > 1500:
222
+ raise ValueError("Prompt must be less than 1500 characters")
223
+ bios = []
224
+ images = []
225
+ total_size = 0
226
+ # 上传图片
227
+ for i, img in enumerate(
228
+ [
229
+ kwargs.get("ref_image_1", None),
230
+ kwargs.get("ref_image_2", None),
231
+ kwargs.get("ref_image_3", None),
232
+ kwargs.get("ref_image_4", None),
233
+ kwargs.get("ref_image_5", None),
234
+ kwargs.get("ref_image_6", None),
235
+ kwargs.get("ref_image_7", None),
236
+ ],
237
+ 1,
238
+ ):
239
+ if img is not None:
240
+ bio = tensor_to_bytesio(image=img, total_pixels=4096 * 4096)
241
+ length = bio.getbuffer().nbytes
242
+ total_size += length
243
+ if total_size > 50 * 1024 * 1024:
244
+ raise ValueError(
245
+ "Image size is too large, Vidu Q1 only supports images up to 50MB"
246
+ )
247
+ bios.append(bio)
248
+ for i, bio in enumerate(bios):
249
+ url = self.upload_file(
250
+ bio,
251
+ f"{prompt_id}_ref_{i+1}.png",
252
+ headers,
253
+ )
254
+ images.append(url)
255
+
256
+ data = {
257
+ "prompt": prompt,
258
+ "seed": seed,
259
+ "duration": duration,
260
+ "resolution": resolution,
261
+ "movement_amplitude": movement_amplitude,
262
+ "bgm": bgm,
263
+ "model": "vidu-q1-reference2video",
264
+ "images": images,
265
+ }
266
+ return data, "vidu-q1"
267
+
268
+ def handle_outputs(self, outputs):
269
+ return (outputs[0][0], "")
@@ -51,8 +51,12 @@ class Wan_V2_5_I2V_API(BizyAirTrdApiBaseNode):
51
51
  }
52
52
 
53
53
  NODE_DISPLAY_NAME = "Wan2.5 Image To Video"
54
- RETURN_TYPES = ("VIDEO", "STRING")
55
- RETURN_NAMES = ("video", "actual_prompt")
54
+ RETURN_TYPES = (
55
+ "VIDEO",
56
+ "STRING",
57
+ """{"wan2.5-i2v-preview": "wan2.5-i2v-preview"}""",
58
+ )
59
+ RETURN_NAMES = ("video", "actual_prompt", "bizyair_model_name")
56
60
  CATEGORY = "☁️BizyAir/External APIs/WanVideo"
57
61
 
58
62
  def handle_inputs(self, headers, prompt_id, **kwargs):
@@ -96,7 +100,7 @@ class Wan_V2_5_I2V_API(BizyAirTrdApiBaseNode):
96
100
  return input, model
97
101
 
98
102
  def handle_outputs(self, outputs):
99
- return (outputs[0][0],)
103
+ return (outputs[0][0], "")
100
104
 
101
105
 
102
106
  class Wan_V2_5_T2V_API(BizyAirTrdApiBaseNode):
@@ -158,8 +162,12 @@ class Wan_V2_5_T2V_API(BizyAirTrdApiBaseNode):
158
162
  }
159
163
 
160
164
  NODE_DISPLAY_NAME = "Wan2.5 Text To Video"
161
- RETURN_TYPES = ("VIDEO", "STRING")
162
- RETURN_NAMES = ("video", "actual_prompt")
165
+ RETURN_TYPES = (
166
+ "VIDEO",
167
+ "STRING",
168
+ """"{"wan2.5-t2v-preview": "wan2.5-t2v-preview"}""",
169
+ )
170
+ RETURN_NAMES = ("video", "actual_prompt", "bizyair_model_name")
163
171
  CATEGORY = "☁️BizyAir/External APIs/WanVideo"
164
172
 
165
173
  def handle_inputs(self, headers, prompt_id, **kwargs):
@@ -195,4 +203,212 @@ class Wan_V2_5_T2V_API(BizyAirTrdApiBaseNode):
195
203
  return input, model
196
204
 
197
205
  def handle_outputs(self, outputs):
198
- return (outputs[0][0],)
206
+ return (outputs[0][0], "")
207
+
208
+
209
+ class Wan_V2_6_I2V_API(BizyAirTrdApiBaseNode):
210
+ @classmethod
211
+ def INPUT_TYPES(cls):
212
+ return {
213
+ "required": {
214
+ "image": ("IMAGE",),
215
+ },
216
+ "optional": {
217
+ "audio": ("AUDIO",),
218
+ "prompt": (
219
+ "STRING",
220
+ {
221
+ "multiline": True,
222
+ "default": "",
223
+ },
224
+ ),
225
+ "negative_prompt": (
226
+ "STRING",
227
+ {
228
+ "multiline": True,
229
+ "default": "",
230
+ },
231
+ ),
232
+ "resolution": (
233
+ ["720P", "1080P"],
234
+ {"default": "1080P"},
235
+ ),
236
+ "duration": ([5, 10, 15], {"default": 5}),
237
+ "prompt_extend": (
238
+ "BOOLEAN",
239
+ {
240
+ "default": True,
241
+ "tooltip": "是否开启prompt智能改写。开启后使用大模型对输入prompt进行智能改写。对于较短的prompt生成效果提升明显,但会增加耗时。",
242
+ },
243
+ ),
244
+ "shot_type": (
245
+ ["single", "multi"],
246
+ {
247
+ "default": "single",
248
+ "tooltip": "指定生成视频的镜头类型,即视频是由一个连续镜头还是多个切换镜头组成。仅当prompt_extend: true时生效",
249
+ },
250
+ ),
251
+ "auto_audio": (
252
+ "BOOLEAN",
253
+ {
254
+ "default": True,
255
+ "tooltip": "是否由模型自动生成声音,优先级低于audio参数。",
256
+ },
257
+ ),
258
+ },
259
+ }
260
+
261
+ NODE_DISPLAY_NAME = "Wan2.6 Image To Video"
262
+ RETURN_TYPES = ("VIDEO", "STRING", """{"wan2.6-i2v": "wan2.6-i2v"}""")
263
+ RETURN_NAMES = ("video", "actual_prompt", "bizyair_model_name")
264
+ CATEGORY = "☁️BizyAir/External APIs/WanVideo"
265
+
266
+ def handle_inputs(self, headers, prompt_id, **kwargs):
267
+ # 参数
268
+ prompt = kwargs.get("prompt", "")
269
+ negative_prompt = kwargs.get("negative_prompt", "")
270
+ audio = kwargs.get("audio", None)
271
+ resolution = kwargs.get("resolution", "1080P")
272
+ duration = kwargs.get("duration", 5)
273
+ prompt_extend = kwargs.get("prompt_extend", True)
274
+ shot_type = kwargs.get("shot_type", "single")
275
+ auto_audio = kwargs.get("auto_audio", True)
276
+ image = kwargs.get("image", None)
277
+
278
+ model = "wan2.6-i2v"
279
+ input = {
280
+ "resolution": resolution,
281
+ "prompt_extend": prompt_extend,
282
+ "duration": duration,
283
+ "audio": auto_audio,
284
+ "model": model,
285
+ "shot_type": shot_type,
286
+ }
287
+ if prompt is not None and prompt.strip() != "":
288
+ input["prompt"] = prompt
289
+ if negative_prompt is not None and negative_prompt.strip() != "":
290
+ input["negative_prompt"] = negative_prompt
291
+
292
+ # 上传图片&音频
293
+ if image is not None:
294
+ image_url = self.upload_file(
295
+ tensor_to_bytesio(image=image, total_pixels=4096 * 4096),
296
+ f"{prompt_id}.png",
297
+ headers,
298
+ )
299
+ input["img_url"] = image_url
300
+ if audio is not None:
301
+ audio_url = self.upload_file(
302
+ save_audio(audio=audio, format="mp3"), f"{prompt_id}.mp3", headers
303
+ )
304
+ input["audio_url"] = audio_url
305
+
306
+ return input, model
307
+
308
+ def handle_outputs(self, outputs):
309
+ return (outputs[0][0], "")
310
+
311
+
312
+ class Wan_V2_6_T2V_API(BizyAirTrdApiBaseNode):
313
+ @classmethod
314
+ def INPUT_TYPES(cls):
315
+ return {
316
+ "required": {
317
+ "prompt": (
318
+ "STRING",
319
+ {
320
+ "multiline": True,
321
+ "default": "",
322
+ },
323
+ ),
324
+ },
325
+ "optional": {
326
+ "audio": ("AUDIO",),
327
+ "negative_prompt": (
328
+ "STRING",
329
+ {
330
+ "multiline": True,
331
+ "default": "",
332
+ },
333
+ ),
334
+ "size": (
335
+ [
336
+ "1280*720",
337
+ "720*1280",
338
+ "960*960",
339
+ "1088*832",
340
+ "832*1088",
341
+ "1920*1080",
342
+ "1080*1920",
343
+ "1440*1440",
344
+ "1632*1248",
345
+ "1248*1632",
346
+ ],
347
+ {"default": "1920*1080"},
348
+ ),
349
+ "duration": ([5, 10, 15], {"default": 5}),
350
+ "prompt_extend": (
351
+ "BOOLEAN",
352
+ {
353
+ "default": True,
354
+ "tooltip": "是否开启prompt智能改写。开启后使用大模型对输入prompt进行智能改写。对于较短的prompt生成效果提升明显,但会增加耗时。",
355
+ },
356
+ ),
357
+ "shot_type": (
358
+ ["single", "multi"],
359
+ {
360
+ "default": "single",
361
+ "tooltip": "指定生成视频的镜头类型,即视频是由一个连续镜头还是多个切换镜头组成。仅当prompt_extend: true时生效",
362
+ },
363
+ ),
364
+ "auto_audio": (
365
+ "BOOLEAN",
366
+ {
367
+ "default": True,
368
+ "tooltip": "是否由模型自动生成声音,优先级低于audio参数。",
369
+ },
370
+ ),
371
+ },
372
+ }
373
+
374
+ NODE_DISPLAY_NAME = "Wan2.6 Text To Video"
375
+ RETURN_TYPES = ("VIDEO", "STRING", """{"wan2.6-t2v": "wan2.6-t2v"}""")
376
+ RETURN_NAMES = ("video", "actual_prompt", "bizyair_model_name")
377
+ CATEGORY = "☁️BizyAir/External APIs/WanVideo"
378
+
379
+ def handle_inputs(self, headers, prompt_id, **kwargs):
380
+ # 参数
381
+ model = "wan2.6-t2v"
382
+ negative_prompt = kwargs.get("negative_prompt", "")
383
+ audio = kwargs.get("audio", None)
384
+ size = kwargs.get("size", "1920*1080")
385
+ duration = kwargs.get("duration", 5)
386
+ prompt_extend = kwargs.get("prompt_extend", True)
387
+ shot_type = kwargs.get("shot_type", "single")
388
+ auto_audio = kwargs.get("auto_audio", True)
389
+ prompt = kwargs.get("prompt", "")
390
+
391
+ input = {
392
+ "size": size,
393
+ "prompt_extend": prompt_extend,
394
+ "duration": duration,
395
+ "audio": auto_audio,
396
+ "model": model,
397
+ "shot_type": shot_type,
398
+ }
399
+ if prompt is not None and prompt.strip() != "":
400
+ input["prompt"] = prompt
401
+ if negative_prompt is not None and negative_prompt.strip() != "":
402
+ input["negative_prompt"] = negative_prompt
403
+
404
+ # 上传音频
405
+ if audio is not None:
406
+ audio_url = self.upload_file(
407
+ save_audio(audio=audio, format="mp3"), f"{prompt_id}.mp3", headers
408
+ )
409
+ input["audio_url"] = audio_url
410
+
411
+ return input, model
412
+
413
+ def handle_outputs(self, outputs):
414
+ return (outputs[0][0], "")
@@ -196,6 +196,7 @@ class BizyAirTrdApiBaseNode(BizyAirMiscBaseNode, TrdBase):
196
196
  # 可以认为图片输入都是List[Batch]
197
197
  images = kwargs.get(f"image_{i + 1}", None)
198
198
  for _, img_batch in enumerate(images if images is not None else []):
199
- total += img_batch.shape[0]
200
- extra_images.append(img_batch)
199
+ if img_batch is not None:
200
+ total += img_batch.shape[0]
201
+ extra_images.append(img_batch)
201
202
  return (extra_images, total)
bizyengine/misc/utils.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  import base64
3
3
  import concurrent.futures
4
+ import errno
4
5
  import json
5
6
  import logging
6
7
  import os
@@ -373,8 +374,8 @@ class SingleFlight(Generic[R]):
373
374
  # 读取结果
374
375
  with call.mu:
375
376
  if call.err is not None:
376
- return call.result, True, call.err
377
- return call.result, True, None
377
+ return call.result, not first, call.err
378
+ return call.result, not first, None
378
379
 
379
380
 
380
381
  _MODELS_CACHE = TTLCache[str, list[str]](ttl_sec=600)
@@ -383,7 +384,20 @@ _SF = SingleFlight[None]()
383
384
 
384
385
  def cache_models(request_api_key: str):
385
386
  # TODO: 效果待验证,目前节点只会被ComfyUI串行执行,所以不会出现竞争
386
- _SF.do("_cache_models", lambda: _cache_models(request_api_key))
387
+ # 重试最多五次
388
+ max_retries = 5
389
+ for i in range(max_retries):
390
+ try:
391
+ _, shared, e = _SF.do(
392
+ "_cache_models", lambda: _cache_models(request_api_key)
393
+ )
394
+ if e is not None:
395
+ raise e
396
+ return
397
+ except Exception:
398
+ logging.error(f"Failed to cache models on try #{i+1}")
399
+ if i < max_retries - 1:
400
+ time.sleep(5)
387
401
 
388
402
 
389
403
  def _cache_models(request_api_key: str):
@@ -394,7 +408,7 @@ def _cache_models(request_api_key: str):
394
408
  asyncio.run, api_client.fetch_all_llm_models(request_api_key)
395
409
  ).result()
396
410
  if len(all_models) == 0:
397
- return
411
+ raise errno.NO_MODEL_FOUND
398
412
  llm_models = [
399
413
  model
400
414
  for model in all_models
bizyengine/version.txt CHANGED
@@ -1 +1 @@
1
- 1.2.76
1
+ 1.2.78
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bizyengine
3
- Version: 1.2.76
3
+ Version: 1.2.78
4
4
  Summary: [a/BizyAir](https://github.com/siliconflow/BizyAir) Comfy Nodes that can run in any environment.
5
5
  Author-email: SiliconFlow <yaochi@siliconflow.cn>
6
6
  Project-URL: Repository, https://github.com/siliconflow/BizyAir
@@ -1,13 +1,13 @@
1
1
  bizyengine/__init__.py,sha256=GP9V-JM07fz7uv_qTB43QEA2rKdrVJxi5I7LRnn_3ZQ,914
2
- bizyengine/version.txt,sha256=TyBvX2lRbFHbsOP6JcbacJtjOAnXtSQa91b766suWhE,7
2
+ bizyengine/version.txt,sha256=NX2wLXhZUvOyCjFSI-YuxHfGMoPfQKB09K-V0V_vrUo,6
3
3
  bizyengine/bizy_server/__init__.py,sha256=SP9oSblnPo4KQyh7yOGD26YCskFAcQHAZy04nQBNRIw,200
4
- bizyengine/bizy_server/api_client.py,sha256=fF2VApJjPcPWGQwYWSEaIN12c8WT95lj1_QHX83WbeQ,44630
5
- bizyengine/bizy_server/errno.py,sha256=ikb4Z3MRMTjosi9AC1epaOwE3kJsD6CcFcFp56AKF-Y,16986
4
+ bizyengine/bizy_server/api_client.py,sha256=vNBUkFNMjPI_F_wAGiN-ydCZO8oLdgyWBlMY1DQbHOk,43685
5
+ bizyengine/bizy_server/errno.py,sha256=8dzmtlqq0wBJguHAXKEDb_uUYUQ7qlZQK6FxOpMxqLg,17328
6
6
  bizyengine/bizy_server/error_handler.py,sha256=MGrfO1AEqbfEgMWPL8B6Ypew_zHiQAdYGlhN9bZohrY,167
7
7
  bizyengine/bizy_server/execution.py,sha256=ayaEf6eGJKQsVZV-1_UlGlvwwmlH7FEek31Uq-MbUjA,1644
8
8
  bizyengine/bizy_server/profile.py,sha256=f4juAzJ73gCm0AhagYpt9WnG8HEI6xze_U96-omBLqU,3044
9
9
  bizyengine/bizy_server/resp.py,sha256=iOFT5Ud7VJBP2uqkojJIgc3y2ifMjjEXoj0ewneL9lc,710
10
- bizyengine/bizy_server/server.py,sha256=tdr_Um6aRed1YVMo7D9TpUyAu1ZQEyiHbQhyDfhtVoY,57877
10
+ bizyengine/bizy_server/server.py,sha256=cOoOEm7PtPUL38cnrxlG8VN83XEdyiwdNqbU-p4EUO4,58640
11
11
  bizyengine/bizy_server/stream_response.py,sha256=H2XHqlVRtQMhgdztAuG7l8-iV_Pm42u2x6WJ0gNVIW0,9654
12
12
  bizyengine/bizy_server/utils.py,sha256=t3y3ZTDzFa8K4wXlzgLVaFNCizgylsKsd9K3rLL4sGw,3986
13
13
  bizyengine/bizyair_extras/__init__.py,sha256=9iPmEyR7F1IXbUaBNS90ivW9ul18GcuWFxRfFv2ieAw,1011
@@ -45,17 +45,18 @@ bizyengine/bizyair_extras/nodes_ipadapter_plus/__init__.py,sha256=ECKATm_EKi_4G4
45
45
  bizyengine/bizyair_extras/nodes_ipadapter_plus/nodes_ipadapter_plus.py,sha256=lOKRem7oiPs8ZkA_p68HxagAgiCSvn3Rk-L4fSXIjyE,54846
46
46
  bizyengine/bizyair_extras/nodes_kolors_mz/__init__.py,sha256=HsCCCphW8q0SrWEiFlZKK_W2lQr1T0UJIJL7gEn37ME,3729
47
47
  bizyengine/bizyair_extras/oauth_callback/main.py,sha256=KQOZWor3kyNx8xvUNHYNMoHfCF9g_ht13_iPk4K_5YM,3633
48
- bizyengine/bizyair_extras/third_party_api/__init__.py,sha256=etiPBCIxOBD6hbrVhdivaRVOPrAp6z79YDWyJgqr_b4,320
49
- bizyengine/bizyair_extras/third_party_api/nodes_doubao.py,sha256=3Pdeerx0jcxpHw0Qo_jte8h_sSR6YT0msmb2d_8Z21g,20951
50
- bizyengine/bizyair_extras/third_party_api/nodes_flux.py,sha256=9o7imVDn9qXnUokkAjTH9yNdpXwcuQ8p3rsv5Y5eywQ,6135
51
- bizyengine/bizyair_extras/third_party_api/nodes_gemini.py,sha256=uI0PnSwoCUvn5_J2gK8X_ZcjvTMhnfO7X0NyZwWLl3M,17335
52
- bizyengine/bizyair_extras/third_party_api/nodes_gpt.py,sha256=pvIlwjjHnk_XCa4eJERBcsWonaBd24xP0jFVQLJXdQc,3098
53
- bizyengine/bizyair_extras/third_party_api/nodes_hailuo.py,sha256=hBmt6AHVXzsbO-Uq3Go-06yNLocV6sCtutKCVUz4P9E,3746
54
- bizyengine/bizyair_extras/third_party_api/nodes_kling.py,sha256=zyQF9NM0vnOeOzuCayj3oA2x_s9Nm-S23YcgGuiC5ig,18796
55
- bizyengine/bizyair_extras/third_party_api/nodes_sora.py,sha256=alxI3zNDSUKdc2IOOv5csIWFcHSAqL_55H9Zp4BdcN4,6976
56
- bizyengine/bizyair_extras/third_party_api/nodes_veo3.py,sha256=H-6zWsUSTKaMMIUrMaH205-hnegvXxs1SQmKi4uY8rI,6489
57
- bizyengine/bizyair_extras/third_party_api/nodes_wan_api.py,sha256=qkbXFHlnirqUTqnN-X5mu7MyHRYjtGv6e233PjlyUxg,6776
58
- bizyengine/bizyair_extras/third_party_api/trd_nodes_base.py,sha256=s4v8sPyvSu9-GaPQFFKq3w6V5uqQnciFgq7nrQGECiI,7895
48
+ bizyengine/bizyair_extras/third_party_api/__init__.py,sha256=jAZrTdBSVg3TielWoAUWUqWonBwoKZQ-jLQ07JzOHx8,339
49
+ bizyengine/bizyair_extras/third_party_api/nodes_doubao.py,sha256=d_1HMZEJ0eMftp4Ln0EI6A53leClqnSCf3J6Fwb2pwM,21687
50
+ bizyengine/bizyair_extras/third_party_api/nodes_flux.py,sha256=iv9V7-ijKGgR5_n8BlIe4E7QjWSGvWkIIUDMOn_3t1s,6339
51
+ bizyengine/bizyair_extras/third_party_api/nodes_gemini.py,sha256=tRjAGNJsJkYPXhlBREJd3jxPr4lF533Q_XMMHNIeXNM,17910
52
+ bizyengine/bizyair_extras/third_party_api/nodes_gpt.py,sha256=IwIvMiKU1h917w42NNCXM7o7VF1Bjm7hPEhwGeWGTOw,3220
53
+ bizyengine/bizyair_extras/third_party_api/nodes_hailuo.py,sha256=KtiRYeV5uCjLrXwFJ4gyuSrVSUWXmVVVL-pQR0gw8sA,3912
54
+ bizyengine/bizyair_extras/third_party_api/nodes_kling.py,sha256=ZxQB99O7E41lA25fRTuBY0sgrfNTlw1hmYxFU3eBgnk,29290
55
+ bizyengine/bizyair_extras/third_party_api/nodes_sora.py,sha256=_-O37uRi5QHqJZqlJ3QzoNHYxZH4zv79-0cBYuZHer4,7132
56
+ bizyengine/bizyair_extras/third_party_api/nodes_veo3.py,sha256=LzZl-9iLMe5IzEAXYUVkb8RUPLAfZloTPxRgGcY7Hsg,6703
57
+ bizyengine/bizyair_extras/third_party_api/nodes_vidu.py,sha256=-Eo2su0-t9qNPa5J4Qt3fx8xM9NjFHmgl19gMcTU7nM,10012
58
+ bizyengine/bizyair_extras/third_party_api/nodes_wan_api.py,sha256=GNc616NNsXcZYtojO2XTHwU3AFiprX6tFJ7qu3s2jgc,14508
59
+ bizyengine/bizyair_extras/third_party_api/trd_nodes_base.py,sha256=xu1q3cMprsfhjQPTQvzS2HqkrteWAgBx-nzqqGsy4gA,7945
59
60
  bizyengine/bizyair_extras/utils/aliyun_oss.py,sha256=H6wGZq1DqP7BHJ_frBJVvUVttgXprJprOnxytePIuos,3050
60
61
  bizyengine/bizyair_extras/utils/audio.py,sha256=cCmX080jtxsHFa7mCgn13R6cyfqE-1Gq37ZnRJdZNU8,3183
61
62
  bizyengine/bizybot/__init__.py,sha256=NINN_7QECKQwtAwKPBTrrSiAK6KbxaZCkIvJ-e1J1xk,262
@@ -102,8 +103,8 @@ bizyengine/misc/nodes_controlnet_union_sdxl.py,sha256=fYyu_XMY7mcX1Ad9x30q1tYB8m
102
103
  bizyengine/misc/route_sam.py,sha256=-bMIR2QalfnszipGxSxvDAHGJa5gPSrjkYPb5baaRg4,1561
103
104
  bizyengine/misc/segment_anything.py,sha256=wNKYwlYPMszfwj23524geFZJjZaG4eye65SGaUnh77I,8941
104
105
  bizyengine/misc/supernode.py,sha256=STN9gaxfTSErH8OiHeZa47d8z-G9S0I7fXuJvHQOBFM,4532
105
- bizyengine/misc/utils.py,sha256=nXXTPkj4WBvds4EWjI9c-ydeWwmXl8Vwrdu-4Fh62g8,12914
106
- bizyengine-1.2.76.dist-info/METADATA,sha256=6TobovQIQmNcfvYr0d56gUDT8VpRrwmgh_F6kyzKTNk,735
107
- bizyengine-1.2.76.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- bizyengine-1.2.76.dist-info/top_level.txt,sha256=2zapzqxX-we5cRyJkGf9bd5JinRtXp3-_uDI-xCAnc0,11
109
- bizyengine-1.2.76.dist-info/RECORD,,
106
+ bizyengine/misc/utils.py,sha256=GMRWKhOP-MCueVyCO-doflb7dH5dM32DyLcSPEVOXWA,13333
107
+ bizyengine-1.2.78.dist-info/METADATA,sha256=ojYvqvOYFk5hNUltqCws4o4BE_PPhuJuMKTdUlGpE-A,735
108
+ bizyengine-1.2.78.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
109
+ bizyengine-1.2.78.dist-info/top_level.txt,sha256=2zapzqxX-we5cRyJkGf9bd5JinRtXp3-_uDI-xCAnc0,11
110
+ bizyengine-1.2.78.dist-info/RECORD,,