
    ,!j                        d dl Z 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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g 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 )    N)PathzL/data/video-pipeline/Youtube-Video-Maker/Project/01062026-003-Tran-Quoc-Toanzaudio/master_narration.wavz$audio/master_narration_timeline.jsonz&subtitles/master_subtitles_clamped.srtzaudio/master_audio_probe.jsonpartsaudio	subtitleszpart_ranges.jsonzpart_validation.jsonz%logs/step13_split_parts_manifest.jsong     b@g     V@g{Gz?)sshpassz-p11210119ssh-ozStrictHostKeyChecking=nor
   z!PreferredAuthentications=passwordr
   zPubkeyAuthentication=nozroot@192.168.1.104c                 R    t          t          j        d          | z   d           d S )Nz%Y-%m-%d %H:%M:%S T)flush)printtimestrftime)ms    "scripts_run_step_13_split_parts.pylogr      s*    E$- 455a7tDDDDDD    c                     t          j        d|                                           }|st          |           t	          t
          |                                          \  }}}}|dz  |dz  z   |z   |dz  z   S )Nz^(\d+):(\d+):(\d+),(\d+)$i  <     )rematchstrip
ValueErrormapintgroups)vr   hmismss         r   parse_tr#      sj    8(33	As188::2aqvbe|A~bg'= =r   c                     t          d|           } t          t          | dz                      }t          |d          \  }}t          |d          \  }}t          |d          \  }}|dd|dd|dd|dS )	Nr   r   i6 i`  02d:,03d)maxr   rounddivmod)secr"   r   remr    r!   s         r   fmt_tr.      s    3ZZCc$h((r'0B0B%!C6RUV[K\K\FBscijmnrcscs^b^_`b  @A  }a  }a  }a  HJ  }a  }a  }a  QR  }a  }a  }a  Y[  }a  }a  }a  var   c                 \   |                      d                                          }g }|s|S t          j        d|          D ]}d |                                D             }t          |          dk     r4d|d         v r|d         n|d         }d	                    d|d         v r
|dd          n	|dd                                                    }d
 |                    dd          D             \  }}|                    t          |          t          |          |d           |S )Nz	utf-8-sigencodingz\n\s*\nc                 `    g | ]+}|                                 |                    d           ,S ))r   rstrip.0xs     r   
<listcomp>zread_srt.<locals>.<listcomp>#   s/    AAAAqwwyyA$AAAr      z-->   r   
c                 6    g | ]}|                                 S  )r   r5   s     r   r8   zread_srt.<locals>.<listcomp>'   s     ,,,Qqwwyy,,,r   startendtext)		read_textr   r   split
splitlineslenjoinappendr#   )	ptxtcuesblocklinestlrA   abs	            r   read_srtrP      s/   [[+[&&,,..RD[hz#&& A AUAA!1!1!3!3AAA%ZZ\\8%(""U1XXa"yyeuQx//qrrU122Y??EEGG$,,"((5++,,,#!A++wqzz

$??@@@@r   c           	         g }t          | d          D ]L\  }}|t          |          t          |d                    dt          |d                    |d         dgz  }M|                    d                    |          d	           d S )
Nr:   r?   z --> r@   rA    r;   utf-8r0   )	enumeratestrr.   
write_textrF   )rJ   rH   outics        r   	write_srtrZ   +   s    d1 O OSQq#a&&U1W:&&>>U1U8__>>&	2	NN##diinnw/////r   c           	          | d         g }dd}|t                    k     rht          z   |z
  t          k     r+|z
  t          t          z   k    r|}t                    dz
  }nfdt          |d          |          D             }|r2fd|D             }|p|}t	          |fd          \  }}	|	d	         }n>t	          t          |t                              fd
          }|         d	         }||dz            }
|                    dt          |          dz   dt          d          t          |d          t          |z
  d          d |
D             d           ||dz   }|t                    k     h|S )Ntimeline        r   r:   c                 d    g | ],\  }}|d          t           z   k    |d          dz   k    (||f-S )r@   #   )MIN_PART_SEC)r6   rX   r!   r?   targets      r   r8   z!choose_ranges.<locals>.<listcomp>8   ss      B  B  B1AeHV[\hVhLhLhmnotmuw}  A  xA  nA  nA!u  nA  nA  nAr   c                     g | ]A\  }}|d z   t                    k     |d z                                d          dk    =||fBS )r:   
scene_typeheading)rE   get)r6   rX   r!   sceness      r   r8   z!choose_ranges.<locals>.<listcomp>;   sV    pppCAa1s6{{1B1BvaPQc{WcGdGdfoGoGo1Q%GoGoGor   c                 @    t          | d         d         z
            S )Nr:   r@   abs)r7   ra   s    r   <lambda>zchoose_ranges.<locals>.<lambda>=   s    c!A$u+f2D.E.E r   )keyr@   c                 @    t          |          d         z
            S )Nr@   rh   )rX   rf   ra   s    r   rj   zchoose_ranges.<locals>.<lambda>@   s    Cq	%@PQW@W<X<X r   part_r%      c                     g | ]
}|d          S )scene_idr=   )r6   r!   s     r   r8   z!choose_ranges.<locals>.<listcomp>B   sH      X|  X|  X|  kl  YZ  [e  Yf  X|  X|  X|r   )part_id	start_secend_secduration_sec	scene_ids)rE   TARGET_PART_SECr`   rT   minrangerG   r*   )r\   totalranges	start_idxr@   end_idx
candidatesheading_prevpool	end_scenepart_scenesrf   r?   ra   s              @@@r   choose_rangesr   1   s5   RfsaI3v;;		&
6\L  U5[OL4P%P%P3c&kk!mgg B  B  B  B  B	&*<i H H  B  B  B: vpppp:pppL		#D$$E$E$E$EFFFGI%CCiF,,2X2X2X2X2XYYYG_efm_not_u[^Ywqy()+--63v;;q=6665q>>\abefg\h\hx}  B  CH  H  IJ  yK  yK  X|  X|  p{  X|  X|  X|  }  }  ~  ~  ~%wqyY! 3v;;" 	r   c                     t           d| dd|ddt          t                    dt          |          gz   }t          j        |d           d S )Nz+ffmpeg -y -hide_banner -loglevel error -ss z.3fz -t z -i z -ac 1 -ar 22050 T)check)SSHrU   MASTER
subprocessrun)r?   durrW   cmds       r   	cut_audior   F   s      A  A  A  As  A  A  ATWX^T_T_  A  Atwx{t|t|  A  A  
B  B4      r   c                     d|  d}t          j        |dd          }t          j        |          }t	          |                    di                               d          pd          S )Nzhcurl -sS -X POST http://192.168.1.104:8002/probe -H 'Content-Type: application/json' -d '{"input_path":"z"}'T)shellrA   formatdurationr   )r   check_outputjsonloadsfloatre   )rH   r   resdocs       r   probe_audior   J   se    |tu|||S4888	Z__U3778B#7#7#;#;J#G#G#L1MMMr   c                  
   t                               dd           t                              dd           t          j                            dd           t          j        t                              d                    } t          t          j        t                              d                    d                   }t          t                    }t          | |          }g }|D ]}|d         }t           | dz  }t          | dz  }t          |                    t                               |d	<   t          |                    t                               |d
