
    e`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 ed          
                                ZdZdZ ej                    dz  ZdZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zedk    r e             dS dS )    )PathNzR/data/video-pipeline/HaTramAudio/project/028-Nguoi-Thay-Ten-Tren-Tam-Bien-Cua-Hangzrun-20260722T063856Z-87753fd5Levyz .config/ha-tram-audio/postiz.env))finalzoutput/final.mp4)footagezoutput/footage/footage.mp4c                      t           j                             t           j        j                                                                      dd          S )N+00:00Z)datetimenowtimezoneutc	isoformatreplace     work/run_cleanup_safe.pyr   r   
   s<    "&&x'8'<==GGIIQQRZ[^__
_r   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    qvvk** r   r   )hashlibsha256openiterupdate	hexdigest)phbr   s      @r   shar"      s    
>ffTll <a****3//;;a;< < < < < < < < < < < < < < <	s   ,A##A'*A'c                     |                      d| j        z   dz             }|                    t          j        |dd          dz              t          j        ||            d S )N.z.tmpF   )ensure_asciiindent
)	with_namename
write_textjsondumpsosr   )r   dts      r   atomicr1      sb    ;;s16z& !!!,,tz!VW/X/X/XY]/]"^"^"^_a_ijklm_n_n_n_n_nr   c                  n   i } t                                                                           D ]}|                                }|rn|                    d          sYd|v rU|                    dd          \  }}|                                                    d          | |                                <   | S )N#=   z"')CFG	read_text
splitlinesstrip
startswithsplit)r/   rawskvs        r   envr@      s    MMOO&&(( : :SIIKK! :q||C   :SAXXwws1~~31Q17799??5#9#9a		l	r   c                 0   t           j                             |                     dd                    }|j        %|                    t           j        j                  }|                    t           j        j                                      d          S )Nr	   r   )tzinfor   microsecond)r
   fromisoformatr   rB   r   r   
astimezone)r?   xs     r   dtrH      so    ""199S#:#:;;Hqyy(9(=y>>Q	X&*++333BBBr   c                     t          j        t          dz                                            } |                     d          t
          k    s|                     d          t          k    rt          d          t          j        t          dz                                            }t          |d                   }|                    d          dk    s|                    d          t
          k    sd|                    d          t          k    sF|t          j	        
                    t          j        j                                      d	
          k    rt          d          d S )Nz.ownership-lock.jsonrun_idownerzownership mismatchzscript/gate-leases/cleanup.json
expires_atstatusactiver   rC   zactive cleanup lease required)r,   loadsROOTr7   getRUNOWNERRuntimeErrorrH   r
   r   r   r   r   )lockleaseexpirys      r   guardrX      sq   
j$--88::;;HHXtxx00%77lK_>`>`8`z499DDFFGGrRWXdReOfOf	IIh!!UYYx%8%8#%=%=7ASASUZAZAZ^dfnfwf{f{  }E  }N  }R  gS  gS  g[  g[  hi  g[  gj  gj  _j  _j  q}  ~]  q^  q^  k^  _j  _jr   c                 2   t           | z  }t           }t          |           j        D ]:}||z  }|                                rt	          dt          |          z             ;|                    d          }t           |j        vrt	          d| z             |S )Nzsymlink component prohibited: F)strictztarget escapes project: )rP   r   parts
is_symlinkrT   strresolveparents)relr   currentpartresolveds        r   safe_targetrd   "   s    8	#YY_ \ \T
$,'[-McRYll-Z [ [[[
))5)
!
!   |4Ns4R'S'S!S	r   c                    t                      }t          | d                   }d | d         D             }t          j                            |t          j        d          z
                                                      dd          |t          j        d          z                                                       dd          d          }t          j	        
                    |d	                             d
          dz   |z   |d         dd          }t          j	                            |d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          |t                     r|n+|                    d          p|                    d          pg }i }	|D ]}
|
                    d          pi }t          |t$                    r|                    d          n|
                    d          }|
                    d          p|
                    d          }|
                    d          p|
                    d          }||v r_|||         k    rS|rQt          |          |k    r>t'          |
                    dd                                                    dk    r||	|<   |	|k    rt+          d          d |	                                D             S )Nslot_utcc                 ,    i | ]}|d          |d         S )integration_idpost_idr   .0rG   s     r   
