
    +j@                        S SK r S SKJr  S SK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JrJrJr  S SKJrJrJrJrJrJr  SrSrSrS	\\R>                     S
\ R@                  4S jr! " S S\R>                  5      r" " S S\R>                  5      r# " S S\R>                  5      r$ " S S\R>                  5      r%\RL                  " \RN                  " / SQS9SS9r( " S S\5      r)S\)4S jr*g)    N)override)IOComfyExtension)PixverseTextVideoRequestPixverseImageVideoRequestPixverseTransitionVideoRequestPixverseImageUploadResponsePixverseVideoResponse PixverseGenerationStatusResponsePixverseAspectRatioPixverseQualityPixverseDurationPixverseMotionModePixverseStatus
PixverseIOpixverse_templates)ApiEndpointdownload_url_to_video_outputpoll_opsync_optensor_to_bytesiovalidate_string       4   clsimagec           	         #    [        U [        SSS9[        S[        U5      0SS9I S h  vN nUR                  c  [        SUR                   S35      eUR                  R                  $  N@7f)	Nz/proxy/pixverse/image/uploadPOSTpathmethodr   zmultipart/form-data)response_modelfilescontent_typez'PixVerse image upload request failed: '')r   r   r	   r   Resp	ExceptionErrMsgimg_id)r   r   response_uploads      >/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_pixverse.pyupload_image_to_pixverser-   !   sx     #7G2)%01* O #A/BXBXAYYZ[\\&&&s   (A-A+AA-c                   t    \ rS rSrSr\S\R                  4S j5       r\S\	S\R                  4S j5       rSrg)	PixverseTemplateNode.   z0
Select template for PixVerse Video generation.
returnc                    [         R                  " SSS[         R                  R                  S[	        [
        R                  " 5       5      S9/[         R                  " [        R                  5      R                  SS9/S9$ )	Nr/   zPixVerse Templatepartner/video/PixVersetemplateoptionspixverse_template)display_name)node_idr8   categoryinputsoutputs)r   SchemaComboInputlistr   keysCustomr   TEMPLATEOutputr   s    r,   define_schema"PixverseTemplateNode.define_schema3   sj    yy*,-z48J8O8O8Q3RS YYz223::H[:\]
 	
    r4   c                     [         R                  " US 5      nUc  [        SU S35      e[        R                  " U5      $ )Nz
Template 'z' is not recognized.)r   getr(   r   
NodeOutput)r   r4   template_ids      r,   executePixverseTemplateNode.execute?   s>    (,,Xt<j
2FGHH}}[))rH    N)__name__
__module____qualname____firstlineno____doc__classmethodr   r=   rF   strrK   rM   __static_attributes__rO   rH   r,   r/   r/   .   sL     	
bii 	
 	
 *s *r}} * *rH   r/   c                       \ rS rSr\S\R                  4S j5       r\  SS\S\S\S\	S	\S
