
    3j!!                     t   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ  ed          Z	dZ
dZdZdZdZ ed	          Z ed
          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dZdZdZd Zd Zd Zd Z d Z!d%dZ"d Z#d&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/10062026-001-Tran-Quoc-Tuanz"http://192.168.1.201:3900/generatez,http://192.168.1.104:8015/render-story-videozhttp://192.168.1.104:8002/probez192.168.1.10411210119zK/data/video-pipeline/Youtube-Video-Maker/data/voices/template1/refaudio.mp3zJ/data/video-pipeline/Youtube-Video-Maker/data/voices/template1/reftext.txtz@/data/video-pipeline/Youtube-Video-Maker/data/logo/logoframe.pngz&output/thumbnails/thumb_16x9_final.pngzoutput/introsegmentszintro_text.txtzintro_audio.wavz	intro.mp4zintro_probe.jsonz&logs/step17_create_intro_manifest.jsonz0.82g?g      @c                     t          j        t          dz                      d                    } |                     d          pi }|                    d          p|                     d          pd                                }|                    d          p |                     d          pt          j                                        }dd	d
| dd| dgS )Nzscript/scenes.jsonutf-8encodingmetadataseriesu   Việt Sử Kể LạititleuA   chào mừng quý vị trở lại với vết mực thời gian.uC   nơi quá khứ được kể lại bằng màu mực và ký ức.u   hôm nay, trong series ,u   chúng ta cùng đến với .)jsonloadsPROJECT	read_textgetlowername)
scenes_docr
   r   r   s       z/data/video-pipeline/Youtube-Video-Maker/Project/10062026-001-Tran-Quoc-Tuan/scripts_run_step_17_create_intro_segmented.pyintro_segmentsr      s    W%99DDgDVVWWJ~~j))/RHll8$$\
