
    \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            
      T	   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              |	|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#          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d-nd.||d|d/| t          j        t"          j                                                  d0}t(                              t-          j        |d	d12          d3z              t1          t-          j        |d         | t          t(                    d4d	5                     |d         rd"ndS )6Nz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: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_rater2   r4   s     r   r7   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h264r1   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-   rF   report)rI   )r   MANIFESTPLANRuntimeErrorr3   appendPROJECTitemsr   relative_toupdateexistsr   len	Exceptionr   nowr   utc	isoformatREPORT
write_textr   dumpsprint)rF   manifestplancanonspecsrE   namer   datasourcer(   r/   vaexcrL   s                   r   mainri   
   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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   8DM? ?
N8	%N33N8__main__)r   r   sysr   r   pathlibr   __file__resolveparentsrQ   rM   rN   r[   r   r   ri   __name__exit r   r   <module>rs      s               & & & & & & & &      X  (+W=[5[Hah  jG  bG\`  OV  Wy  Oy  HN   F  F  FW W W0 Z(((((r   