
    #j                         d dl Z d dlZd dlZd dlmZ  e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d Zd Zd Zd Zd Zedk    r e             dS dS )    N)PathzJ/data/video-pipeline/Youtube-Video-Maker/Project/01062026-001-Pham-Ngu-Laozsubtitles/master_subtitles.srtzaudio/master_audio_probe.jsonz&subtitles/master_subtitles_clamped.srtz*subtitles/master_subtitles_validation.jsonz)logs/step12_clamp_subtitles_manifest.jsong{Gz?g      ?g      @c                 R    t          t          j        d          | z   d           d S )Nz%Y-%m-%d %H:%M:%S T)flush)printtimestrftime)msgs    &scripts_run_step_12_clamp_subtitles.pylogr      s+    	$-,
-
-
34@@@@@@    c                     t          j        d|                                           }|st          d|            t	          t
          |                                          \  }}}}|dz  |dz  z   |z   |dz  z   S )Nz^(\d+):(\d+):(\d+),(\d+)$zInvalid SRT time: i  <   g     @@)rematchstrip
ValueErrormapintgroups)valuemhmismss         r
   
parse_timer      s{    
-u{{}}==A 75e55666sAHHJJ''LAr1bt8b2g!BK//r   c                     t          d|           } t          t          | dz                      }t          |d          \  }}t          |d          \  }}t          |d          \  }}|dd|dd|dd|dS )	N        i  i6 i`  02d:,03d)maxr   rounddivmod)secms_totalr   remr   r   r   s          r
   fmt_timer)      s    
c3--C5t$$%%HHg&&FAsS%  GB3EAr///b///q///r////r   c           
         |                      d                                          }|sg S t          j        d|          }g }|D ]}d |                                D             }t          |          dk     r5|d         }|d         }|dd          }d|vr1|d         }t          t          |          dz             }|dd          }d	 |                    dd          D             \  }	}
