
    j                    V   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	  ed           G d d	                      Z
 ed           G d
 d                      Z ed           G d d                      Z ed           G d d                      Zd!dZd"dZd#dZd$dZd S )%z<Side-effect-free render manifest generation from shot plans.    )annotations)	dataclass)ValidationResult)ShotPlanvalidate_shot_planT)frozenc                  d    e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZd	ed<   dZ	ded<   dS )RenderSettings8  intwidth  height   fpsTboolno_generated_text_inside_assetscaptions_renderer_ownedr   static_card_limitN)
__name__
__module____qualname__r   __annotations__r   r   r   r   r        W/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/rendering/manifest.pyr
   r
      sw         EFCMMMM,0#0000$(((((r   r
   c                  (    e Zd ZU ded<   dZded<   dS )RenderLayerstrtextTr   renderer_ownedN)r   r   r   r   r!   r   r   r   r   r      s,         IIINr   r   c                  `    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d	ed
<   d	ed<   dS )RenderTimelineItemr   scene_purposer   start_secondsend_seconds
asset_modemotion_instructionplaceholder_asset_pathr   caption_layerlabel_layerNr   r   r   r   r   r   r   r#   r#      so         OOOr   r#   c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )	RenderManifestr   	script_idtitler
   settingsztuple[RenderTimelineItem, ...]timelineNr,   r   r   r   r.   r.   '   s<         NNNJJJ,,,,,,r   r.   valuer   returnr   c                0    | pd                                  S )N )strip)r3   s    r   	_is_blankr8   /   s    ""$$$$r   r/   indexr   purposec                    d|  d|dd| dS )Nzplaceholders//02d-z.pngr   )r/   r9   r:   s      r   _placeholder_pathr?   3   s&    @9@@u@@@7@@@@r   planr   c                .    t                     }|j        s't          d                    |j                            t           fdt           j        d          D                       }t           j	         j
        t                      |          S )zCTurn a validated shot plan into a machine-readable render manifest.z; c              3  (  K   | ]\  }}t          |j        |j        |j        |j        |j        t          j        ||j                  t          |j	        d           t          |j        
                    dd          d                     V  dS )T)r    r!   _ )r$   r%   r&   r'   r(   r)   r*   r+   N)r#   r:   r%   r&   r'   visual_actionr?   r/   r   caption_beatreplace).0r9   scener@   s      r   	<genexpr>z(build_render_manifest.<locals>.<genexpr>>   s         E5 	--)'$2#4T^UEM#Z#Z%5+=dSSS#)>)>sC)H)HY]^^^		
 		
 		
     r      start)r/   r0   r1   r2   )r   is_valid
ValueErrorjoinerrorstuple	enumeratescenesr.   r/   r0   r
   )r@   
validationr2   s   `  r   build_render_manifestrV   7   s     $D))J 7:#455666     &dk;;;    H .j!!	   r   manifestr   c           	        g }t          | j                  r|                    d           t          | j                  r|                    d           | j        }|j        |j        fdk    r|                    d           |j        dk    r|                    d           |j        s|                    d           |j	        s|                    d           |j
        d	k    r|                    d
           | j        s|                    d           d }t          | j        d          D ]\  }}t          |j                  r|                    d| d           |j        |j        k    r|                    d| d           |$|j        |k     r|                    d| d           |j        }|j        |j        |j        |j        j        |j        j        d                                D ]0\  }}t          |          r|                    d| d| d           1|j        dk    r|                    d           d|j                                        v r|                    d           |j        j        s|                    d| d           |j        j        s|                    d| d           t3          | t5          |                    S )Nzscript_id is requiredztitle is required)r   r   z&render size must be vertical 1080x1920r   zfps must be 30z+generated text inside assets is not allowedzcaptions must be renderer-ownedr   zstatic_card_limit must be 0z&at least one timeline item is requiredrK   rL   ztimeline item z scene_purpose is requiredz/ end_seconds must be greater than start_secondsz% start_seconds overlaps previous item)r'   r(   r)   zcaption_layer textzlabel_layer textrD   z is requiredstatic_slideshowz*static slideshow asset mode is not allowedzbaked-inz-baked-in text in render assets is not allowedz% caption layer must be renderer-ownedz# label layer must be renderer-owned)rN   rQ   )r8   r/   appendr0   r1   r   r   r   r   r   r   r2   rS   r$   r&   r%   r'   r(   r)   r*   r    r+   itemscasefoldr!   r   rR   )rW   rQ   r1   previous_endr9   item
field_namer3   s           r   validate_render_manifestr`   S   s-   F#$$ /-...   +)*** H(L88>???|r&'''3 ECDDD+ 97888!Q&&3444 @>???#L !2!<<< W WtT'(( 	NMML5LLLMMMt111MMa5aaabbb#(:\(I(IMMW5WWWXXX' /"&"9&*&A"&"4"9 $ 0 5"
 "
 %''	Q 	QJ  QOuOOzOOOPPP?000MMFGGG099;;;;MMIJJJ!0 	YMMW5WWWXXX. 	WMMU5UUUVVVZfFFFFr   N)r3   r   r4   r   )r/   r   r9   r   r:   r   r4   r   )r@   r   r4   r.   )rW   r.   r4   r   )__doc__
__future__r   dataclassesr   autoshorts.ideas.candidater   autoshorts.rendering.shot_planr   r   r
   r   r#   r.   r8   r?   rV   r`   r   r   r   <module>rf      s   B B " " " " " " ! ! ! ! ! ! 7 7 7 7 7 7 G G G G G G G G $        $               
 $        $- - - - - - - -% % % %A A A A   83G 3G 3G 3G 3G 3Gr   