11import { app , ComfyApp } from "../../scripts/app.js" ;
22import { api } from "../../../scripts/api.js" ;
33
4- app . registerExtension ( {
5- name : "bizyair.tool" ,
6- setup ( ) {
4+ async function handleFile ( json_data ) {
5+ const jsonContent = json_data
76
8- async function handleFile ( json_data ) {
9- const jsonContent = json_data
7+ await app . loadGraphData (
8+ jsonContent ,
9+ true ,
10+ false ,
11+ "convert_test"
12+ ) ;
13+ }
1014
11- await app . loadGraphData (
12- jsonContent ,
13- true ,
14- false ,
15- "convert_test"
16- ) ;
15+ // 检查是否为服务器模式
16+ async function isServerMode ( ) {
17+ const serverModeResponse = await fetch ( "/bizyair/server_mode" ) ;
18+ const serverModeData = await serverModeResponse . json ( ) ;
19+ return serverModeData . data . server_mode === true ;
20+ }
1721
18- }
19- async function convert ( ) {
20- const p2 = await app . graphToPrompt ( ) ;
21- const json = JSON . stringify ( p2 [ "workflow" ] , null , 2 ) ;
22+ async function convert ( ) {
23+ const p2 = await app . graphToPrompt ( ) ;
24+ const json = JSON . stringify ( p2 [ "workflow" ] , null , 2 ) ;
25+ await api . fetchApi ( "/bizyair/node_converter" , {
26+ method : "POST" ,
27+ headers : {
28+ "Content-Type" : "application/json" ,
29+ } ,
30+ body : json
31+ } ) . then ( response => response . json ( ) )
32+ . then ( data => handleFile ( data ) )
33+ . catch ( error => console . error ( "Error:" , error ) ) ;
34+ }
2235
23- await api . fetchApi ( "/bizyair/node_converter" , {
24- method : "POST" ,
25- headers : {
26- "Content-Type" : "application/json" ,
27- } ,
28- body : json
29- } ) . then ( response => response . json ( ) )
30- . then ( data => handleFile ( data ) )
31- . catch ( error => console . error ( "Error:" , error ) ) ;
32- }
33- // Add canvas menu options
36+ // 全局变量,用于节流控制
37+ let lastConvertTime = 0 ;
38+ const MIN_CONVERT_INTERVAL = 3000 ; // 最小间隔3秒
39+
40+ // 节流函数确保convert不会被频繁调用
41+ async function throttledConvert ( ) {
42+ const serverMode = await isServerMode ( ) ;
43+ if ( ! serverMode ) {
44+ return ;
45+ }
46+ const now = Date . now ( ) ;
47+ if ( now - lastConvertTime > MIN_CONVERT_INTERVAL ) {
48+ lastConvertTime = now ; ;
49+ convert ( ) ;
50+ }
51+ }
52+
53+ app . registerExtension ( {
54+ name : "bizyair.tool" ,
55+ setup ( ) {
56+ console . log ( 'BizyAir Tools extension setup' ) ;
57+ // 添加菜单选项
3458 const orig = LGraphCanvas . prototype . getCanvasMenuOptions ;
3559 LGraphCanvas . prototype . getCanvasMenuOptions = function ( ) {
3660 const options = orig . apply ( this , arguments ) ;
@@ -48,7 +72,33 @@ app.registerExtension({
4872 } ,
4973 } ) ;
5074 return options ;
51- } ;
52-
53- } ,
75+ } ;
76+ // 监听导入
77+ const origLoadGraphData = app . loadGraphData ;
78+ if ( origLoadGraphData ) {
79+ app . loadGraphData = async function ( ) {
80+ const result = origLoadGraphData . apply ( this , arguments ) ;
81+ const serverMode = await isServerMode ( ) ;
82+ if ( serverMode ) {
83+ setTimeout ( ( ) => {
84+ throttledConvert ( ) ;
85+ } , 500 ) ;
86+ }
87+ return result ;
88+ } ;
89+ }
90+ } ,
91+ // 添加init钩子,在ComfyUI初始化后调用convert函数
92+ init ( ) {
93+ console . log ( 'BizyAir Tools initializing...' ) ;
94+ lastConvertTime = Date . now ( ) ; // 记录初始化时间
95+ // 检查是否为服务器模式
96+ setTimeout ( async ( ) => {
97+ const serverMode = await isServerMode ( ) ;
98+ if ( serverMode ) {
99+ console . log ( '服务器模式,页面初始化完成,调用convert' ) ;
100+ convert ( ) ;
101+ }
102+ } , 500 ) ;
103+ }
54104} ) ;
0 commit comments