
    ^j                        d dl m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
Z	d dlmZ  ed          ZdZdZdZdd	d
dZddZd dZd!dZd"dZd#dZd$dZd%dZedk    r e e                      dS )&    )annotationsN)PathzE/data/video-pipeline/HaTramAudio/project/013-Ngay-Buu-Cuc-Cu-Sang-Denz013-Ngay-Buu-Cuc-Cu-Sang-Denzrun-20260720T110344Z-f6c08be9zoro)zhttp://192.168.1.104:8022z/v1/footage-render-huyenan/jobs)zhttp://192.168.1.104:8023z/v1/huyenan-render-final/jobs)zhttp://192.168.1.104:8024z!/v1/huyenan-transcode-upload/jobs)footagefinal	transcodereturnstrc                     t           j                             t           j        j                                                                      dd          S )Nz+00:00Z)datetimenowtimezoneutc	isoformatreplace     \/data/video-pipeline/HaTramAudio/project/013-Ngay-Buu-Cuc-Cu-Sang-Den/work/run_remote_job.pyr   r      s<      !2!677AACCKKHVYZZZr   pathr   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)fs   r   <lambda>zsha.<locals>.<lambda>    s    !&&"9"9 r   r   )hashlibsha256openiterupdate	hexdigest)r   hblockr   s      @r   shar%      s    A	4 A99993?? 	 	EHHUOOOO	               ;;==s   ,A##A'*A'Nonec                    t          j        t          dz                      d                    } t          t
          t          dd                                D ]0\  }}|                     |          |k    rt          d|           1d S )Nz.ownership-lock.jsonutf-8encodingactive)
project_idrun_idownerstatuszownership mismatch: )
jsonloadsROOT	read_text
PROJECT_IDRUN_IDOWNERitemsgetRuntimeError)lockkeyvalues      r   guardr=   %   s    :t44???QQRRD%/6E]effllnn = =
U88C==E!!;c;;<<< "= =r   r<   dictc                   t                       | j                            dd           |                     d| j        z   dz             }|                    dd          5 }t          j        ||dd	
           |                    d           |	                                 t          j        |                                           d d d            n# 1 swxY w Y   t          j        ||            d S )NT)parentsexist_ok.z.tmpwr(   r)   F   )ensure_asciiindent
)r=   parentmkdir	with_namenamer   r0   dumpwriteflushosfsyncfilenor   )r   r<   tempr   s       r   atomic_jsonrS   ,   s   	GGGKdT222>>#	/F233D	3	)	) Q	%q9999					
	              
 JtTs   "A(CCCurlc                
   t           j                            | ddi          }t           j                            |d          5 }t	          j        |                                          cd d d            S # 1 swxY w Y   d S )NAcceptapplication/json)headers   timeout)urllibrequestRequesturlopenr0   r1   r   )rT   r]   responses      r   get_jsonra   8   s    n$$S8=O2P$QQG					4	4 +z(--//**+ + + + + + + + + + + + + + + + + +s   &A88A<?A<payloadtuple[int, dict]c                l   t           j                            | t          j        |d                              d          dddd          }t           j                            |d	          5 }|j        t          j        |	                                          fcd d d            S # 1 swxY w Y   d S )
