
    Qp_j)                     2   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Zd dlZd dl	m
Z
  e
e                                          j        d         Zedz  Zddddd	d
gdddddddgddZd Zd Zd ZddZd Zd Zd Zd Zd Zedk    r e             dS dS )    N)Path   zscript/project-manifest.jsonzhttp://192.168.1.104:8023z/v1/huyenan-render-final/jobsfinal_receiptfinal_masterintro_receiptfootage_receipt)basecreatereceiptoutputupstreamzhttp://192.168.1.104:8024z!/v1/huyenan-transcode-upload/jobstranscode_receiptfinal_uploadfinal_qa_receipt)final	transcodec                    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/render-final-transcode-endpoint.py<lambda>zsha256.<locals>.<lambda>#   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr   s      @r   r   r       s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                 \   |                      di                                |          }|st          d| d          t          |          }|                                r|n	t          |z  }|                                                    t                                                     |S )Nactive_pathszactive_paths.z missing)getRuntimeErrorr   is_absoluteROOTresolverelative_to)manifestkeyvaluer!   s       r   r*   r*   (   s    LL,,0055E :83888999;;D##%%6444$;DLLNNt||~~...Kr   c                     | j                             dd           |                     | j        dz             }|                    t          j        |dd          dz   d	           t          j        ||            d S )
NT)parentsexist_okz.partF   )ensure_asciiindent
utf-8encoding)	parentmkdirwith_suffixsuffix
write_textjsondumpsosreplace)r!   r.   parts      r   atomic_jsonrC   2   s|    KdT222DK'122DOODJu5CCCdJU\O]]]JtTr   <   c                 T   |d n(t          j        |d                              d          }t          j                            | ||rddini |rdnd          }t          j                            ||	          5 }t          j        |          cd d d            S # 1 swxY w Y   d S )
NFr3   r6   zContent-Typezapplication/jsonPOSTGET)dataheadersmethod)timeout)r>   r?   encodeurllibrequestRequesturlopenload)urlpayloadrL   rI   rO   responses         r   apirV   9   s   ?44
7(O(O(O(V(VW^(_(_Dn$$Stei=qnN`=a=aoq  EI  {T  {A  {A  OT$  U  UG					9	9 #Xy""# # # # # # # # # # # # # # # # # #s   <BB!$B!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,size,format_namezDstream=index,codec_type,codec_name,width,height,sample_rate,channelsz-ofr>   T)capture_outputtextcheck)
subprocessrunstrr>   loadsstdout)r!   results     r   proberc   @   sy    ^	D'?4VXg  jp  rw  y  AD  EI  AJ  AJ  	K$d  F :fm$$$r   c                     t          j        t          j        | ddd                              d                                                    S )NFT),:)r3   	sort_keys
separatorsr6   )r   r   r>   r?   rM   r    )rT   s    r   payload_shari   H   sP    >$*W5D]ghhhoopwxxyy  D  D  F  F  Fr   c           
         | dk    rOt          t          |d                    t          t          |d                    t          |          dddddd	d
	S t          t          |d                    t          |          dddddddd	S )Nr   introfootage     8  
h264_nvencp4   )	intro_video_pathfootage_video_pathoutput_video_pathfpswidthheightvideo_encoderpresetcqr   i / ʚ;`   F)	input_video_pathru   target_output_bytesmax_output_bytesrw   rx   rv   audio_bitrate_kbps	overwrite)r_   r*   )stageprojectr   s      r   payload_forr   L   s     #GGW$=$= > >"%ggy&A&A"B"B!$V)T
 
 	
   @ @AA [[(&b u  r   c                    g }|D ]h}t          | |          }t          j        |                    d                    }|                    d          dk    s0|                    d          dus|                    d          |k    rt          d|           |                    d	          }|r+t          |                                          s
t          |z  nt          |pd
          }|	                                r&t          |          |                    d          k    rt          d|           |                    |t          |          t          |          d           j|S )Nr6   r7   status	completedverifiedTsource_canon_sha256zupstream lineage failed: output_path artifact_sha256zupstream artifact drift: )r-   r!   r   )r*   r>   r`   	read_textr&   r'   r   r(   r)   is_filer   appendr_   )	r   keyscanonrowsr-   r!   r.   artifact_relartifacts	            r   verify_upstreamr   _   sl   D 	M 	Mw$$
4>>7>;;<<99X+--:1F1Fd1R1RV[V_V_`uVvVvzVV@3@@AAAyy//*6}tL?Q?Q?]?]?_?_}4,&&eijvj|z|e}e}!! 	BVH%5%5CT9U9U%U%U@3@@AAACTfTllKKLLLLKr   c                  h   t          j                    } |                     dt                     |                                 }|j        }t          |         }t          j        t          	                    d                    }|d         }t          ||d         |          }t          ||d                   }t          ||d                   }t          |d	         d
z             }	|	                    d          dk    s0|	                    d          dus|	                    d          dk    rt          | d          t          |||          }
t!          |
          }d }|                                rt          j        |	                    d                    }|                    d          dv rb|                    d          |k    rI|                    d          |k    r0|                    d          |
