
    ,!j                      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/01062026-003-Tran-Quoc-Toanz"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                  6   t          j        t          dz                      d                    } |                     d          pd                                }|                     d          pt          j                                        }ddd	| d
d| dgS )Nzscript/scenes.jsonutf-8encoding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)metar
   r   s      -scripts_run_step_17_create_intro_segmented.pyintro_segmentsr      s    :w33>>>PPQQDhhx  <$<CCEEFXXg.',5577E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   	multipartr5   %   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ranger5   	REF_AUDIOurllibrequestRequestTTS_ENDPOINTurlopenwrite_bytesread	Exceptionr   r   sleep)
r<   outr,   lastattemptr.   bodyreqres
             r   generaterm   0   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_asciirL   zapplication/jsonrM   rN   rR   )
r]   r^   r_   r   dumpsr&   ra   r   rc   decode)urlpayloadrS   rj   rk   s        r   	post_jsonrv   A   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   rR   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>G   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>G   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{   )rv   PROBE_ENDPOINTr)   r   floatintany)r2   dfmtr{   s       r   prober   E   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<   rS   i`)WORKER_PASSWORKER_HOST
subprocessrun
returncodeRuntimeErrorstderrstdout)cmdrS   fullr3   s       r   workerr   I   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[arI   zanullsrc=r=22050:cl=mono:d=z[sz[sf]r@   z	concat=n=z:v=0:a=1[outa]z-filter_complexr8   z-mapz[outa]z-acodec	pcm_s16lerT   c              3   N   K   | ] }d |                     d d          z   d z   V  !dS )'z'\''Nr:   )r   xs     r   r   z compose_audio.<locals>.<genexpr>b   s:      @@qC		#g...s2@@@@@@r   i,  rR   )
	enumerater)   r%   r[   lenSEGMENT_GAP_SECFINAL_SILENCE_SECr+   INTRO_AUDIOr   )	pathsinputslabelsir3   r   filter_partsconcat_labelsquoteds	            r   compose_audior   N   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_subtitlesrn   rR   )scene1_durationscene2_duration)
maxr   r   r)   LOGOTHUMBr   INTRO_VIDEOrv   RENDER_ENDPOINT)	audio_durscene1scene2ru   s       r   renderr   e   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   rI   intro_segment_02dz.wavzTTS segment /)indexr<   r2   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   )rq   indent)r   r   r   r   r   r   intro_probe_pathr   zDONE )r   r|   r   rp   )	INTRO_DIRmkdirSEG_DIRMANIFESTparentr   
INTRO_TEXT
write_textr+   r   r   r   rm   r%   r)   r   r   r   r   r   rV   absr   r   r   r   INTRO_PROBEr   rr   
SystemExit)r   r   
seg_probesr   r<   rf   audio_proberespr   video_prober   docs               r   mainr  j   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__)rn   )r   ))r   r'   r   r   urllib.requestr]   r!   pathlibr   r   r`   r   r   r   r   r\   rY   r   r   r   r  r  r   r   r  r  rZ   r   r   r   r   r5   r=   rm   rv   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   