<   t#          d| d|d          d|d                     t%          |d         |d         |           g }	|D ]}
|
d         |d         k    s|
d         |d         k    r't'          d|
d         |d         z
            }t)          |d         |
d         |d         z
            }||k    rr|	                    t-          |d          t-          |d          |
d         d           d}d}t/          |	          D ]\  }}
|rW|
d         |	|dz
           d         k     r<t'          |	|dz
           d         dz   |
d         t0          z
            |	|dz
           d<   |
d         |
d         k    s|
d                                         s|dz  }t5          |	|           t7          |          }||d         z
  }t/          |	          D ]G\  }}
|r |
d         |	|dz
           d         k     r|dz  }|
d         dk     s|
d         |dz   k    r|dz  }H|                    ||d         |t-          |d          t9          |	          ||d           t:                              t          j        t           j         dt          tB                    t          t                    |ddd           d           tE          d! |D                       rd"nd#}tF                              t          j        t           j         d|t9          |          |d$dd           d           t                              t          j        t           j         d|t          t:                    t          tF                    t9          |          d%dd           d           |d"k    rtI          |          t#          d&t          j        |t9          |          d'd(          z              d S ))NT)parentsexist_okrS   r0   master_duration_secrq   z.wavz.srt
audio_pathsubtitle_pathzCUT  rr   z->rs   rt   r@   r?   r]   rn   rA   r>   r   r:   g?g?)rq   expected_duration_secaudio_duration_secduration_diff_secsubtitle_cuesoverlap_remaininginvalid_cues   )
project_idstepsource_master_audiosource_subtitler   Fr9   )ensure_asciiindentc              3   x   K   | ]5}|d          dk    o$|d         dk    ot          |d                   dk     V  6dS )r   r   r   r   g{Gz?Nrh   )r6   r   s     r   	<genexpr>zmain.<locals>.<genexpr>n   sp        I  Iwx10114r>9JA9MrRUVWXkVlRmRmnrRr  I  I  I  I  I  Ir   	completedfailed_validation)r   r   statusparts_countvalidations)r   r   r   part_ranges
validationr   zDONE )r   r   )r   )%	AUDIO_DIRmkdirSUB_DIRMANIFESTparentr   r   TIMELINErB   r   PROBErP   SUBSr   rU   relative_toPROJECTr   r   r)   rw   rG   r*   rT   SAFE_GAPr   rZ   r   rE   RANGESrV   dumpsnamer   all
VALIDATION
SystemExit)r\   ry   rJ   rz   r   rpidr   sub	part_cuesrY   nsneoverlapsinvalidrX   realdiffr   s                      r   mainr   O   s0   
t,,,gmmDRVm.W.W.WYaYhYnYnw{  FJYn  ZK  ZK  ZK
*X'''99
:
:TZ99::;PQRRtnnhu%%
 _ _Q	l#)sLLL0Eglll6J#e''0011!L/c#//ZaJbJbFcFc1_3E3S331[>33Qy\33444AkNAn-u555) N Nah!K.  AgJ!I,$>$>	#aj;'((2S>1B1U8AkNCZ-[-["BhhU2a[[uR{{!F)LLMMMM(agy!! @ @ca OAgJ1Q3...i!nW5c9!G*X:MNNIacN5h'
!F)//"3"3WaZWIs5$Q~%6 64y!! 5 5ca;AgJ1Q3...!jllahtDy(('1*'An<Mcg  }B  CG  HI  }J  }J  [^  _h  [i  [i  ~F  V]  ^  ^  _  _  _  _4:GLY\]cYdYdwz{  xA  xA  JP  Q  Q  _d  lm  n  n  n  x  @  @  @  I  I  }H  I  I  I  I  I  	b  ObtzBPVehioepep  @K  #L  #L  Z_  gh  i  i  i  sz  {  {  {	TZgl"fcfgmcncn|  AK  }L  }L  [^  _e  [f  [f  !g  !g  uz  BC  D  D  D  NU  V  V  V
Kz&111WTZ&V==5QQQQRRRRRr   __main__)r   r   r   r   pathlibr   r   r   r   r   r   PARTSr   r   r   r   r   rv   r`   r   r   r   r#   r.   rP   rZ   r   r   r   r   __name__r=   r   r   <module>r      s   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !      [\\++	7	755--go
-	k''
	8	8	 c  c  c D D D> > >
a a a
 
 
0 0 0  *! ! !N N N
#S #S #SH Zr   