@@ -322,6 +322,7 @@ class sd_generation_inputs(ctypes.Structure):
322322
323323class sd_generation_outputs (ctypes .Structure ):
324324 _fields_ = [("status" , ctypes .c_int ),
325+ ("animated" , ctypes .c_int ),
325326 ("data" , ctypes .c_char_p )]
326327
327328class whisper_load_model_inputs (ctypes .Structure ):
@@ -1862,9 +1863,11 @@ def sd_generate(genparams):
18621863 inputs .vid_req_avi = vid_req_avi
18631864 ret = handle .sd_generate (inputs )
18641865 outstr = ""
1866+ animated = False
18651867 if ret .status == 1 :
18661868 outstr = ret .data .decode ("UTF-8" ,"ignore" )
1867- return outstr
1869+ animated = True if ret .animated else False
1870+ return {"animated" : animated , "data" :outstr }
18681871
18691872
18701873def whisper_load_model (model_filename ):
@@ -4086,13 +4089,13 @@ def do_POST(self):
40864089 if (api_format == 4 or api_format == 3 ) and "stream" in genparams and genparams ["stream" ]:
40874090 sse_stream_flag = True
40884091
4089- gen = asyncio .run (self .handle_request (genparams , api_format , sse_stream_flag ))
4092+ gendat = asyncio .run (self .handle_request (genparams , api_format , sse_stream_flag ))
40904093
40914094 try :
40924095 # Headers are already sent when streaming
40934096 if not sse_stream_flag :
40944097 self .send_response (200 )
4095- genresp = (json .dumps (gen ).encode ())
4098+ genresp = (json .dumps (gendat ).encode ())
40964099 self .send_header ('content-length' , str (len (genresp )))
40974100 self .end_headers (content_type = 'application/json' )
40984101 self .wfile .write (genresp )
@@ -4104,7 +4107,7 @@ def do_POST(self):
41044107 self .end_headers (content_type = 'text/event-stream' )
41054108 toolsdata_res = []
41064109 try :
4107- toolsdata_res = gen ['choices' ][0 ]['message' ]['tool_calls' ]
4110+ toolsdata_res = gendat ['choices' ][0 ]['message' ]['tool_calls' ]
41084111 if toolsdata_res and len (toolsdata_res )> 0 :
41094112 toolsdata_res [0 ]["index" ] = 0 # need to add an index for OWUI
41104113 except Exception :
@@ -4131,17 +4134,19 @@ def do_POST(self):
41314134 elif is_oai_imggen :
41324135 genparams = sd_oai_tranform_params (genparams )
41334136 gen = sd_generate (genparams )
4137+ gendat = gen ["data" ]
4138+ genanim = gen ["animated" ]
41344139 genresp = None
41354140 if is_comfyui_imggen :
4136- if gen :
4137- lastgeneratedcomfyimg = base64 .b64decode (gen )
4141+ if gendat :
4142+ lastgeneratedcomfyimg = base64 .b64decode (gendat )
41384143 else :
41394144 lastgeneratedcomfyimg = b''
41404145 genresp = (json .dumps ({"prompt_id" : "12345678-0000-0000-0000-000000000001" ,"number" : 0 ,"node_errors" :{}}).encode ())
41414146 elif is_oai_imggen :
4142- genresp = (json .dumps ({"created" :int (time .time ()),"data" :[{"b64_json" :gen }],"background" :"opaque" ,"output_format" :"png" ,"size" :"1024x1024" ,"quality" :"medium" }).encode ())
4147+ genresp = (json .dumps ({"created" :int (time .time ()),"data" :[{"b64_json" :gendat }],"background" :"opaque" ,"output_format" :"png" ,"size" :"1024x1024" ,"quality" :"medium" }).encode ())
41434148 else :
4144- genresp = (json .dumps ({"images" :[gen ],"parameters" :{},"info" :"" }).encode ())
4149+ genresp = (json .dumps ({"images" :[gendat ],"parameters" :{},"info" :"" , "animated" : genanim }).encode ())
41454150 self .send_response (200 )
41464151 self .send_header ('content-length' , str (len (genresp )))
41474152 self .end_headers (content_type = 'application/json' )
@@ -4153,8 +4158,8 @@ def do_POST(self):
41534158 return
41544159 elif is_transcribe :
41554160 try :
4156- gen = whisper_generate (genparams )
4157- genresp = (json .dumps ({"text" :gen }).encode ())
4161+ gendat = whisper_generate (genparams )
4162+ genresp = (json .dumps ({"text" :gendat }).encode ())
41584163 self .send_response (200 )
41594164 self .send_header ('content-length' , str (len (genresp )))
41604165 self .end_headers (content_type = 'application/json' )
@@ -4166,10 +4171,10 @@ def do_POST(self):
41664171 return
41674172 elif is_tts :
41684173 try :
4169- gen = tts_generate (genparams )
4174+ gendat = tts_generate (genparams )
41704175 wav_data = b''
4171- if gen :
4172- wav_data = base64 .b64decode (gen ) # Decode the Base64 string into binary data
4176+ if gendat :
4177+ wav_data = base64 .b64decode (gendat ) # Decode the Base64 string into binary data
41734178 self .send_response (200 )
41744179 self .send_header ('content-length' , str (len (wav_data ))) # Set content length
41754180 self .send_header ('Content-Disposition' , 'attachment; filename="output.wav"' )
@@ -4182,18 +4187,18 @@ def do_POST(self):
41824187 return
41834188 elif is_embeddings :
41844189 try :
4185- gen = embeddings_generate (genparams )
4190+ gendat = embeddings_generate (genparams )
41864191 outdatas = []
41874192 odidx = 0
4188- for od in gen ["data" ]:
4193+ for od in gendat ["data" ]:
41894194 if genparams .get ("encoding_format" , "" )== "base64" :
41904195 binary_data = struct .pack ('<' + 'f' * len (od ), * od )
41914196 b64_string = base64 .b64encode (binary_data ).decode ('utf-8' )
41924197 outdatas .append ({"object" :"embedding" ,"index" :odidx ,"embedding" :b64_string })
41934198 else :
41944199 outdatas .append ({"object" :"embedding" ,"index" :odidx ,"embedding" :od })
41954200 odidx += 1
4196- genresp = (json .dumps ({"object" :"list" ,"data" :outdatas ,"model" :friendlyembeddingsmodelname ,"usage" :{"prompt_tokens" :gen ["count" ],"total_tokens" :gen ["count" ]}}).encode ())
4201+ genresp = (json .dumps ({"object" :"list" ,"data" :outdatas ,"model" :friendlyembeddingsmodelname ,"usage" :{"prompt_tokens" :gendat ["count" ],"total_tokens" :gendat ["count" ]}}).encode ())
41974202 self .send_response (200 )
41984203 self .send_header ('content-length' , str (len (genresp )))
41994204 self .end_headers (content_type = 'application/json' )
0 commit comments