
    x^jB                        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edz  Zed	z  Zed
z  Zedz  Zedz  Zedz  Zedz  edz  edz  edz  gZd Zd Zd Zedk    rS	  ej         e                       dS # e$ r0Z ede ej                    ej        d           Y dZ[dS dZ[ww xY wdS )    N)datetimetimezone)Path   logoutputzscript/project-manifest.jsonzcompletion-report.jsonzpostiz-media.jsonzpostiz-schedule.jsonzupload-transcode.jsonzstorage-cleanup.jsonzfinal-upload.mp4z	final.mp4zfootage/footage.mp4zintro/intro.mp4zinfo.txtc                     |                                  s*t          d|                     t                               t	          j        |                     d                    S )Nzmissing utf-8encoding)is_fileRuntimeErrorrelative_toPROJECTjsonloads	read_text)paths    script/cleanup-storage.pyloadr      sV    <<>> CAd&6&6w&?&?AABBB:dnngn66777    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   r   )hashlibsha256openiterupdate	hexdigest)r   digestblockr   s      @r   shar&      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                     t          t                    } t          t                    }t          t                    }t          t                    }t          t
                    }|                     d          }|                    d          pi                     d          pi }|                    d          pi }|                    d          du o+|                    d          dk    ot          |          d	k    }t                      }	|r|	                                D ]f}
|o1t          |
          d
k    o|
d                             d          dk    }|
r.|	
                    |
d                             d                     g|ot          |	          d
k    od |	v}|                     d          du o+|                     d          |                     d          k    |                    d          dk    |                    d          du o|                    d          |k    |o|                    d          |k    |                    d          du o\|                    d          dk    oC|                    d          |k    o*|                    di                               d          du t                                          d}t          |	                                          sAt          dd                    d |                                D                       z             t#          t                    }t                                          j        }|dk    sY|                    d          |k    s@|                    d          |k    s't)          |                    dd                    |k    rt          d          t*                                          r&t/          j        t*                              d                    }|                    d          du r|                    d          dk    rd  t4                              d!          D             }|st                                          r{t#          t                    |                    d"i                               d          k    r<t9          t/          j        dd|                    d#          d$d%&                     dS t          d'          t*                                          r-t/          j        t*                              d                    ni }d( |                    d)g           D             }t<          D ]p}|                                rZt?          |                     tB                              |                                j        t#          |          d*}|||d+         <   qtE          |	                                          }
d
d%d,tB          j#        |||
t?          t                               tB                              ||d*tI          j%        tL          j'                  (                                d-	}t*          )                    t/          j        |d%d	.          d/z   d           t<          D ]*}|                                r|*                                 +d0 t4                              d!          D             }| o0t                                          ot#          t                    |k    }|+                    ||rdnd1tY          d2 |
D                       |tI          j%        tL          j'                  (                                d3           t*          )                    t/          j        |d%d	.          d/z   d           |st          d4          d|-                    d5i           d6<   dd7|d#         d8|d6<   |d9         |d:<   t
          )                    t/          j        |d%d	.          d/z   d           t9          t/          j        d|d#         |d"         d;d%&                     dS )<Ncanon_sha256mediavideopostsverifiedTstatus	completed   r   r   stateQUEUEpublishDatechecks_passedchecks_totalsource_canon_sha256server_verificationunder_one_gb)
completionmanifest_completedr)   schedule	transcodeupload_existszcleanup gates failed: z, c              3   $   K   | ]\  }}||V  d S )N ).0keyvalues      r   	<genexpr>zmain.<locals>.<genexpr>=   s,      ?q?q
Ukp?q?q?q?q?q?q?qr   i ʚ;output_sha256r   bytesz'retained upload copy size/hash mismatchr
   r   c                     g | ]H}|                                 |t          k    !t          |                    t                              IS r>   r   UPLOADstrr   r   r?   r   s     r   
