
    	j9                    r    d Z ddlmZ ddlZddlmZ ddlmZ dZd dZ	d!dZ
d"dZd#dZd$dZd%dZd&dZdS )'z8Build executable Wan2.2 I2V clip jobs from prompt plans.    )annotationsN)Path)Anyzautoshorts-i2vprompt_plandict[str, Any]returnstrc                    | d         d         S )Nvideoid )r   s    R/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/i2v_clip_jobs.py_video_slugr      s    w%%    keyframe_rootr   
video_slugscene_idc                    | |z  | dz  S )N.pngr   )r   r   r   s      r   _scene_keyframe_pathr      s    :%8(9(9(999r   output_rootseedintc                     | |z  |z  d| dz  S )Nseed_z.mp4r   )r   r   r   r   s       r   _scene_output_pathr      s#    #h.1C1C1C1CCCr   seeds	list[int]list[dict[str, Any]]c                n   t          |           }g }| d         D ]}|D ]}|d         }t          |||          }	t          ||||          }
|                    d| d| |||d         ||	                                rdndt          |	          t          |
          | d| d	|d
g ddd           |S )z2Create seeded clip jobs for each Wan2.2 I2V scene.scenesr   zi2v_clip_job.v1_seed_purposereadyneeds_keyframe_r   T)zsubject clear in first 0.5szmotion supports retention beatzno baked text/logos/watermarksz"no distracting deformation/flickerz clean space remains for captions)human_review_requiredcriteria)schema_versionjob_idvideo_idr   r#   r   statuskeyframe_pathoutput_pathremote_image_nameprompt_specreview)r   r   r   appendexistsr	   )r   r   r   r   r   jobsscener   r   r-   r.   s              r   build_i2v_clip_jobsr6      s     [))J!#DX&   	 	DZ(H0
HUUM,[*hPTUUKKK&7!)7777 * ($Y/ )6)=)=)?)?UggEU%(%7%7#&{#3#3,6)G)G)G)G)G#(15% % %	 	    		: Kr   jobc                <    d| d          d| d          d| d          S )Nautoshorts_r+   r&   r   r"   r   r   )r7   s    r   _filename_prefixr:   C   s,    OZOO3z?OO#f+OOOr   uploaded_image_namec                   | d         }|d         }t          |d         d                   }t          |d         d                   }d|d         dd	d
d|d         dddd
dddg|d         dd
dddg|d         dd
dd|d         id
dd|id
dddgd||ddd
dd dg||t          |d!                   d"d#dgd$d
d%d&dgt          | d'                   t          |d(                   t          |d)                   d*d+d,dgd-dgd.dgd/d0
d
d1d2dgd dgd3d
d4d5dgt          |d6                   d7d
d8d9dgt          |           d:d;d<d
d=S )>zFBuild an API-format native ComfyUI Wan2.2 I2V workflow for a clip job.r0   comfyui
resolutionwidthheight
UNETLoadermodeldefault)	unet_nameweight_dtype)
class_typeinputs
CLIPLoadertext_encoderwan)	clip_nametypedeviceCLIPTextEncode2r   i2v_motion_prompt)cliptextnegative_prompt	VAELoadervae_namevae	LoadImageimage
ImageScale6lanczosdisabled)rX   upscale_methodr?   r@   cropWan22ImageToVideoLatent5frames   7)rV   r?   r@   length
batch_sizestart_imageKSampler1r   stepscfguni_pcsimple348g      ?)
rB   r   ri   rj   sampler_name	schedulerpositivenegativelatent_imagedenoise	VAEDecode9)samplesrV   CreateVideo10fps)imagesr{   	SaveVideo11mp4h264)r   filename_prefixformatcodec)rh   rO   rm   rn   r`   rZ   rc   ro   rw   rz   r~   12)r   floatr:   )r7   r;   speccomfyr?   r@   s         r   build_native_wan22_i2v_workflowr   G   sO   }DOEl#G,--E|$X.//F '$)'NINN
 

 '$).$95T]^^
 

 + #Qx6I1JKK
 

 + #Qx6G1HII
 
 (Je3MNN'G=P3QRR&q"+ " 	
 	
 4Qx eHo.. #Qx 

 

 %qCK((U7^,,U5\** (% !H !H!$a 
 
 )aRUWXQY4Z4Z[[*$SXY^_dYeSfSf6g6ghh%#3C#8#8	 
 
sB B Br   output_filegenerated_clip_rootc                   |j                             dd           d| d         | d         t          |          t          |          t          | |||          d}|                    t          j        |dd	          d
z   d           |S )zWrite a clip-job package JSON.T)parentsexist_okzi2v_clip_jobs.v1r   strategy)r)   r   r   r   r   r4      F)indentensure_ascii
zutf-8)encoding)parentmkdirr	   r6   
write_textjsondumps)r   r   r   r   r   packages         r   write_i2v_clip_jobsr      s     TD999,W%
+]++"#677#K@SUZ[[ G 4:gaeLLLtS^efff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   r   r   r   r   r   r   r   )r7   r   r   r	   )r7   r   r;   r	   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )__doc__
__future__r   r   pathlibr   typingr   NATIVE_WAN22_CLIENT_IDr   r   r   r6   r:   r   r   r   r   r   <module>r      s    > > " " " " " "              * & & & &: : : :D D D D' ' ' 'TP P P PH H H HV     r   