<dictcomp>zlive_queue.<locals>.<dictcomp>,   s%    0}0}0}VW3C1DQy\0}0}0}r   calendar_verification
   )minutesr   r	   )	startDateendDatePOSTIZ_BASE_URL/z/posts?POSTIZ_API_KEYzapplication/json)AuthorizationAccept)headers<   )timeoutpostsdataintegrationidintegrationIdpostIdpublishDatedatestate QUEUEz5live calendar does not prove exact two QUEUE post IDsc                      g | ]\  }}||d dS )r   )rh   ri   r   r   )rk   ir   s      r   
<listcomp>zlive_queue.<locals>.<listcomp>6   s&    SSSca1q	9	9SSSr   )r@   rH   urllibparse	urlencoder
   	timedeltar   r   requestRequestrstripurlopenr,   load
isinstancelistrQ   dictr]   upperrT   items)scheduleeslotexpectedqreqrr<   rz   foundr   integiidpidwhens                  r   
live_queuer   +   s   55b*%&&0}0}[cd{[|0}0}0}x	<X-?-K-K-K(K'V'V'X'X'`'`aijm'n'nz~  @H  @R  []  @^  @^  @^  {^  zi  zi  zk  zk  zs  zs  t|  }@  zA  zA  B  B  C  C^A/077<<YFqHbcdtbu  @R  RS  RS  T  TnS,,Bdill#BBBBBBBBBBBBBBBT""Qss(8(8(QCGGFOO(Qr	
 C CQ	m"%*U4:P:P'luyyVWV[V[\kVlVl3qrqvqvw{q|q|  rP  AB  AF  AF  GO  AP  APmp  VW  V[  V[  \i  Vj  Vj  V{  no  ns  ns  tz  n{  n{  QUH__hsm+++D4CPQPUPUV]^`PaPaLbLbLhLhLjLjlsLsLs  @Ctyz}t~	8OO,'^___SSU[[]]SSSSs   :EE"Ec                     t                       t          dz                      d          } t          j        | t          j        t          j        z             n# t          $ r t          d          w xY wt          j
        t          dz                                            }t          j
        t          dz                                            }t          j
        t          dz                                            }t          j
        t          dz                                            }t          j
        t          dz                                            }|                    d	          d
k    sG|                    d          dus0|                    d          dk    s|                    d          durt          d          t          d          }|                                ri|                                j        dk    sLt#          |          |                    d          k    s&t#          |          |                    d          k    rt          d          t          dz  }|                                r&t          j
        |                                          ni }|                    d          t&          k    r#t)          |                    dg                     ng }	d |	D             }