<listcomp>zmain.<locals>.<listcomp>E   sL    {{{DY]YeYeYgYg{lptzlzlzT--g6677lzlzlzr   *retainedfreed_bytes)r,   resumedrN   F)ensure_asciiz=completed cleanup receipt conflicts with current output filesc                     i | ]_}t          |t                    rH|                    d           r3|                    d          A|                    d          V|d          |`S )r   rD   Nr   )
isinstancedictgetr?   rows     r   
<dictcomp>zmain.<locals>.<dictcomp>K   sw       c4   &)WWV__ :=9I9I9UZ]ZaZabjZkZk9U 	FS9U9U9Ur   deleted_candidates)r   rD   r   r   running)	versionr,   r-   
project_idr5   gate_checksrX   rM   
started_at)rP   indent
c                     g | ]H}|                                 |t          k    !t          |                    t                              IS r>   rG   rJ   s     r   rK   zmain.<locals>.<listcomp>_   sL    sssDQUQ]Q]Q_Q_sdhlrdrdrT%%g..//drdrdrr   failedc              3   &   K   | ]}|d          V  dS )rD   Nr>   rU   s     r   rB   zmain.<locals>.<genexpr>a   sN        nL  nL  @Cnqrynz  nL  nL  nL  nL  nL  nLr   )r,   r-   rN   output_leftoverscompleted_atzpost-delete verification failedstepsstorage_cleanupzlog/storage-cleanup.json)r,   receiptrN   rd   
updated_at)r,   rN   rM   ).r   
COMPLETIONMEDIASCHEDULE	TRANSCODEMANIFESTrT   lensetvaluesaddrH   r   allr   joinitemsr&   statst_sizeintRECEIPTexistsr   r   r   OUTPUTrglobprintdumpsDELETErI   r   r   listnamer   nowr   utc	isoformat
write_textunlinkr"   sum
setdefault)r8   r)   r:   r;   manifestcanonmedia_videor+   schedule_ok
timestampsrowsgatesupload_hashupload_bytesprior	leftoversprior_failedrows_by_pathr   rV   rY   r,   s                         r   mainr   #   s   j!!JKKEH~~HYIH~~HNN>**E99W%%+0099?RKLL!!'RE,,z**d2px||H7M7MQ\7\padejakakopapKJ VLLNN 	; 	;D%\#d))q.\T!W[[=Q=QU\=\K ;tAw{{=99:::!Uc*oo&:Ut:?U nnZ00D8~Z^^O=\=\`j`n`no}`~`~=~&ll844C:&&$.\599=R3S3SW\3\PHLL1F$G$G5$P]]:..$6  ]9==;R;RVa;a  ]fofsfs  uJ  gK  gK  OT  gT  ]  Yb  Yf  Yf  g|  ~@  YA  YA  YE  YE  FT  YU  YU  Y]  Y])) E u||~~ s3dii?q?qV[VaVaVcVc?q?q?q6q6qqrrrf++K;;==(L}$$	o(F(F+(U(UYdYhYhiqYrYr  wB  ZB  ZB  FI  JU  JY  JY  Za  ce  Jf  Jf  Fg  Fg  kw  Fw  FwDEEE~~ `
7,,g,>>??99Z  D((UYYx-@-@K-O-O{{FLLQTDUDU{{{I !1!1 c&kkUYYz[]E^E^EbEbckElEl6l6ldjdtTYT]T]^kTlTl!m!m  }B  C  C  C  D  D  Dq^___FMnnFVFV^4:g///AABBB\^L ##$8"==  L
  , ,<<>> 	,t//8899DIIKKDWcfgkclclmmC(+LV%##%%&&D%9GL$URV !3!3G!<!<==`klll8<00::<<	 G tz'aHHH4OZabbb  <<>> 	KKMMMssFLL<M<MsssI}P!1!1Pc&kk[6PHNN84YKKQYjm  nL  nL  GK  nL  nL  nL  kL  kL  bk  }E  }I  JR  JV  }W  }W  }a  }a  }c  }c  d  d  e  e  etz'aHHH4OZabbb ><===:EH$$%67/3@Zkr  tA  lB  #C  #CH$^4H\
8%JJJTQ\cddd	$*$w}7M[bcm[noo  D  E  E  E  F  F  F1r   __main__zStorage cleanup blocked: )file)r   r   sysr   r   pathlibr   __file__resolveparentsr   LOGrz   rm   ri   rj   rk   rl   rx   rH   r~   r   r&   r   __name__exit	Exceptionexcr|   stderrr>   r   r   <module>r      s     



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-o	8	33++
!!''))	
&
&	$	$
;
)> >IZ@Z\beo\o	p8 8 8  G G GT z   /#//cjAAAA s   B, ,C!1%CC!