
    `j                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ  ee	          
                                j        d         Zedz  Zedz  Zedz  Zedz  Zed	z  Zed
z  Zd Zd Zd Zd Zedk    r\	  ej         e                       dS # e$ r9Z ed ee          z   ej                    ej        d           Y dZ[dS dZ[ww xY wdS )    N)datetimetimezone)Path   zimage/left-panel-master.pngzimage/right-panel-master.pngzlog/image-visual-qa.jsonzstory/promotion-report.jsonzimage/layout-1920x1080.pngzimage/layout-manifest.jsonc                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)handles   script/build-layout.py<lambda>zsha.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr   s      @r   shar      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                     t          j        ddddddddd	t          |           g
d
d
d
          }t          j        |j                  d         d         S )Nffprobez-verrorz-select_streamszv:0z-show_entriesz&stream=codec_name,width,height,pix_fmtz-ofjsonT)capture_outputtextcheckstreamsr   )
subprocessrunstrr   loadsstdout)r   results     r   prober'      sz    ^	D'#4e_Nvx}  @F  HK  LP  HQ  HQ  	R$d  F :fm$$Y/22r   c                     |                      | j        dz             }|                    t          j        |dd          dz   d           t          j        ||            d S )Nz.partF   )ensure_asciiindent
utf-8encoding)	with_namename
write_textr   dumpsosreplace)r   valuetemps      r   atomic_jsonr8   #   s_    >>$)g-..DOODJu5CCCdJU\O]]]JtTr   c                  L
   t           t          t          t          fD ](} |                                 st          d|            )t          j        t                              d                    }t          j        t                              d                    }|	                    d          dus,|	                    d          |	                    d          k    rt          d          d	 |	                    d
g           D             }dt           fdt          ffD ]n\  }} |	                    |i           	                    d          dus,||         	                    d          t          |           k    rt          d|           ot          j                            dd           t                              t          j        dz             }|                                r|                                 d}t%          j        ddddddt)          t                     dt)          t                    d|ddddddt)          |          gd           t+          |          }|	                    d          d k    s6|	                    d!          d"k    s|                                j        d#k     rt          d$|           t1          j        |t                     t+          t                    }i d%d&d'd(ddd|d         d)d*d+d,d-d.g d/d0d1d2d3dd4t)          t                               t6                              t          t                     t+          t                     d5t)          t                              t6                              t          t                    t+          t                    d5d6d7t)          t                              t6                              t          t                    t                                          j        |d8d9d d"d:d;d<d<d=d"d>d=d<d?d"dd@dAd<d=d"d>dBdCt)          t                              t6                              dDt          t                    dEdFdGdHdIt9          j        t<          j                                                   }tC          tD          |           tG          t          j$        d|d'         d*t)          t                    |d7         d         |dJdFK                     d<S )LNz#missing local-layout prerequisite: r-   r.   verifiedTsource_canon_sha256canon_sha256z%image Visual QA/canon binding invalidc                      i | ]}|d          |S )asset ).0rows     r   
<dictcomp>zmain.<locals>.<dictcomp>1   s    AAASs7|SAAAr   assets
left_panelright_panelr   zimage QA hash mismatch: )parentsexist_okz	.part.pngaY  [0:v]scale=656:1080:force_original_aspect_ratio=decrease:flags=lanczos,pad=656:1080:(ow-iw)/2:(oh-ih)/2:color=0x101820[left];[1:v]scale=656:1080:force_original_aspect_ratio=decrease:flags=lanczos,pad=656:1080:(ow-iw)/2:(oh-ih)/2:color=0x101820[right];color=c=0x101820:s=608x1080:r=1[center];[left][center][right]hstack=inputs=3,format=rgb24[out]ffmpegz-hide_bannerz	-loglevelr   z-yz-iz-filter_complexz-mapz[out]z	-frames:v1z-threads)r   widthi  heighti8  i zlocal layout probe failed: versionr)   statusbuilt_pending_visual_qabuilder_locationagent_localbuilder_toolFFmpegzJscale(force_original_aspect_ratio=decrease,flags=lanczos)+pad+color+hstackrgb24)          )r1   filterspixel_formatbackground_rgb	operationzBlocal static-image normalize/resample/crop/canvas composition onlyremote_layout_build_forbiddensource_panels)r   r   r'   )leftrightoutput)r   r   bytesr'   canvas)rJ   rK   regionsr   i  )xyrJ   rK   i`  )rc   rd   rJ   rK   cleani  )r]   centerr^   image_visual_qa_receiptimage_visual_qa_sha256	visual_qaFpending)r:   rM   built_at)r:   rM   rO   r_   r   r'   )r*   )%LEFTRIGHTIMAGE_QA	PROMOTIONis_fileRuntimeErrorr   r$   	read_textgetr   OUTPUTparentmkdirr0   stemexistsunlinkr!   r"   r#   r'   statst_sizer4   r5   relative_toPROJECTr   nowr   utc	isoformatr8   RECEIPTprintr3   )	r   qa	promotionqa_rowsr>   r7   filtergraphstreamreceipts	            r   mainr   )   st   uh	2 M M||~~ 	MKTKKLLL	M	H&&&88	9	9B
9...@@AAI	vvj%%0E)F)F)--XfJgJg)g)gBCCCAABFF8R,@,@AAAG%t,}e.DE C Ct;;ub!!%%j11==ASAST\A]A]adeiajajAjAjA%AABBB Bk Mt444FK+566D{{}} 	A  N	>;tSYYPTVYZ_V`V`	K+sJX[]`ae]f]f	h   
 4[[Fzz'd""fjj&:&:d&B&BdiikkFY\bFbFbAAABBBJtV6]]F1+ 	D 	y8	
 	M 	c#*ll	
 
 	Y 	( 	 !1!1'!:!:;;s4yy[`ae[f[fgg!%"3"3G"<"<==U^cdi^j^jkk
 
$ 	3v11'::;;s6{{]c]h]h]j]j]r  ~D  E  E%& 	DD11'( 	!cTBBa#PTUUa#FF
 
)2 	"3x';';G'D'D#E#E34 	!#h--56 	%9==78 	HL..88::9G< !!!	$*$'(2CYfruv|r}r}  JQ  RZ  J[  \d  Je  pv  w  w  FK  L  L  L  M  M  M1r   __main__zLocal layout blocked: )file)r   r   r4   r!   sysr   r   pathlibr   __file__resolverF   r}   rl   rm   rn   ro   rt   r   r   r'   r8   r   __name__exit	Exceptionexcr   r#   stderrr?   r   r   <module>r      s     				     



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-..00//33		/	/
0
0  3 3 3  C C CL z   &S1
CCCC s   <B C.CC