
    ,!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)PathzL/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toanz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                     }d}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 t1          d! |D                       d"|	d#|
d$|d%|d&|dk    d'd( |D             }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          |	|
|d.
}t8          j                            d/d/0           t8                              t          j        |d)d*+          d           |d,k    r#t          t          j        |d)1                    t?          d2t          j        |t/          |          |d          |	|
d3d)1          z              d S )4NzMissing input subtitle: zMissing Step 9 probe json: rT   r+   master_duration_secr   r;   r<   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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   rq   s     r
   r2   zmain.<locals>.<listcomp>   s!    888a1Y<8888r   Fr3   )ensure_asciiindent	completedfailed_validation)
rf   rg   statusrj   validation_jsonrn   ro   rt   ru   rv   T)parentsexist_ok)r{   zDONE )r   rI   adjustedrt   invalid) 	INPUT_SRTexists
SystemExit
PROBE_JSONfloatjsonloadsr?   rQ   rU   rD   minMIN_DURATIONMAX_DURATIONSAFE_GAPr#   r$   r   rZ   
OUTPUT_SRTPROJECTnamerC   rB   sumVALIDATION_JSONrW   dumpsMANIFESTparentmkdirr   )master_durationrI   r   rX   rY   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ID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 	======= 	X 	 	"7 	) 	!'Q,  	884888!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bu bu buJ zDFFFFF r   