
    +jg                     :   S SK Jr  S SKJrJr  S SK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  SSS.r " S	 S
\5      r\R(                  " \R*                  " / SQS9SS9r " S S\R.                  5      r " S S\R.                  5      r " S S\	5      rS\4S jrg)    )BytesIO)	BaseModelField)override)IOComfyExtensionInput	InputImpl)ApiEndpointget_number_of_imagessync_op_rawupload_images_to_comfyapivalidate_stringz	ltx-2-proz
ltx-2-fast)zLTX-2 (Pro)LTX-2 (Fast)c                       \ rS rSr% \" S5      r\\S'   \" S5      r\\S'   \" S5      r	\
\S'   \" S5      r\\S'   \" S5      r\
S-  \S	'   \" S
5      r\S-  \S'   \" S5      r\S-  \S'   Srg)ExecuteTaskRequest   .promptmodelduration
resolution   NfpsTgenerate_audio	image_uri )__name__
__module____qualname____firstlineno__r   r   str__annotations__r   r   intr   r   r   boolr   __static_attributes__r       :/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_ltxv.pyr   r      sp    *FCsE3#JHcCjJ BiCt"'+ND4K-!$KIsTz'r&   r   )r   r   r   )widgetsaw  
    (
      $prices := {
        "ltx-2 (pro)": {"1920x1080":0.06,"2560x1440":0.12,"3840x2160":0.24},
        "ltx-2 (fast)": {"1920x1080":0.04,"2560x1440":0.08,"3840x2160":0.16}
      };
      $modelPrices := $lookup($prices, $lowercase(widgets.model));
      $pps := $lookup($modelPrices, widgets.resolution);
      {"type":"usd","usd": $pps * widgets.duration}
    )
    )
depends_onexprc                   p    \ rS rSr\S 5       r\  SS\S\S\S\S\S\S	\	R                  4S
 jj5       rSrg)TextToVideoNode/   c                    [         R                  " SSSS[         R                  R                  S[	        [
        R                  5       5      S9[         R                  R                  SSS	S
9[         R                  R                  S/ SQSS9[         R                  R                  S/ SQS9[         R                  R                  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	$ )NLtxvApiTextToVideozLTXV Text To Videopartner/video/LTXVzFProfessional-quality videos with customizable duration and resolution.r   optionsr   T 	multilinedefaultr         
                  r9   r2   r6   r   	1920x1080	2560x1440	3840x2160r   r   2   r   FRWhen true, the generated video will include AI-generated audio matching the scene.r6   optionaltooltipadvanced	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   SchemaCombor	   list
MODELS_MAPkeysStringBooleanVideoOutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_idPRICE_BADGEclss    r'   define_schemaTextToVideoNode.define_schema0   s'   yy(-)`wZ__5F0GH		"   
 z3Q[\]    ur2hC

  $!!p! ! #4 ! 		..		++		##
 #O(
 (	
r&   r   r   r   r   r   r   returnc                 4  #    [        USSS9  US:  a  US:w  d  US:w  d  US:w  a  [        S5      e[        U [        S	S
5      [	        U[
        U   UUUUS9SSS9I S h  vN n[        R                  " [        R                  " [        U5      5      5      $  N77f)N   '  
min_length
max_lengthr:   r   rB   r   \Durations over 10s are only available for the Fast model at 1920x1080 resolution and 25 FPS.z/proxy/ltx/v1/text-to-videoPOST)r   r   r   r   r   r   Tdata	as_binarymax_retries)r   
ValueErrorr   r   r   rX   r   
NodeOutputr
   VideoFromFiler   )rd   r   r   r   r   r   r   responses           r'   executeTextToVideoNode.execute\   s      	1?b=e~5{9RVY]_V_n  %5v># '!%- 
 
 }}Y44WX5FGHH
s   ABB8Br   Nr   F)r   r   r   r    classmethodre   r!   r#   r$   r   ru   rx   r%   r   r&   r'   r,   r,   /   s    )
 )
V  $II I 	I
 I I I 
I Ir&   r,   c                       \ rS rSr\S 5       r\  SS\R                  S\S\S\	S\S\	S	\
S
\R                  4S jj5       rSrg)ImageToVideoNode|   c                    [         R                  " SSSS[         R                  R                  SSS9[         R                  R                  S[        [        R                  5       5      S	9[         R                  R                  S
SSS9[         R                  R                  S/ SQSS9[         R                  R                  S/ SQS	9[         R                  R                  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	$ )NLtxvApiImageToVideozLTXV Image To Videor0   z[Professional-quality videos with customizable duration and resolution based on start image.imagez%First frame to be used for the video.)rI   r   r1   r   Tr3   r4   r   r7   r9   r@   r   rA   r   r   rE   r   FrF   rG   rK   )r   rU   Imager	   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   s    r'   re   ImageToVideoNode.define_schema}   s<   yy).)uw0WXwZ__5F0GH		"   
 z3Q[\]    ur2hC

  $!!p! ! %6 ! 		..		++		##
 #Q)
 )	
r&   r   r   r   r   r   r   r   rg   c                   #    [        USSS9  US:  a  US:w  d  US:w  d  US:w  a  [        S5      e[        U5      S:w  a  [        S	5      e[        U [	        S
S5      [        [        XSSS9I S h  vN S   U[        U   UUUUS9SSS9I S h  vN n[        R                  " [        R                  " [        U5      5      5      $  NU N97f)Nri   rj   rk   r:   r   rB   r   rn   z,Currently only one input image is supported.z/proxy/ltx/v1/image-to-videoro   z	image/png)
max_images	mime_typer   )r   r   r   r   r   r   r   Trp   )r   rt   r   r   r   r   r   rX   r   ru   r
   rv   r   )	rd   r   r   r   r   r   r   r   rw   s	            r'   rx   ImageToVideoNode.execute   s      	1?b=e~5{9RVY]_V_n   &!+KLL$6?#!:3RS_j!kkmno '!%- 
 
 }}Y44WX5FGHH l	
s$   A-C	/C0C	C8C	C	r   Nrz   )r   r   r   r    r{   re   r	   r   r!   r#   r$   r   ru   rx   r%   r   r&   r'   r}   r}   |   s    *
 *
X  $ I{{ I  I 	 I
  I  I  I  I 
 I  Ir&   r}   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)LtxvApiExtension   rg   c                 "   #    [         [        /$ 7fN)r,   r}   )selfs    r'   get_node_listLtxvApiExtension.get_node_list   s      
 	
s   r   N)r   r   r   r    r   rW   typer   	ComfyNoder   r%   r   r&   r'   r   r      s)    
T$r||*<%= 
 
r&   r   rg   c                     #    [        5       $ 7fr   )r   r   r&   r'   comfy_entrypointr      s     s   N)ior   pydanticr   r   typing_extensionsr   comfy_api.latestr   r   r	   r
   comfy_api_nodes.utilr   r   r   r   r   rX   r   
PriceBadgePriceBadgeDependsrb   r   r,   r}   r   r   r   r&   r'   <module>r      s     % & A A   
( ( mm##,OP

 JIbll JIZOIr|| OId
~ 
 0 r&   