|                    t          |          dz   |t          |	          t          |
          d
	                    |                                          g d           |S )Nz	utf-8-sigencodingz\n\s*\nc                 `    g | ]+}|                                 |                    d           ,S ))r   rstrip).0lines     r
   
<listcomp>zread_srt.<locals>.<listcomp>.   s1    RRRtTZZ\\RT""RRRr      r      z-->c                 6    g | ]}|                                 S  )r   )r0   xs     r
   r2   zread_srt.<locals>.<listcomp>8   s     GGG!''))GGGr   
)indexoriginal_indexstartendtextchanges)
	read_textr   r   split
splitlineslenstrappendr   join)pathcontentblockscuesblocklinesidx_line	time_line
text_linesstart_send_ss              r
   read_srtrQ   '   sp   nnkn2288::G 	Xj'**FD  RRu/?/?/A/ARRRu::>>8!H	122Y
	!!aI3t99q=))HqrrJGGY__UA-F-FGGGYY]&((e$$IIj))//11
 
 	 	 	 	 Kr   c           	         g }t          | d          D ]\  }}|                    t          |                     |                    t          |d                    dt          |d                               |                    |d                                                    |                    d           |                    d                    |          d	
           d S )Nr4   )r;   r;   z --> r<   r=    r8   utf-8r+   )	enumeraterD   rC   r)   extendrA   
write_textrE   )rI   rF   rK   icues        r
   	write_srtrZ   D   s    ED***  3SVVW..KKXc%j5I5IKKLLLS[++--...ROODIIe$$wO77777r   c                     t                                           st          dt                      t                                          st          dt                     t	          t          j        t                              d                    d                   } t          t                     }g }g }|D ]T}|d         | k    r1|d         	                    d           |	                    |           ?|	                    |           Ut          |          }t          |          D ]\  }}|d         |d	         f}|d         d
k     r d|d<   |d         	                    d           |d	         | k    r | |d	<   |d         	                    d           |d	         |d         k    r<t          | |d         t          z             |d	<   |d         	                    d           |d	         |d         z
  t          k     r<t          | |d         t          z             |d	<   |d         	                    d           |d	         |d         z
  t          k    r.|d         t          z   |d	<   |d         	                    d           |d
k    r#||dz
           }|d	         t          z   }	|d         |	k     rt!          |d         t          z   |d         t          z
            }
|
|d	         k     r |
|d	<   |d         	                    d           |d         |d	         t          z   k     r<t          | |d	         t          z             |d<   |d         	                    d           |d	         |d         k    r<t          | |d         t          z             |d	<   |d         	                    d           t#          |d         d          t#          |d	         d          ft#          |d
         d          t#          |d         d          fk    r|dz  }d
}d
}d
}d
}t          |          D ]\  }}|d                                         r|d         d
k     s|d	         |d         k    r|dz  }|d	         | dz   k    r|dz  }|d	         |d         z
  t          dz
  k     r|dz  }|d
k    r |d         ||dz
           d	         k     r|dz  }t'          |t(                     i dt*          j        dddt/          t                     dt/          t(                    d| dt          dt          dt          d t          |          d!t          |          d!t          |          d"t1          d# |D                       d$|d%|d&|d'|d(|d
k    d)d* |D             |z   i}t2                              t          j        |d+d,-          d           |d
k    r|d
k    r|d
k    rd.nd/}t*          j        d|t/          t(                    t/          t2                    t          |          |d"         |||d0
}t8          j                            d1d12           t8                              t          j        |d+d,-          d           |d.k    r#t          t          j        |d+3                    t?          d4t          j        |t          |          |d"         ||d5d+3          z              d S )6NzMissing input subtitle: zMissing Step 9 probe json: rT   r+   master_duration_secr;   r>   #dropped_start_after_master_durationr<   r   r   clamped_start_to_zeroclamped_end_to_master_durationexpanded_invalid_durationexpanded_short_durationtrimmed_long_durationr4   shortened_for_safe_gapshifted_start_for_safe_gapexpanded_after_shift   r=   gMbP?
project_idstep   	input_srt
output_srtsafe_gap_secmin_duration_secmax_duration_sec
total_cuesdropped_after_master_durationadjusted_cuesc              3   *   K   | ]}|d          
dV  dS )r>   r4   Nr6   r0   cs     r
   	<genexpr>zmain.<locals>.<genexpr>   s+      ==1)=Q======r   overlap_remaininginvalid_cuesoutside_master_durationtoo_short_cueswithin_master_durationadjustmentsc                 "    g | ]}|d          
|S )r>   r6   rs   s     r
   r2   zmain.<locals>.<listcomp>   s!    888a1Y<8888r   Fr3   )ensure_asciiindent	completedfailed_validation)
rg   rh   statusrk   validation_jsonro   rq   rv   rw   rx   T)parentsexist_ok)r}   zDONE )r   rI   adjustedrv   invalid) 	INPUT_SRTexists
SystemExit
PROBE_JSONfloatjsonloadsr?   rQ   rD   rB   rU   minMIN_DURATIONMAX_DURATIONSAFE_GAPr#   r$   r   rZ   
OUTPUT_SRTPROJECTnamerC   sumVALIDATION_JSONrW   dumpsMANIFESTparentmkdirr   )master_durationraw_cuesrI   dropped_after_masterrY   r   rX   origprev	min_starttarget_prev_endoverlapsr   outside	too_short
validationr   manifests                     r
   mainr   N   s    A?I??@@@ ECzCCDDDDJz';';W';'M'MNNOdeffO	""HD  w<?**	N!!"GHHH '',,,,KK'((HD// # #3Gc%j)w<!CL	N!!"9:::u:''(CJ	N!!"BCCCu:W%%_c'l\.IJJCJ	N!!"=>>>u:G$|33_c'l\.IJJCJ	N!!";<<<u:G$|33W4CJ	N!!"9:::q55A;DUh.I7|i''"%d7ml&BCLS[D["\"\"T%[00"1DKO**+CDDDw<$u+"888#&Uh8N#O#OCL	N))*FGGGu:W--!$_c'l\6Q!R!RCJ	N))*@AAA#g,""E#e*a$8$89eDGQ>O>OQVW[\]W^`aQbQb=cccMHHGGID//  36{  "" 	c'lQ&6&6#e*G:T:TqLGu:%///qLGu:G$|e';;;NIq55S\DQK$666MHdJgl 	S^^ 	c*oo	
 	 	 	L 	L 	c$ii 	(-A)B)B 	(-A)B)B 	======= 	X 	 	"7  	)!" 	!'Q,#$ 	884888;OO% J( tz*5QRSSS^efff$MMgllw!||[[QdFl*oo//$ii#O4%#* H O$666
8%JJJU\]]]H5AAABBB$*D		zZiOj  BJ  W^  _  _  ns  t  t  t  	t  u  u  u  u  ur   __main__)r   r   r   pathlibr   r   r   r   r   r   r   r   r   r   r   r   r)   rQ   rZ   r   __name__r6   r   r
   <module>r      s    				       
$[
\
\66	66
??
HH@@A A A0 0 00 0 0  :8 8 8lu lu lu^ zDFFFFF r   