
    z=^j/                     j   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  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d
 Zd Zd Zd Zedk    rA	  e e                      # e$ r%Z ede ej                    ed          dZ[ww xY wdS )    N)datetimetimezone)Path   zoutput/footage/footage.mp4z"output/footage/footage-cleaned.mp4zlog/footage-rejection.jsonzlog/footage-cleanup.jsonzstory/promotion-report.jsonc                    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   #script/postprocess-footage-clean.py<lambda>zsha.<locals>.<lambda>   s    !&&"9"9     r   )hashlibsha256openiterupdate	hexdigest)pathhblockr   s      @r   shar      s    A	4 A99993?? 	 	EHHUOOOO	               ;;==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,sizez9stream=index,codec_name,width,height,sample_rate,channelsz-ofjsonT)capture_outputtextcheck)
subprocessrunstrr   loadsstdout)r   results     r   prober&      sW    ^	D'?4J	U	D			#37d$  F
 :fm$$$r   c                     t          j        dddddt          |           d|ddd	d
dgdd          }t          j        |j                                                  t          |j                  fS )Nffmpeg-hide_banner	-loglevelr   -i-mapz-ccopyz-fadtszpipe:1T)r   r   )r    r!   r"   r   r   r$   r   len)r   selectorr%   s      r   stream_hashr1   "   st    ^	>;s4yy	4vx	A4  F
 >&-((2244c&-6H6HHHr   c                     t           t          t          fD ]@} |                                 s*t	          d|                     t                               At          j        t          	                    d                    }t          j        t          	                    d                    d         }|
                    d          dk    s|
                    d          durt	          d	          |
                    d
          |k    rt	          d          |
                    d          t          t                     k    s5|
                    d          t                                           j        k    rt	          d          t          t                     }t          t           d          \  }}t                                           rt	          d          t           j                            dd           t                               d          }|                                rt	          d          ddddddt)          t                     ddddddddd d!d"d#d$d%d&d'd(d)d*d+t)          |          g}t+          j        |d,           |                    t                      t          t                     }t          t           d          \  }	}
t1          |d-         d.                   }t1          |d-         d.                   }|
                    d/g           }d0 |D             }d1 |D             }t3          |          d2k    ot3          |          d2k    o|d3         
                    d4          d5k    oz|d3         
                    d6          |d3         
                    d7          fd8k    o@|d3         
                    d4          d9k    o!t5          ||z
            d:k    o|	|k    o|
|k    }i d;d2d|d|rd<nd=d
|d>d?d@t)          t                               t                              dA|d         dB|d         dCt)          t                               t                              dDt          t                     dE|dF|dG|dH|	dI|dJ|
dK|	|k    o|
|k    ||z
  t7          j        t:          j                                                  dL}t@          !                    t          j"        |dMdNO          dPz   d           tG          t          j"        ||d         t)          t                     t                                           j        |dD         |dK         dQdMR                     |rd3nd2S )SNzcleanup blocked: missing zutf-8)encodingspoken_sha256statusrejectedverifiedTz2cleanup blocked: rejection receipt is not verifiedsource_canon_sha256z)cleanup blocked: rejection canon mismatchr   bytesz3cleanup blocked: rejected source hash/size mismatchz0:a:0zHcleanup blocked: cleaned output already exists; inspect before overwrite)parentsexist_okz	.part.mp4z,cleanup blocked: stale partial output existsr(   r)   r*   warningz-yr+   z-filter_complexzr[0:v]crop=608:780:656:0,scale=608:1080:flags=lanczos[clean];[0:v][clean]overlay=656:0:shortest=1,format=yuv420p[v]r,   z[v]z-c:vlibx264z-presetveryfastz-crf21z
-profile:vhighz-pix_fmtyuv420pz-c:ar-   z	-movflagsz
+faststart)r   formatdurationstreamsc                 <    g | ]}|                     d           |S )widthget.0xs     r   
<listcomp>zmain.<locals>.<listcomp>L   s'    2221155>>2Q222r   c                 <    g | ]}|                     d           |S )sample_raterG   rI   s     r   rL   zmain.<locals>.<listcomp>M   s)    8881155#7#78Q888r   r   r   
codec_nameh264rF   height)i  i8  aacg?version	completedfailedmethodz\crop center top 608x780 then scale to 608x1080 and overlay at x=656,y=0; audio stream copiedoriginal_rejected_pathoriginal_rejected_sha256original_rejected_bytesreplacement_pathreplacement_sha256source_probereplacement_probesource_audio_elementary_sha256#replacement_audio_elementary_sha256source_audio_bytesreplacement_audio_bytesaudio_preserved_byte_for_byte)duration_delta_seconds
checked_atF   )ensure_asciiindent
)r7   r5   outputr9   r   audio_preserved)rf   )$SOURCE	REJECTIONCANONexistsRuntimeErrorrelative_toPROJECTr   r#   	read_textrH   r   statst_sizer&   r1   CLEANparentmkdirwith_suffixr"   r    r!   replacefloatr/   absr   nowr   utc	isoformatRECEIPT
write_textdumpsprint)r   	rejectioncanonr\   source_audio_hashr`   tempcmdclean_probeclean_audio_hashclean_audio_bytessource_durationclean_durationrD   videoaudior7   receipts                     r   mainr   +   s   E* X X{{}} 	XV4;K;KG;T;TVVWWW	X
9...@@AAIJu8899/JE}}X*,,	j0I0IQU0U0UOPPP}}*++u44FGGG}}X#f++--w1G1G6;;==K`1`1`PQQQ==L,7,H,H))||~~ gefff	Ltd333[))D{{}} KIJJJ.+y$c&kk  Pvw	9jRXZ^`lnt  wA  CL\3t99	C N3d####LL,,K*5eW*E*E''L2:>??O;x0<==Nooi,,G22222E88888EE

a 	4CJJ!O 	4!HLL&&&0	41X\\'""E!HLL$:$:;|K	4 !HLL&&%/	4 011T9		4
  11	4 !33 1 (,4X6[kkS[u&.  1O 	!#f&8&8&A&A"B"B E_`ijr`s 	"9W#5	 8J3uO`O`ahOiOiKjKj	
 	c%jj
 +9,
 I\]h 	)*; >cdt 	0 3LM^ 	()9=N)N)zSdhzSz #1?"Bl8<00::<<  G tz'aHHH4OZabbb	$*(gh6GSVW\S]S]hmhrhrhthth|  IP  Qe  If  {B  Cb  {c  d  d  sx  y  y  y  z  z  z11ar   __main__zFootage cleanup blocked: )file)r   r   r    sysr   r   pathlibr   __file__resolver:   rq   rk   ru   rl   r   rm   r   r&   r1   r   __name__
SystemExit	Exceptionexcr   stderr r   r   <module>r      sk         



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-	/	/6622	
.
.//  % % %I I I:  :  : z zj      /#//cjAAAAjmm s   3B B0 B++B0