x(@(@\D\cceeF\\'""MjnnW&=&=MTTVVEKM+&+++0000	     c                 R    t          t          j        d          | z   d           d S )Nz%Y-%m-%d %H:%M:%S T)flush)printtimestrftime)msgs    r   logr    $   s*    eDM"677;4HHHHHHr   c                    dt          j                    j        z   }g }|                                 D ]6\  }}|                    d| d| d| d                                           7|                                D ]\  }}t          |          }t          j        t          |                    d         pd}|                    d| d| d|j
         d	| d
	                                |                                z   dz              |                    d| d                                           |d                    |          fS )Nz----OmniVoiceBoundaryz--z(
Content-Disposition: form-data; name="z"

z
r   zapplication/octet-streamz"; filename="z"
Content-Type: z

s   
z--
r   )uuiduuid4hexitemsappendencoder   	mimetypes
guess_typestrr   
read_bytesjoin)	fieldsfilesbchunkskvpathpmimes	            r   	multipartr6   &   s   djll..Ar||~~||!v}}-r!-r-r_`-r-rkl-r-r-r-y-y-{-{||||++-- c c$
t**9/A77:X>Xd  B1  B  B  B  BXYX^  B  Bsw  B  B  B  I  I  K  K  LM  LX  LX  LZ  LZ  Z  [b  b  	c  	c  	c  	c
MM.q...''))***1SXXf5E5E3E,Er   c                     |                      dd                               dd                               dd                               dd                               dd                               dd          S )	N:r   ;z - z, -u   –u   —replace)texts    r   tts_payloadr>   .   sy    <<S!!))#s33;;E4HHPPQTVYZZbbchjmnnvvw|  B  C  C  Cr   c                    |                                 r|                                j        dk    rd S t          |           dt                                           rt                              d          ndt          dddd	}d }t          d
d          D ]}	 t          |dt          i          \  }}t          j                            t          |dd|z   id          }t          j                            |d          5 }|                    |                                           d d d            n# 1 swxY w Y    d S # t"          $ r8}	|	}t%          d| d|	            t'          j        d|z             Y d }	~	d }	~	ww xY w|)Ni  vir   r    16z2.0	broadcast)r=   languageref_textspeednum_stepguidance_scaleeffect_preset      	ref_audioContent-Typezmultipart/form-data; boundary=POSTdataheadersmethodi  timeoutzERROR intro tts attempt= 
   )existsstatst_sizer>   REF_TEXTr   SPEEDranger6   	REF_AUDIOurllibrequestRequestTTS_ENDPOINTurlopenwrite_bytesread	Exceptionr    r   sleep)
r=   outr-   lastattemptr/   bodyreqres
             r   generatern   1   s   
zz|| 

*T11t$$hphwhwhyhy  AB@R@R\c@R@d@d@d  @B  LQ  ]a  sx  IT  U  UFDA;; 	% 	%	%Vk)%<==FAd&&|~VvwxVxFy  BH&  I  IC''C'88XAsqvvxx?X?X?XXXXXXXXXXXXXXXXFF 	% 	% 	%D8788Q88999JrG|$$$$$$$$	% Js=   A(E(D5)E5D9	9E<D9	=E
F.F  F  c                 ~   t           j                            | t          j        |d                                          ddid          }t           j                            ||          5 }t          j        |                                	                                          cd d d            S # 1 swxY w Y   d S )NFensure_asciirM   zapplication/jsonrN   rO   rS   )
r^   r_   r`   r   dumpsr'   rb   r   rd   decode)urlpayloadrT   rk   rl   s        r   	post_jsonrw   B   s    s
7(N(N(N(U(U(W(Wao  qC  aD  LR  	S  	SC			G		4	4_$*QVVXX__M^M^B_B___________________s   -8B22B69B6c                    t          t          dt          |           id          }|                    di           }|                    dg           }t	          |                    d          pd          |                    d          t          |                    d	          pd          t          d
 |D                       t          d |D                       |dS )N
input_pathx   rS   formatstreamsdurationr   format_namesizec              3   H   K   | ]}|                     d           dk    V  dS )
codec_typeaudioNr   .0ss     r   	<genexpr>zprobe.<locals>.<genexpr>H   s}        Q@  Q@  st  RS  RW  RW  Xd  Re  Re  gn  Rn  Q@  Q@  Q@  Q@  Q@  Q@r   c              3   H   K   | ]}|                     d           dk    V  dS )r   videoNr   r   s     r   r   zprobe.<locals>.<genexpr>H   s}        P  P  rs  QR  QV  QV  Wc  Qd  Qd  fm  Qm  P  P  P  P  P  Pr   )duration_secr~   r   	has_audio	has_videor|   )rw   PROBE_ENDPOINTr*   r   floatintany)r3   dfmtr|   s       r   prober   F   s8   c$ii 8#FFFAAEERZ[]L^L^hihmhmnwxzh{h{`g !4!4!9::Q^I_I_gjknkrkrsykzkzk~  hA  hA  NQ  Q@  Q@  x  Q@  Q@  Q@  N@  N@  MP  P  P  w~  P  P  P  M  M  JQ  R  R  Rr   X  c                     ddt           ddddddddt           | g}t          j        |d	d	|
          }|j        r+t          |j        dd          p|j        dd                    d S )Nsshpassz-psshz-ozStrictHostKeyChecking=noz!PreferredAuthentications=passwordzPubkeyAuthentication=nozroot@T)capture_outputr=   rT   i`)WORKER_PASSWORKER_HOST
subprocessrun
returncodeRuntimeErrorstderrstdout)cmdrT   fullr4   s       r   workerr   J   s    
DU40J4Pstx  zS  Ti  \g  Ti  Ti  jm  
nDnT4HHHA|M<(8(LAHUVV<LMMMMMr   c           
      n   g }g }t          |           D ]5\  }}|dt          |          gz  }|                    d| d| d           6g d|z   }|d d          }g }t          t	          |                     D ]k}|                    d| d           |t	          |           dz
  k     r:|                    dt
           d	| d           |                    d	| d           l|                    dt           d
           |                    d
           |                    d                    |          dt	          |           dz              |dd                    |          ddddt          t                    gz  }d                    d |D                       }t          |d           d S )Nz-i[z4:a]aformat=sample_rates=22050:channel_layouts=mono[a])ffmpegz-yz-hide_bannerz	-loglevelerrorz[arJ   zanullsrc=r=22050:cl=mono:d=z[sz[sf]rA   z	concat=n=z:v=0:a=1[outa]z-filter_complexr9   z-mapz[outa]z-acodec	pcm_s16lerU   c              3   N   K   | ] }d |                     d d          z   d z   V  !dS )'z'\''Nr;   )r   xs     r   r   z compose_audio.<locals>.<genexpr>c   s:      @@qC		#g...s2@@@@@@r   i,  rS   )
	enumerater*   r&   r\   lenSEGMENT_GAP_SECFINAL_SILENCE_SECr,   INTRO_AUDIOr   )	pathsinputslabelsir4   r   filter_partsconcat_labelsquoteds	            r   compose_audior   O   s   Fbv W W!4Q. U!UUQRUUUVVVV
<
<
<v
EC!!!9LM3u:: , ,Y!YYY'''s5zz!| Uo U UQR U U UVVV  a+++M6GMMMNNN   ../]3};M;M/]/]/]]^^^chh|44VHY{[^_j[k[kllC 88@@C@@@@@F
63r   c                    d}t          d| |z
            }i dt          j         ddt          t                    |dt          t
                    |dgdt          t                    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ddddddd }t          t          |d!"          ||d#fS )$Ng      @g      ?job_id_step17_intro_segmentedscenes)
image_pathr}   
audio_pathsubtitle_pathoutput_pathwidthi  heighti8  fps   crf   presetveryfastburn_subtitlesF	ken_burnsTmotion_presetnone
transitioncuttransition_durationg        fade_infade_out)slice_audioslice_subtitlesro   rS   )scene1_durationscene2_duration)
maxr   r   r*   LOGOTHUMBr   INTRO_VIDEOrw   RENDER_ENDPOINT)	audio_durscene1scene2rv   s       r   renderr   f   s%   Fs3	& 011 kX>>>  kxWZ[_W`W`lrIsIs  CF  GL  CM  CM  Y_  u`  u`  Ia  k  co  ps  t  p@  p@  k  AP  QU  k  Vc  dg  hs  dt  dt  k  u|  }A  k  BJ  KO  k  PU  VX  k  Y^  _a  k  bj  ku  k  vF  GL  k  MX  Y]  k  ^m  nt  k  uA  BG  k  H]  ^a  k  bk  lo  k  pz  {~  k  MR  ej  k  k  kG_WT:::vhn<o<ooor   c                     t                               dd           t                              dd           t          j                            dd           t                      } t                              d                    |           dz   d           g }g }t          | d          D ]\  }}t          d|d	d
z  }t          d| dt          |                       t          ||           |                    |           |                    ||t          |          t          |          d           t          d           t!          |           t          t"                    }t          d|d                     t%          |d                   \  }}t          t&                    }	t"                                          oJt&                                          o1|	d         o)|	d         o!t+          |	d         |d         z
            dk    }
i dt,          j        ddd|
rdndddd|dt0          dt2          dd                    |           d t          t                    d!t          t"                    d"t          t&                    d#|d$|	d%|d&|d'|
d|	d         |	d         d(}t4                              t7          j        |d)d*+          d           t                              t7          j        t,          j        d|d         dt          t"                    t          t&                    t          t4                    |	d         d,d)d*+          d           |
st;          d          t          d-t7          j        |d         |	d         t          |           d.d)/          z              d S )0NT)parentsexist_okz


r   r   rJ   intro_segment_02dz.wavzTTS segment /)indexr=   r3   r   zcompose segmented intro audioz render segmented intro duration=r   r   r   g      ?
project_idstep   status	completedfailed_validationmodesegmented_intro_ttsr   segment_gap_secfinal_silence_sec
intro_textintro_text_pathintro_audio_pathintro_video_pathintro_audio_probeintro_video_proberender_response
scene_plan
validation)validsegmented_voicer   r   F   )rr   indent)r   r   r   r   r   r   intro_probe_pathr   zDONE )r   r}   r   rq   )	INTRO_DIRmkdirSEG_DIRMANIFESTparentr   
INTRO_TEXT
write_textr,   r   r    r   rn   r&   r*   r   r   r   r   r   rW   absr   r   r   r   INTRO_PROBEr   rs   
SystemExit)r   r   
seg_probesr   r=   rg   audio_proberespr   video_prober   docs               r   mainr  k   s   OOD$O///tUY1Z1Z1Z\d\k\q\qz~  IM\q  ]N  ]N  ]NH&++h//4gFFF
EjHQ'' } }$0Q00000#6XQ6X6XX6X6X2Y2Y2YcELL---z/@/@!SW_bcf_g_gpuvypzpzA{A{/|/|/|/|'(((%eK&8&8+H;~+FHHIII;~677ODU;EWEW




  x;#5#5#7#7  xK<T  xYdepYq  xvy  {F  GU  {V  Wb  cq  Wr  {r  ws  ws  ux  wxE 	Z	gl  	Z	6"  	Z	XU6ckkPc  	Z	dj  lA  	Z	  BL  MW  	Z	  Xi  jy  	Z	  zM  N_  	Z	  `l  ms  mx  mx  yA  mB  mB  	Z	  CT  UX  Yc  Ud  Ud  	Z	  ew  x{  |G  xH  xH  	Z	  I[  \_  `k  \l  \l  	Z	  m@  AL  	Z	  M`  al  	Z	  m~  C  	Z	  DP  Q[  	Z	  \h  rw  JN  [f  gr  [s  @	K	  L	W	  @	X	  iY	  iY	  	Z	C4:cuAFFFPWXXX
RQTU]Q^f{  PS  T_  P`  P`  tw  xC  tD  tD  X[  \g  Xh  Xh  xC  DR  xS  $T  $T  bg  op  q  q  q  {B  C  C  C7
#6777
S]k.>Yehiqererss  BG  H  H  H  	H  I  I  I  I  Ir   __main__)ro   )r   ))r   r(   r   r   urllib.requestr^   r"   pathlibr   r   ra   r   r   r   r   r]   rZ   r   r   r   r  r  r   r   r  r  r[   r   r   r   r    r6   r>   rn   rw   r   r   r   r   r  __name__ r   r   <module>r     s    > > > > > > > > > > > > > > > > > > > > > > > >      
$]
^
^3@2[
$\
]
]		Z	[	[	T
LMM66
.
 	*%%
''k!((	9	9 
 
 
 I H HF F FC C C  "` ` ` `R R RN N N N
     .p p p
I I I$ Zr   