k    rt%          |d                   }nIt          d| d          |                                rt          | d          t          |d	         |d         z   |
          }|                    d          |                    d          }}|r1|r/t%          |          t%          |          k    rt          d          t%          |p|pd          }|st          d          t'          |dd ||||d	         |d         z   d!z   |z   |
||	||t(          j                            t(          j        j                                                  d"           |d	         |d         z   d!z   |z   }	 t          |          }t%          |                    dd#                    }|d$v rnt          j        |	                    d                    }|                    ||t(          j                            t(          j        j                                                  d%           t'          ||           t5          j        d&           |d'k    rt          j        |	                    d                    }|                    ||t(          j                            t(          j        j                                                  d(           t'          ||           t          | d)|           |                    d*          pi }|                    d+          dus1|                                r|                                j        d,k    rt          | d-          t?          |          }|                    d.g           }d/ |D             }d0 |D             }tA          |d1         d2                   }t%          |                    d          p+|                    d3          p|                    d4          pd          }|d'k    |                    d+          du |t%          |          k    tC          |          d5k    o|d,                             d6          d7k    tC          |          d5k    o|d,                             d6          d8k    tC          |          d5k    o9|d,                             d9          |d,                             d:          fd;k    |d,k    d<}d|i}|d=k    rtA          t?          t          |d>                    d1         d2                   }tA          t?          t          |d?                    d1         d2                   }|                    ||||z   d@           tE          ||z
  |z
            dAk    |dB<   dC|
v|dD<   ntA          t?          t          |dE                    d1         d2                   }||dF<   |                    tE          ||z
            dAk    |                                j        dGk     |                    dH          du dI           tG          |$                                          st          | dJ|           t(          j                            t(          j        j                                                  } i dd'd+dd|d|d|d|
d|dK|d3t%          |%                    tL                              dLtO          |          dM|                                j        dN|dO|dP|dQ|dR|dS|dT| dU}!t'          ||!           t          j        t          	                    d                    }"|d=k    rdVndW}#d'|"dX         |#<   d'd|t%          |%                    tL                              |!dL         |!dM         || dY|"|<   | |"dZ<   t'          t          |"           tQ          t          j)        d'd|||                                j        ||!dL         d[d \                     d S )]Nr   )choicesr6   r7   canon_sha256r   r   r   r	   z/healthr   okrp   T
video_rootz/data/video-pipelinez# endpoint health/path policy failed>   queuedrunning	submittedr   request_sha256rO   job_idz	existing z  receipt is not safely resumablez# output exists without live receiptr
   idzconflicting job identifiersr   zcreate response missing job idr   F/)r   r   r   r   r   
