
    +p\j                         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d Zd	 Zd
 Zedk    r ej         e                       dS dS )    N)datetimetimezone)Path   zscript/project-manifest.jsonzscript/production-plan.jsonz log/production-verification.jsonc                 ^    t          j        |                                           S #  Y d S xY w)N)jsonloads	read_textpaths    script/validate-production.pyreadr      s)    Jt~~''(((ttts   %' ,c                     t          j        t          j        dddddddddt	          |           g
d	d	d	
          j                  S )Nffprobez-verrorz-show_entrieszformat=duration,sizez9stream=index,codec_name,width,height,sample_rate,channelsz-ofr   T)capture_outputtextcheck)r   r	   
subprocessrunstrstdoutr   s    r   prober   	   s    tz*.)DYop  A|  }B  CI  JM  NR  JS  JS  2T  dh  nr  y}  #~  #~  #~  #E  F  F  F    c            
      	   g } t          t                    }t          t                    }|r|st          d          |                    d          }|r|                    d          dk    r|                     d           |                    d          |k    r|                     d           |                    d          d	ur|                     d
           t          dz  t          dz  t          dz  t          dz  t          dz  t          dz  t          dz  d}i }|                                D ]P\  }}t          |          }t          |	                    t                              |d ud||<   |s|                     d|z              _|                    d          p|                    d          }	||         
                    |                    d          du |	d           |                    d          dur|                     d|z              |dv rC|                    di                               d          dur|                     d|z              |	|k    r|                     d|z              Rt          dz  }
d }|
                                s|                     d            nD	 t          |
          }|                    d!g           }d" |D             }d# |D             }t          |          dk    st          |          dk    r|                     d$           n|d%                             d&          d'k    sY|d%                             d(          |d%                             d)          fd*k    s|d%                             d&          d+k    r|                     d,           n<# t          $ r/}|                     d-t          |          z              Y d }~nd }~ww xY wt          d.z                                  s|                     d/           d|  | sd0nd1||d|d2| t          j        t"          j                                                  d3}t(                              t-          j        |d	d45          d6z              t1          t-          j        |d         | t          t(                    d7d	8                     |d         rd%ndS )9NzManifest/plan missing
canon_hashcanon_versionr   canon_not_promotedcanon_sha256production_plan_canon_mismatchreuse_previous_projectsFreuse_previous_not_forbiddenzstory/promotion-report.jsonzlog/tts-verification.jsonzimage/layout-manifest.jsonzlog/intro-render.jsonzlog/footage-job.jsonzlog/final-render.jsonzlog/metadata-verification.json)storyttsimagesintrofootagefinalmetadata)r   presentzmissing_or_invalid_receipt:source_canon_sha256spoken_sha256verifiedT)r-   r+   zreceipt_not_verified:)r%   r'   r(   	visual_qazvisual_qa_not_verified:zreceipt_canon_mismatch:zoutput/final.mp4final_missingstreamsc                 <    g | ]}|                     d           |S )widthget.0xs     r   
<listcomp>zmain.<locals>.<listcomp>   s(    6\6\6\QQUUSZ^^6\q6\6\6\r   c                 <    g | ]}|                     d           |S )sample_rater3   r5   s     r   r8   zmain.<locals>.<listcomp>   sW      `L  `L  `Lfgvwv{v{  }J  wK  wK  `L`a  `L  `L  `Lr   final_stream_countr   
codec_nameh264r2   height)i  i8  aacfinal_codec_or_dimensionszfinal_probe:zoutput/info.txtmetadata_file_missingpassedfailed)r   r   )versionr-   statusr+   receiptsr(   issues
checked_at   )ensure_asciiindent
)r-   rG   report)rJ   )r   MANIFESTPLANRuntimeErrorr4   appendPROJECTitemsr   relative_toupdateexistsr   len	Exceptionr   nowr   utc	isoformatREPORT
write_textr   dumpsprint)rG   manifestplancanonspecsrF   namer   datasourcer(   r0   vaexcrM   s                   r   mainrj   
   s   
DNN8T

4HH<0G#H#HH||L!!Uo..11&--@T2U2U2UHH^e##FMM2R$S$S$SHH&''u44V]]Ca5b5b5b55GD_<_ip  rN  jN  W^  _v  Wv  AH  I_  A_  ho  pG  hG  SZ  [{  S{  |  |  FH  }E++-- A AYT$Dzz$T-=-=g-F-F)G)GRV^bRb!c!c(4.	Hfmm9$>???	'	(	(	EDHH_,E,E&htnF[F[hlhphpq{h|h|  AE  iE  \b  ]c  ]c  Gd  Gd  Gd	XXj%%fmm4KD4P&Q&Q&Q	)))dhh{2.F.F.J.J:.V.V^b.b.bcicpcp  rK  LP  rP  dQ  dQ  dQU]]6==!:4!?@@@!!t$ Av}}_5555Ae4TXXi33W6\6\'6\6\6\A  `L  `Lkr  `L  `L  `L]^	!ffaii3q66199V]]+?@@@@	!&&1Q488G+<+<QqTXXh=O=O*PR]*]*]abcdaeaiaijvawawy~a~a~  @F  @M  @M  Ni  @j  @j  @j	@@@&--s3xx(?@@@@@@@@@	"	"**,,SV]];R-S-S-SF
F4XHHPXot  AI  Zl  uy  Rz  Rz  DJ  X`  Xd  em  eq  Xr  Xr  X|  X|  X~  X~  	  	  @F  @Q  @Q  RV  R\  ]c  qv  ~  R@  R@  R@  AE  RE  @F  @F  @F  GL  MQ  MW  dj  ku  dv  @F  PS  TZ  P[  P[  X\  X\  jo  Mp  Mp  Mp  Gq  Gq  Gq  ~D  EO  ~P  yW  yz  yz  VW  rWs   ?DO 
O?%O::O?__main__)r   r   sysr   r   pathlibr   __file__resolveparentsrR   rN   rO   r\   r   r   rj   __name__exit r   r   <module>rt      s               & & & & & & & &      X  (+W=[5[Hah  jG  bG\`  OV  Wy  Oy  HN   F  F  FW W W2 Z(((((r   