\S\	S\R                  4S jj5       rSrg)PixverseTextToVideoNodeG   r1   c                 \   [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
[
        S9[         R                  R                  S[        [        R                  S9[         R                  R                  S[        S9[         R                  R                  S[        S9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSS9[         R                  " [        R                  5      R                  SSSS9/[         R                  R                  5       /[         R                   R"                  [         R                   R$                  [         R                   R&                  /S[(        S9	$ )NrY   zPixVerse Text to Videor3   1Generates videos based on prompt and output_size.promptT Prompt for the video generation	multilinedefaulttooltipaspect_ratior5   qualityr6   rb   duration_secondsmotion_modeseedr   Seed for video generation.rb   minmaxcontrol_after_generaterc   negative_prompt?An optional text description of undesired elements on an image.rb   ra   rc   optionalr7   ]An optional template to influence style of generation, created by the PixVerse Template node.rc   rs   	r9   r8   r:   descriptionr;   r<   hiddenis_api_nodeprice_badge)r   r=   Stringr?   r>   r   r   res_540pr   r   IntrB   r   rC   VideorD   Hiddenauth_token_comfy_orgapi_key_comfy_org	unique_idPRICE_BADGE_VIDEOrE   s    r,   rF   %PixverseTextToVideoNode.define_schemaH   s   yy-1-K		"=	    "/   ++44  
 &,   !.   "+/8   		%"]!    		*--.44'{! 5 O,Z XX__&'		..		++		##
 )s:
 :	
rH   Nr]   rd   re   rg   rh   rp   r7   c	                   #    [        USSS9  U[        R                  :X  a!  [        R                  n[
        R                  nO$U[
        R                  :w  a  [        R                  n[        U [        SSS9[        [        UUUUUU(       a  UOS UUS9S9I S h  vN n	U	R                  c  [        S	U	R                   S
35      e[        U [        SU	R                  R                   3S9[         ["        R$                  /["        R&                  ["        R(                  ["        R*                  /S [,        S9I S h  vN n
[.        R0                  " [3        U
R                  R4                  5      I S h  vN 5      $  N NA N7f)NF   )strip_whitespace
min_lengthz#/proxy/pixverse/video/text/generater   r    )r]   rd   re   durationrh   rp   rL   ri   r#   dataPixVerse request failed: 'r&   /proxy/pixverse/video/result/r!   c                 .    U R                   R                  $ Nr'   statusxs    r,   <lambda>1PixverseTextToVideoNode.execute.<locals>.<lambda>       qvv}}rH   r#   completed_statusesfailed_statusesstatus_extractorestimated_duration)r   r   	res_1080pr   normalr   dur_5r   r   r
   r   r'   r(   r)   r   video_idr   r   
successfulcontents_moderationfaileddeletedAVERAGE_DURATION_T2Vr   rK   r   url)r   r]   rd   re   rg   rh   ri   rp   r7   response_apiresponse_polls              r,   rM   PixverseTextToVideoNode.execute   s^     	1E o///,33K/55!1!7!77,33K$B6R0)))'3B-		
 
 $89L9L8MQOPP%<\=N=N=W=W<XYZ; . 9 9:22%%&&
 53
 
 }}#?@R@R@V@V#WWXX?
$
 Xs7   BE?E9BE?9E;:6E?0E=1	E?;E?=E?rO   NN)rP   rQ   rR   rS   rU   r   r=   rF   rV   intrK   rM   rW   rO   rH   r,   rY   rY   G   s    ;
bii ;
 ;
z   $!%3Y3Y 3Y 	3Y
 3Y 3Y 3Y 3Y 
3Y 3YrH   rY   c                       \ rS rSr\S\R                  4S j5       r\  SS\R                  S\
S\
S\S	\
S
\
S\S\R                  4S jj5       rSrg)PixverseImageToVideoNode   r1   c                 V   [         R                  " SSSS[         R                  R                  S5      [         R                  R                  SSSS	S
9[         R
                  R                  S[        [        R                  S9[         R
                  R                  S[        S9[         R
                  R                  S[        S9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSS9[         R                  " [        R                  5      R                  SSSS9/[         R                  R                  5       /[         R                   R"                  [         R                   R$                  [         R                   R&                  /S[(        S9	$ )Nr   zPixVerse Image to Videor3   r\   r   r]   Tr^   r_   r`   re   rf   rg   r5   rh   ri   r   rj   rk   rl   rp   rq   rr   r7   rt   ru   rv   )r   r=   Imager?   r{   r>   r   r|   r   r   r}   rB   r   rC   r~   rD   r   r   r   r   r   rE   s    r,   rF   &PixverseImageToVideoNode.define_schema   s{   yy.2-Kw'		"=	    ++44  
 &,   !.   "+/8   		%"]!    		*--.44'{! 5 I)T XX__&'		..		++		##
 )m7
 7	
rH   Nr   r]   re   rg   rh   rp   r7   c	                 ,  #    [        USS9  [        X5      I S h  vN n	U[        R                  :X  a!  [        R
                  n[        R                  nO$U[        R                  :w  a  [        R
                  n[        U [        SSS9[        [        U	UUUUU(       a  UOS UUS9S9I S h  vN n
U
R                  c  [        SU
R                   S	35      e[        U [        S
U
R                  R                    3S9["        [$        R&                  /[$        R(                  [$        R*                  [$        R,                  /S [.        S9I S h  vN n[0        R2                  " [5        UR                  R6                  5      I S h  vN 5      $  GNp N ND N7f)NFr   z"/proxy/pixverse/video/img/generater   r    )r*   r]   re   r   rh   rp   rL   ri   r   r   r&   r   r   c                 .    U R                   R                  $ r   r   r   s    r,   r   2PixverseImageToVideoNode.execute.<locals>.<lambda>-  r   rH   r   )r   r-   r   r   r   r   r   r   r   r   r
   r   r'   r(   r)   r   r   r   r   r   r   r   r   AVERAGE_DURATION_I2Vr   rK   r   r   )r   r   r]   re   rg   rh   ri   rp   r7   r*   r   r   s               r,   rM    PixverseImageToVideoNode.execute   so     	7/;; o///,33K/55!1!7!77,33K$A&Q0*)'3B-		
 
  $89L9L8MQOPP%<\=N=N=W=W<XYZ; . 9 9:22%%&&
 53
 
 }}#?@R@R@V@V#WWXXU <
&
 XsG   FFBF+F,BFF6FF	FFFFrO   r   rP   rQ   rR   rS   rU   r   r=   rF   torchTensorrV   r   rK   rM   rW   rO   rH   r,   r   r      s    8
bii 8
 8
t   $!%6Y||6Y 6Y 	6Y
 6Y 6Y 6Y 6Y 
6Y 6YrH   r   c                       \ rS rSr\S\R                  4S j5       r\ SS\R                  S\R                  S\
S\
S	\S
\
S\
S\R                  4S jj5       rSrg)PixverseTransitionVideoNodei3  r1   c                 .   [         R                  " SSSS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  SSS	S
S9[         R
                  R                  S[        [        R                  S9[         R
                  R                  S[        S9[         R
                  R                  S[        S9[         R                  R                  SSSSSSS9[         R                  R                  SS	SSSS9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                   /S["        S9	$ )Nr   zPixVerse Transition Videor3   r\   first_frame
last_framer]   Tr^   r_   r`   re   rf   rg   r5   rh   ri   r   rj   rk   rl   rp   rq   rr   rv   )r   r=   r   r?   r{   r>   r   r|   r   r   r}   r~   rD   r   r   r   r   r   rE   s    r,   rF   )PixverseTransitionVideoNode.define_schema4  s]   yy14-K}-|,		"=	    ++44  
 &,   !.   "+/8   		%"]!   =%L XX__&'		..		++		##
 )e3
 3	
rH   Nr   r   r]   re   rg   rh   rp   c	                 X  #    [        USS9  [        X5      I S h  vN n	[        X5      I S h  vN n
U[        R                  :X  a!  [        R
                  n[        R                  nO$U[        R                  :w  a  [        R
                  n[        U [        SSS9[        [        U	U
UUUUU(       a  UOS US9S9I S h  vN nUR                  c  [        SUR                   S	35      e[        U [        S
UR                  R                    3S9["        [$        R&                  /[$        R(                  [$        R*                  [$        R,                  /S [.        S9I S h  vN n[0        R2                  " [5        UR                  R6                  5      I S h  vN 5      $  GN GNs N NG N7f)NFr   z)/proxy/pixverse/video/transition/generater   r    )first_frame_imglast_frame_imgr]   re   r   rh   rp   ri   r   r   r&   r   r   c                 .    U R                   R                  $ r   r   r   s    r,   r   5PixverseTransitionVideoNode.execute.<locals>.<lambda>  r   rH   r   )r   r-   r   r   r   r   r   r   r   r   r
   r   r'   r(   r)   r   r   r   r   r   r   r   r   r   r   rK   r   r   )r   r   r   r]   re   rg   rh   ri   rp   first_frame_idlast_frame_idr   r   s                r,   rM   #PixverseTransitionVideoNode.executek  s     	77II6sGG o///,33K/55!1!7!77,33K$HQWX0/ .,)'3B		
 
  $89L9L8MQOPP%<\=N=N=W=W<XYZ; . 9 9:22%%&&
 53
 
 }}#?@R@R@V@V#WWXXW JG
&
 XsW   F*FF*F!BF*>F$?BF*F&6F*F(	F*!F*$F*&F*(F*rO   r   r   rO   rH   r,   r   r   3  s    4
bii 4
 4
l   $7Y\\7Y LL7Y 	7Y
 7Y 7Y 7Y 7Y 
7Y 7YrH   r   )rg   re   rh   )widgetsa  
    (
      $prices := {
        "5": {
          "1080p": {"normal": 1.2, "fast": 1.2},
          "720p": {"normal": 0.6, "fast": 1.2},
          "540p": {"normal": 0.45, "fast": 0.9},
          "360p": {"normal": 0.45, "fast": 0.9}
        },
        "8": {
          "1080p": {"normal": 1.2, "fast": 1.2},
          "720p": {"normal": 1.2, "fast": 1.2},
          "540p": {"normal": 0.9, "fast": 1.2},
          "360p": {"normal": 0.9, "fast": 1.2}
        }
      };
      $durPrices := $lookup($prices, $string(widgets.duration_seconds));
      $qualityPrices := $lookup($durPrices, widgets.quality);
      $price := $lookup($qualityPrices, widgets.motion_mode);
      {"type":"usd","usd": $price ? $price : 0.9}
    )
    )
depends_onexprc                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)PixVerseExtensioni  r1   c                 6   #    [         [        [        [        /$ 7fr   )rY   r   r   r/   )selfs    r,   get_node_listPixVerseExtension.get_node_list  s      $$' 	
 	
s   rO   N)rP   rQ   rR   rS   r   r@   typer   	ComfyNoder   rW   rO   rH   r,   r   r     s)    
T$r||*<%= 
 
rH   r   r1   c                     #    [        5       $ 7fr   )r   rO   rH   r,   comfy_entrypointr     s     s   )+r   typing_extensionsr   comfy_api.latestr   r   comfy_api_nodes.apis.pixverser   r   r   r	   r
   r   r   r   r   r   r   r   r   comfy_api_nodes.utilr   r   r   r   r   r   r   r   AVERAGE_DURATION_T2Tr   r   r   r-   r/   rY   r   r   
PriceBadgePriceBadgeDependsr   r   r   rO   rH   r,   <module>r      s     & /        
'R\\(: 
'5<< 
'*2<< *2sYbll sYlsYr|| sYlpY",, pYf MM##,Z[
 6
 
 1 rH   