
    +j                         S SK Jr  S SKJrJrJr  S SKJrJrJ	r	J
r
  S SKJrJrJrJrJrJrJrJrJrJr   " S S\R,                  5      r " S S\R,                  5      r " S	 S
\5      rS\4S jrg)    )override)IOComfyExtensionInput)FlashVSRRequestTaskCreatedResponseTaskResultResponseSeedVR2ImageRequest)
ApiEndpointdownload_url_to_video_outputpoll_opsync_opupload_video_to_comfyapi validate_container_format_is_mp4validate_video_durationupload_images_to_comfyapiget_number_of_imagesdownload_url_to_image_tensorc                   l    \ rS rSr\S 5       r\S\R                  S\S\	R                  4S j5       rSrg)	WavespeedFlashVSRNode   c                    [         R                  " SSSS[         R                  R                  S5      [         R                  R                  S/ SQS9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S	[         R                  " [         R                  " S/S
9SS9S9	$ )Nr   zFlashVSR Video Upscalezpartner/video/WaveSpeedzsFast, high-quality video upscaler that boosts resolution and restores clarity for low-resolution or blurry footage.videotarget_resolution)720p1080p2K4KoptionsTwidgetsaw  
                (
                  $price_for_1sec := {"720p": 0.012, "1080p": 0.018, "2k": 0.024, "4k": 0.032};
                  {
                    "type":"usd",
                    "usd": $lookup($price_for_1sec, widgets.target_resolution),
                    "format":{"suffix": "/second", "approximate": true}
                  }
                )
                
depends_onexpr	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   SchemaVideor   ComboOutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclss    ?/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_wavespeed.pydefine_schema#WavespeedFlashVSRNode.define_schema   s    yy+1.[ w'2<YZ
 ! 		..		++		##
 //9L8MN	' 
  	
    r   r   returnc                   #    [        U5        [        USSS9  [        U [        SSS9[        [        UR                  5       [        X5      I S h  vN UR                  5       S9S9I S h  vN nUR                  S	:w  a%  [        S
UR                   SUR                   35      e[        U [        SUR                  R                   S3S9[        S SS9I S h  vN nUR                  S	:w  a%  [        SUR                   SUR                   35      e[         R"                  " [%        UR                  R&                  S   5      I S h  vN 5      $  GN N N| N7f)N   iX  )min_durationmax_durationz-/proxy/wavespeed/api/v3/wavespeed-ai/flashvsrPOSTpathmethod)r   r   durationresponse_modeldata   Task creation fails with code= and message=$/proxy/wavespeed/api/v3/predictions//resultrG   c                 L    U R                   c  S$ U R                   R                  $ NfailedrL   statusxs    r<   <lambda>/WavespeedFlashVSRNode.execute.<locals>.<lambda>U       166>x'Tqvv}}'Tr?         $@rK   status_extractorpoll_interval!Task processing failed with code=r   )r   r   r   r   r   r   lowerr   get_durationcode
ValueErrormessager   rL   idr	   r   
NodeOutputr   r,   )r;   r   r   initial_resfinal_responses        r<   executeWavespeedFlashVSRNode.execute=   sX     	)/AGL#LU[\. "3"9"9";4S@@++-		
 	
 s"=k>N>N=O}]h]p]p\qrss&CKDTDTDWDWCXX_`a-T 
 
 #%3N4G4G3HVdVlVlUmn  }}#?@S@S@[@[\]@^#__``# A	

 `sJ   AEEE*E+A-EEA.EE	EEEE N)__name__
__module____qualname____firstlineno__classmethodr=   r   r1   strr   rh   rk   __static_attributes__rm   r?   r<   r   r      sR    !
 !
F a{{a a 
	a ar?   r   c            	       p    \ rS rSr\S 5       r\S\S\R                  S\S\	R                  4S j5       rSrg	)
WavespeedImageUpscaleNode_   c                    [         R                  " SSSS[         R                  R                  SSS/S9[         R                  R                  S	5      [         R                  R                  S
/ SQS9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S[         R                  " [         R                  " S/S9SS9S9	$ )Nrv   zWaveSpeed Image Upscalezpartner/image/WaveSpeedz]Boost image resolution and quality, upscaling photos to 4K or 8K for sharp, detailed results.modelSeedVR2Ultimater   imager   )r   r   8KTr!   z
                (
                  $prices := {"seedvr2": 0.01, "ultimate": 0.06};
                  {"type":"usd", "usd": $lookup($prices, widgets.model)}
                )
                r#   r&   )r   r0   r2   r   Imager3   r4   r5   r6   r7   r8   r9   r:   s    r<   r=   'WavespeedImageUpscaleNode.define_schema`   s    yy/2.wwJ0GHw'2<NO ! 		..		++		##
 //	B'
 	
r?   ry   r|   r   r@   c                   #    [        U5      S:w  a  [        S5      eUS:X  a  SnOSn[        U [        SU 3SS9[        [        UR                  5       [        XSS	9I S h  vN S
   S9S9I S h  vN nUR                  S:w  a%  [        SUR                   SUR                   35      e[        U [        SUR                  R                   S3S9[        S SS9I S h  vN nUR                  S:w  a%  [        SUR                   SUR                   35      e[        R                  " [!        UR                  R"                  S
   5      I S h  vN 5      $  N N N{ N7f)N   z$Exactly one input image is required.rz   zseedvr2/imagezultimate-image-upscalerz%/proxy/wavespeed/api/v3/wavespeed-ai/rE   rF   )
max_imagesr   )r   r|   rJ   rM   rN   rO   rP   rQ   rR   c                 L    U R                   c  S$ U R                   R                  $ rT   rV   rX   s    r<   rZ   3WavespeedImageUpscaleNode.execute.<locals>.<lambda>   r\   r?   r]   r^   ra   )r   re   r   r   r   r
   rb   r   rd   rf   r   rL   rg   r	   r   rh   r   r,   )r;   ry   r|   r   
model_pathri   rj   s          r<   rk   !WavespeedImageUpscaleNode.execute   sr      &!+CDDI(J2J#DZLQZ`a.$"3"9"9";6saPPRST	
 
 s"=k>N>N=O}]h]p]p\qrss&CKDTDTDWDWCXX_`a-T 
 
 #%3N4G4G3HVdVlVlUmn  }}#?@S@S@[@[\]@^#__``! Q

 `sJ   AE E!E/E0A-EEA.EE	EEEErm   N)rn   ro   rp   rq   rr   r=   rs   r   r~   r   rh   rk   rt   rm   r?   r<   rv   rv   _   s\    
 
> "a"a {{"a 	"a
 
"a "ar?   rv   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)WavespeedExtension   r@   c                 "   #    [         [        /$ 7fN)r   rv   )selfs    r<   get_node_list WavespeedExtension.get_node_list   s      "%
 	
s   rm   N)rn   ro   rp   rq   r   listtyper   	ComfyNoder   rt   rm   r?   r<   r   r      s)    
T$r||*<%= 
 
r?   r   r@   c                     #    [        5       $ 7fr   )r   rm   r?   r<   comfy_entrypointr      s     s   N)typing_extensionsr   comfy_api.latestr   r   r   comfy_api_nodes.apis.wavespeedr   r   r	   r
   comfy_api_nodes.utilr   r   r   r   r   r   r   r   r   r   r   r   rv   r   r   rm   r?   r<   <module>r      sj    & 6 6   DaBLL DaNDa DaN
 
  2  r?   