g }t*          D ]\  }}t          |          }|d         |         }||
v r'|                                rt          d|z             M|                                r<|                                j        |d         k    st#          |          |d         k    rt          d|z             |                    t/          |          ||d         |d         d           dt          j        dt&          d d!|d"         |d#         d$         d         |d#         d%         d         |	t/          |          |                                j        t#          |          d&|                    d't3                                d(}t5          ||           |D ]}t                       t7          |          }t          |d)                   }|                                rt#          |          |d         k    rt          d*          |                                 |                    t3                      |d+           |	                    |           |	|d<   t5          ||           t=          d, t*          D                       s3|                                rt#          |          |d-         d         k    rt          d.          |                    d
dt3                      d/ t*          D             d0           t5          ||           t?          t          j         d
dtC          |	          |d-         d         d1                     d S )2Nz*script/gate-leases/.cleanup-execution.lockza+z!another cleanup process is activezscript/project-manifest.jsonzlog/completion-audit.jsonzlog/upload.jsonzlog/transcode-upload.jsonzlog/schedule.jsonrM   	completedverifiedTphasepre_cleanupzpre-cleanup authority invalidzoutput/final-upload.mp4i ʚ;artifact_sha256zretained upload mismatchzlog/cleanup.jsonrJ   deletedc                 8    h | ]}|                     d           S )relative_path)rQ   rj   s     r   	<setcomp>zmain.<locals>.<setcomp>?   s]      |e  |e  |e  XY  }~  }B  }B  CR  }S  }S  |e  |e  |er   	artifactsz&previously deleted target reappeared: bytesr   zcleanup target drift: )pathr   r   r   r5   cleanuprunningFcanon_sha256gate_eventsposterlayout)r   r   r   
started_at)schema_version
project_idgaterJ   rM   r   source_canon_sha256source_poster_sha256source_layout_sha256r   retainedr   r   z(target changed immediately before delete)
deleted_atlive_calendarc              3   ^   K   | ](\  }}t          |                                          V  )d S )N)rd   existsrk   _r`   s      r   	<genexpr>zmain.<locals>.<genexpr>M   s:      77eaC!!777777r   r   zcleanup postcondition failedc                     i | ]\  }}|d 	S )Tr   r   s      r   rl   zmain.<locals>.<dictcomp>N   s#    YxYxYxglghilZ]^bYxYxYxr   )rM   r   completed_atpost_delete)rM   r   r   retained_sha256)"rX   rP   r   fcntlflockLOCK_EXLOCK_NBBlockingIOErrorrT   r,   rO   r7   rQ   rd   is_filestatst_sizer"   r   rR   r   TARGETSappendr]   r*   r   r1   r   unlinkr   anyprintr-   len)lockfilemanifestaudituploadtransr   r   receipt_patholdr   donelockedkeyr`   r   recordreceipttargetcalendars                      r   mainr   7   s	   4DDJJ4PP
[%-56666OOOl+NOOOO
*d99DDFF
G
GdjZ^_zZz  ZF  ZF  ZH  ZH  OI  OI  QU  Q[  ]a  bs  ]s  \~  \~  \@  \@  QA  QA  JP  HL  HR  TX  Yt  Tt  S  S  SA  SA  HB  HB  BG  LP  LV  X\  ]p  Xp  W{  W{  W}  W}  L~  L~  CKLLK''8<<
+C+C4+O+OSXS\S\]dSeSegtStStx}  yB  yB  CM  yN  yN  VZ  yZ  yZ  am  nM  aN  aN  [N
/
0
0  Shmmoo5}DDHW]WaWabsWtWtHtHtx{  }E  yF  yF  HM  HQ  HQ  Rc  Hd  Hd  yd  yd  kw  xR  kS  kS  eS%%R^ReReRgRg*o$*\5K5K5M5M*N*N*Nmoc  X[  X_  X_  `h  Xi  Xi  kn  Xn  Xnx|  ~A  ~E  ~E  FO  PR  ~S  ~S  yT  yT  yT  tvpw  |e  |e  ]d  |e  |e  |e  w{
 g gWS!E+.s3VD[[hhjjQ|$LS$PQQQ	
  G(&/99SVVVHEU=U=U\h  jB  CF  jF  ]G  ]G  WG--As6'?TZ[cTdeeffff$)9c[dpu  MU  Vd  Me  }E  FS  }T  U]  }^  _p  }q  IQ  R_  I`  ai  Ij  k|  I}  HO  cf  go  cp  cp  yA  yF  yF  yH  yH  yP  Z]  ^f  Zg  Zg  [h  [h  vy  v}  v}  ~J  KN  KP  KP  vQ  vQ  
R  
R  SY  Zf  gn  So  So  So Y YV''':h''(+f_6M*N*N	
oAx 000|Dn7o7o1o((***V]]xHHIII'..Y_J`J`J`t{ahiras  }C  DP  QX  }Y  }Y  }Y  }Y77w77777  ux?O?O?Q?Q  uUXYaUbUbdklvdw  yA  eB  VB  VB  IU  Vt  Iu  Iu  Cu+SUUYxYxpwYxYxYxyyzzz  |B  CO  PW  |X  |X  |X  Y^  _c  _i  t  KO  Z]  ^e  Zf  Zf  y@  AK  yL  MU  yV  jW  jW  _X  _X  YY  YY  YY  YY  YYs   ,A A3__main__)pathlibr   r
   r   r   r,   r.   urllib.parser   urllib.requestr^   rP   rR   rS   homer6   r   r   r"   r1   r@   rH   rX   rd   r   r   __name__r   r   r   <module>r      sY         A A A A A A A A A A A A A A A A A A A A A A A A A A A A	T
^__ggii#6UDIKK22O _ _ _  
o o o
 
 
C C C^ ^ ^

 
 
T T TY Y Y0 Zr   