NFrE   r(   rW   )zContent-TyperV   POST)datarX   method<   rZ   )
r\   r]   r^   r0   dumpsencoder_   r/   r1   r   )rT   rb   r]   r`   s       r   	post_jsonrl   >   s    n$$Ze444;;GDD!3?QRR	 %  G 
				4	4 <
8==?? ; ;;< < < < < < < < < < < < < < < < < <s   /-B))B-0B-intc                    t          j                    } |                     dt          t                               |                     dt
          d           |                     dt
          d           |                                 }t                       t          |j                 \  }}t          dz  |j        z  t          z  }|d	z  }|d
z  }|dz  }|dz  }t          j        |                    d                    }	t          j        |                    d                    }
t          |          }|
                    d          |k    rt!          d          t#          |dz             }|                    d          dk    s|                    d          durt!          d          d }|                                rt          j        |                    d                    }|                    d          |k    s<|                    d          t&          k    s|                    d          t          k    rt!          d          |r3|                    d          r|d         }t)          d| d           n-dt&          t          |j        ddt+          |          |||z   t-                      d 
}t/          ||           t1          ||z   |	          \  }}|                    d          p|                    d!          }|sE|                    d"||t-                      d#           t/          ||           t!          d$          |                    |                    dd%          ||t-                      d&           t/          ||           t)          d'| d           ||z   d(z   t+          |          z   }d }t5          d|j        dz             D ]?}	 t#          |          }nj# t8          j        j        t>          f$ rL}t)          d)| d*tA          |          j!         d           tE          j#        |j$                   Y d }~vd }~ww xY w|                    d          }||k    s	|d+z  d,k    rt)          d)| d-| d           |}t          j        |                    d                    }|                    |t-                      |d.           t/          ||           |d/v r	t/          ||           |                    |t+          |          t-                      |d0k    o*|                    d1i                               d2          du d3           t/          ||           t)          t          j%        |||                    d1i                               d2          d4d5          d           |d0k    r-|                    d1i                               d2          du rd,ndc S tE          j#        |j$                   At)          t          j%        ||dd6d7          d           d8S )9Nstage)choicesz--poll-seconds   )typedefaultz--max-pollsi   workzrequest.jsonzrequest-bindings.jsonzjob-intent.jsonzterminal-response.jsonr(   r)   request_sha256zrequest binding hash mismatchz/healthr/   ok
h264_nvencTzworker health/NVENC gate failedr,   r-   zstale/foreign job intentjob_idzresume job_id=)rN      creatingF)
schema_versionr,   r-   ro   r/   verifiedrequest_pathru   endpoint
created_atidfailed)r/   http_statussafe_response	failed_atz"job create response missing job_idaccepted)r/   r   rx   accepted_atzaccepted job_id=/zpoll=z transient=   r   z status=)r/   last_polled_at
poll_count>   r   	cancelled	completedr   verificationr|   )r/   terminal_response_pathterminal_atr|   )rx   r/   server_verifiedre   continue_poll_same_job)rx   r/   terminalactionrD   )&argparseArgumentParseradd_argumentsortedCONFIGrm   
parse_argsr=   ro   r2   r5   r0   r1   r3   r%   r8   r9   ra   existsr4   printr
   r   rS   rl   r!   range	max_pollsr\   errorURLErrorTimeoutErrorrr   __name__timesleeppoll_secondsrj   )parserargsbaseroutert   r}   bindings_pathintent_pathterminal_pathrb   bindingsrequest_hashhealthintentrx   rz   status_coder`   
status_urllastpolljobexcr/   s                           r   mainr   I   s   $&&F
888
(sA>>>
C>>>D	GGG$KD%&=4:%.D.(L22M**K33Mj///AABBGz-1171CCDDH|$$L||$%%55:;;;dY&''Fzz(t##vzz,'?'?t'K'K<===F ;K1171CCDD::&''<776::l;S;SWa;a;aekeoeopxeyey  ~D  fD  fD9::: 7&**X&& 7!'v''t44444  $Z --*u%%
 
 	K*** )$, @ @Xh''=8<<+=+= 	EOOx^fuxuzuz{{|||X...CDDD8<<*#E#EVams  EH  EJ  EJ  K  K  	L  	L  	LK***)))6666#c&kk1JDa!+,, & &	:&&CC%|4 	 	 	?$??499+=??tLLLLJt()))HHHH	 ""T>>TBY!^^0$0000====DK1171CCDD355PTUUVVVK(((999s+++MMVs=GYGYjmjojo  ~D  HS  ~S  ~K  X[  X_  X_  `n  pr  Xs  Xs  Xw  Xw  xB  XC  XC  GK  XK  L  L  M  M  MV,,,$*&UXU\U\]kmoUpUpUtUtu  VA  VA  B  B  QV  W  W  W  _c  d  d  d  d+--#''."2M2M2Q2QR\2]2]ae2e2e11kllll
4$%%%%	$*$EUmnn
o
ow{||||1s   .O>>Q%AQ  Q%__main__)r	   r
   )r   r   r	   r
   )r	   r&   )r   r   r<   r>   r	   r&   )rT   r
   r	   r>   )rT   r
   rb   r>   r	   rc   )r	   rm   )
__future__r   r   r   r   r0   rO   r   urllib.errorr\   urllib.requestpathlibr   r2   r4   r5   r6   r   r   r%   r=   rS   ra   rl   r   r   
SystemExitr   r   r   <module>r      sk   " " " " " "     				               tSTT+
	(OKS
 
[ [ [ [   = = = =	 	 	 	+ + + +< < < <O O O Od z
*TTVV

 r   