status_urlrO   r   healthinput_receiptscreated_responsesubmitted_atunknown>   failed	cancelledr   )r   latest_response
updated_at   r   )r   r   	failed_atz terminal failure: verificationr   r   z$ terminal verification/output failedstreamsc                 D    g | ]}|                     d           dk    |S )
codec_typevideor&   .0rows     r   
<listcomp>zmain.<locals>.<listcomp>   .    IIIc(=(=(H(Hc(H(H(Hr   c                 D    g | ]}|                     d           dk    |S )r   audior   r   s     r   r   zmain.<locals>.<listcomp>   r   r   formatdurationr   ru   r   
codec_nameh264aacrw   rx   )rn   ro   )endpoint_completedendpoint_verifiedoutput_path_exactone_h264_videoone_aac_audio
resolutionpositive_durationr   rk   rl   )rk   rl   expected_sumg{Gz?#duration_matches_intro_plus_footagemain_audio_pathnarration_not_remappedr   source_finalr|   under_one_gb)duration_matches_masterunder_one_billion_bytesendpoint_under_one_gbz  integrity verification failed: r   r   artifact_bytesduration_secondsduration_basisendpoint_verificationindependent_probechecksr   zsha256 streaming 8 MiB)hash_methodcompleted_atfinal_renderr   steps)r   r   r   r   r   r   r   r   r   )r   r   r   r   bytesr   r   rF   )*argparseArgumentParseradd_argumentCONFIG
parse_argsr   r>   r`   MANIFESTr   r   r*   rV   r&   r'   r   ri   existsr_   rC   datetimenowtimezoneutc	isoformatr   timesleepr   statst_sizerc   floatlenabsallvaluesr+   r)   r   printr?   )$parserargsr   cfgr   r   r   r   receipt_pathr   rT   request_shar   statecreatedabr   jobr   r   infor   videosaudiosr   response_outputr   basisintro_durationfootage_durationsource_durationr   r   lateststeps$                                       r   mainr  n   s5   $&&F
000DJE
-Cj++W+==>>GN#EwJ??HWc(m,,F7C	N33LVy())Fzz(t##vzz,'?'?t'K'KvzzZfOgOg  lB  PB  PBeHHHIII%&11Gg&&KF 
<1171CCDD99X"DDDShIiIimrIrIrw|  xA  xA  BR  xS  xS  Wb  xb  xb  gl  gp  gp  qz  g{  g{  F  gF  gFx))FFR5RRRSSS==?? 	N%LLLMMMc&kCM17;;{{8$$gkk$&7&71 	> 	>s1vvQ''<===Q\!\r"" 	A?@@@L!uu#(Ff+H5;fD+ '$-11(2C2GHHRRTT#
 #
 	 	 	 Vs8},s2V;J*ooSWWXy1122999
<1171CCDD3hN_NcNcdldudyNzNz  OE  OE  OG  OG  H  H  	I  	I  	IL%(((
1 
<1171CCDD3XM^MbMbckctcxMyMy  ND  ND  NF  NF  G  G  	H  	H  	HL%(((e@@@@AAA77>**0bL
##4//v~~7G7G/6;;==K`deKeKeeIIIJJJ==Dhhy"%%GIIWIIIFIIWIIIFT(^J/00H#''(++ksww}/E/EkQdIeIekikllO$3)--j99TA,F;f++*Tvay}}\/J/Jf/TV)RfQimmL.I.IU.R&kkQ&lF1IMM',B,BF1IMMRZD[D[+\`l+l%\ F x EuWWg%>%>??I*UVV ww	'B'B!C!CH!Mj!YZZ~:J\jm}\}~~8;H~<UXh<h8i8imq8q45+<G+K'((gg~&F&F G G QR\ ]^^ /n'*8o+E'F'F$'N'-{{}}'<z'I%1%5%5n%E%E%M
 
 	 	 	
 v}} OeMMVMMNNN



 1 5
6
6
@
@
B
BC
+
)4
18%
u
&.
 	7
 -k
 	(	
 %23v7I7I$7O7O3P3P	

 	6&>>

 ,<V[[]]=R
 	H
 '7
 	 
 0CD
 	&
 ,S
 0
 
 
G g&&&Z**G*<<==F"g-->>;D'F7OD*[^_k_w_wx|_}_}[~[~  T[  \m  Tn  BI  JZ  B[  qy  KN  O  OF5MF<&!!!	$*Y_jpjujujwjwj  V^  jq  rC  jD  E  E  TY  Z  Z  Z  [  [  [  [  [r   __main__)NrD   )r   r   r   r>   r@   r]   r   urllib.requestrN   pathlibr   __file__r*   r0   r)   r   r   r   rC   rV   rc   ri   r   r   r  __name__ r   r   <module>r     s       				               tH~~'*00 ,1" $&78  ,5& $&89 
 
$      # # # #% % %F F F  &  o[ o[ o[d zDFFFFF r   