
    `j                        d dl Z 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
 d dlmZ  e
e                                          j        d         Zedz  edz  edz  d	ed
z  edz  edz  d	d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)atomic_write_json   zlog/footage-submission.jsonzlog/footage-job.jsonzoutput/footage/footage.mp4)
submissionreceiptoutputzlog/final-submission.jsonzlog/final-render.jsonzoutput/final.mp4)footagefinalc                     t           j                            | |          5 }t          j        |          cd d d            S # 1 swxY w Y   d S )N)timeout)urllibrequesturlopenjsonload)urlr   responses      script/poll-render-job.pyget_jsonr      s    			W		5	5 #y""# # # # # # # # # # # # # # # # # #s   AA
Ac                    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   r   <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                  S )Nffprobez-verrorz-show_entrieszformat=duration,sizezMstream=index,codec_name,width,height,sample_rate,channels:stream_tags=encoderz-ofr   T)capture_outputtextcheck)
subprocessrunstrr   loadsstdout)r%   results     r   prober5   !   s    ^YgH^`o  rA  CH  JP  RU  VZ  R[  R[  \  mq  x|  DH  I  I  IF:fm$$$r   c                  
   t          t          j                  dk    rt          j        d         nd} t                              |           }|st          d          t          j        |d                             d                    }|                    d          |                    d          |                    d	          }}}|r|r|st          d
          t          j
                    dz   }d }t          j
                    |k     r|t          j
                    z
  }t          ||z   dz   |z   t          dt          d|                              }|                    d          dv rnjt          j        t          dt          d|t          j
                    z
                                 t          j
                    |k     t          d          |                    d          dk    s+|                    di                               d          dur=t          |  d|                    d           d|                    d                     |d         }	|	                                st          d          t!          |	          }
|
                    dg           }d |D             }d |D             }t          |          dk    ot          |          dk    ow|d                             d          d k    oX|d                             d!          |d                             d"          fd#k    o|d                             d          d$k    }| d%k    r<|o9|d                             d&          du o|d                             d'          du }t#          |d(                   }t#          |
d)         d*                   }t%          ||z
            }|o|d+k    }i d,d-dt'          |          d|rdnd.d/|d/         d0|                    d0          d|d|d	|d1|                    d1          d2|                    d2          d3|d         dt)          |	                    t,                              d4t/          |	          d5|
d(|d6|d7d8d9d:d;d<t1          j        t4          j                                                  i}t;          |d=         |           t=          t          j        | t'          |          |||
d)         d*         |
d)         d>         d?d8@                     |rdndS )ANr    z'usage: poll-render-job.py footage|finalr   zutf-8)encodingbase_url	jobs_pathjob_idz5submission lacks pinned base_url + jobs_path + job_idi  /   status>   failed	cancelled	completed
   r   z,observer timeout; resume the same pinned jobrA   verificationverifiedTz job ended z: r+   r
   zcompleted job has no outputstreamsc                 <    g | ]}|                     d           |S )widthget.0xs     r   
<listcomp>zmain.<locals>.<listcomp>@   s'    2221155>>2Q222r   c                 <    g | ]}|                     d           |S )sample_raterH   rJ   s     r   rM   zmain.<locals>.<listcomp>A   s)    8881155#7#78Q888r   
codec_nameh264rG   height)i  i8  aacr   mirror_appliedsource_audio_discardedexpected_duration_secondsformatdurationg?version   r?   source_canon_sha256run_idrequest_sha256input_sha256server_verificationoutput_sha256r5   duration_delta_seconds	visual_qaFnot_required!contains_user_preapproved_footage)requiredr>   reason
checked_atr	   size)kindrD   r9   r;   rX   bytes)ensure_ascii) lensysargvCONFIGSrI   RuntimeErrorr   r2   	read_texttime	monotonicr   maxminsleepis_filer5   floatabsboolr1   relative_toPROJECTr(   r   nowr   utc	isoformatr   printdumps)ri   configr   r9   r:   r;   deadlinejob	remainingr
   datarE   videoaudiorD   expectedactualdeltar	   s                      r   mainr   &   s^   ch--!++38A;;D[[F FDEEEF<0::G:LLMMJ",.."<"<jnn[>Y>Y[e[i[ijr[s[siH T9 TF TRSSS~$&H
C
.

X
%
%t~///	x)+c1F:C3r9CUCU<V<VWW778 DDD
3r3q(T^-=-="=>>??@@@ .

X
%
% IJJJ
wwxK''377>2+F+F+J+J:+V+V^b+b+bdVVswwx/@/@VVCGGGDTDTVVWWWHF>> :8999==Dhhy"%%G22222E88888E5zzQ  H3u::?  HuQx||L7Q7QU[7[  Hafghaiamamnuavavx}~  yA  yE  yE  FN  yO  yO  aP  T`  a`  H  ej  kl  em  eq  eq  r~  e  e  CH  eHHy  PN 3 7 78H I IT Q  PVYZhViVmVm  oG  WH  WH  LP  WPZ ;<==H4>*-..F!""E)ETMH1 $x..2:8<aKKYacx  {E  F[  {\*..**,6BMyZbdj 	*..)9:: =KJNN[iLjLj 	s>2	 5=c&BTBTU\B]B]>^>^	 apqtu{q|q|	 F  HL	
 	$X
 0H 	%>Mpqq 	hl8<00::<< G fY'111	$*dXH`ftx  zB  uC  DN  uO  Z^  _g  Zh  io  Zp  q  q  @E  F  F  F  G  G  G11ar   __main__zRender observer blocked: )file)r   r   r/   rm   rr   urllib.requestr   r   r   pathlibr   render_poolr   __file__resolveparentsr|   ro   r   r(   r5   r   __name__exit	Exceptionexcr   r1   stderr r   r   <module>r      s         



      ' ' ' ' ' ' ' '       ) ) ) ) ) )
$x..
 
 
"
"
*1
-%(EERY\rRr  F  Ie  e  f  f#&AAgXoNo  |C  FX  |X  Y  Y # # #
  % % %
.  .  . b z   )CCHH43:FFFF s   B! !C&.CC