
    .j                    h    d Z ddlmZ ddlZddlmZ ddlmZ dddd	d
ddZddZ	ddZ
ddZddZdS )a  Keyframe request packages for AI image generation.

The package is intended for ChatGPT Pro or any image generator: create clean
start images first, then feed those into Wan2.2 I2V jobs. The renderer adds all
truth-sensitive captions, numbers, arrows and labels later.
    )annotationsN)Path)Any   =   gRQ@   (renderer_or_ffmpeg_optical_flow_to_24fpsz12fps/61f is a smoother local Wan2.2 generation target on 16GB VRAM; final Shorts should be delivered at 24fps after interpolation/compositing.)generation_fpsgeneration_framesgeneration_duration_secondsfinal_delivery_fpsinterpolationreasonkeyframe_rootr   video_idstrscene_idreturnc                    | |z  | dz  S )Nz.png )r   r   r   s      U/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/keyframe_package.py_target_pathr      s    8#&7&7&777    	list[str]c                 
    g dS )N)z*subject clearly visible in the first framez)full object visible with clean silhouettez1bright balanced exposure, not dark cinematic mushz%no readable text/logos/license platesz<enough negative space in upper and lower thirds for captionsz5photorealistic texture, no cartoon or fantasy stylingz3movement implied by pose/composition where possibler   r   r   r   
_checklistr      s       r   prompt_plandict[str, Any]c                   | d         }g }| d         D ]}|d         }|                     |d         |d         t          t          ||d         |d                             d|d         |d	         t          |d
         d                   t          |d
         d                   ddt	                      |d         d	           d|| d         dt
          |dS )zIBuild a generator-ready keyframe request package from an I2V prompt plan.videoscenescomfyuir   purposeidzEChatGPT Pro image generation or equivalent photorealistic image modelkeyframe_promptnegative_prompt
resolutionwidthheightpng)r(   r)   formati2v_motion_prompt)	r   r#   target_path	generatorgenerator_promptnegative_requirementsrequired_formatacceptance_checklistdownstream_i2v_promptzkeyframe_requests.v1style_profilezEChatGPT Pro keyframe -> Wan2.2 I2V -> deterministic renderer overlays)schema_versionr    r4   workflow
fps_policyrequests)appendr   r   intr   
FPS_POLICY)r   r   r    r8   scenecomfys         r   build_keyframe_requestsr>   )   s    E%'HX& 
 
i !*- +"<uT{ER\L]#^#^__d$)*;$<)./@)A |!4W!=>>!%"5h"?@@#$ $
 )3)./B)C 	
 	
 	
 	
$ 1$_5[   r   output_filec                    |j                             dd           t          | |          }|                    t	          j        |dd          dz   d           |S )	z)Write a keyframe request package as JSON.T)parentsexist_ok   F)indentensure_ascii
zutf-8)encoding)parentmkdirr>   
write_textjsondumps)r   r?   r   packages       r   write_keyframe_packagerN   J   sc    TD999%k=AAG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   )__doc__
__future__r   rK   pathlibr   typingr   r;   r   r   r>   rN   r   r   r   <module>rS      s     # " " " " "              #'? ` 
8 8 8 8	 	 	 	   B     r   