
    E^jg                         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 ]\  }}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              |dk    rk|                    di                               d           dus+|                    di                               d!          dur|                     d"           |	|k    r|                     d#|z              t          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+          d0k    r|                     d1           n<# t          $ r/}|                     d2t          |          z              Y d }~nd }~ww xY wt          d3z                                  s|                     d4           d|  | sd5nd6||d$|d7| t          j        t"          j                                                  d8}t(                              t-          j        |d	d9:          d;z              t1          t-          j        |d         | t          t(                    d<d	=                     |d         rd*ndS )>Nz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(   	visual_qazvisual_qa_not_verified:r'   server_verificationmirror_appliedsource_audio_discardedfootage_technical_verificationz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_rater7   r9   s     r   r<   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h264r6   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-   rK   report)rN   )r   MANIFESTPLANRuntimeErrorr8   appendPROJECTitemsr   relative_toupdateexistsr   len	Exceptionr   nowr   utc	isoformatREPORT
write_textr   dumpsprint)rK   manifestplancanonspecsrJ   namer   datasourcer(   r4   vaexcrQ   s                   r   mainrn   
   sS   
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[$<$<$@$@$L$LTX$X$XY_YfYf  hA  BF  hF  ZG  ZG  ZG	YDHH%:2>>BBCSTT\```dhdldl  nC  DF  eG  eG  eK  eK  Ld  ee  ee  mq  eq  eq  sy  s@  s@  Aa  sb  sb  sb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   0DP7 7
Q0%Q++Q0__main__)r   r   sysr   r   pathlibr   __file__resolveparentsrV   rR   rS   r`   r   r   rn   __name__exit r   r   <module>rx      s               & & & & & & & &      X  (+W=[5[Hah  jG  bG\`  OV  Wy  Oy  HN   F  F  FW W W4 Z(((((r   