
    ^^j                        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Zd dlZd dl	Z	d dl
m
Z
mZ d dlmZ  ee                                          j        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dZ d Z!d Z"d Z#e$dk    rS	  ej%         e#                       dS # e&$ r0Z' e(de' ej)                    ej%        d           Y dZ'['dS dZ'['ww xY wdS )    N)datetimetimezone)Path   zstory/promotion-report.jsonzimage/layout-manifest.jsonz image/intro-poster-1920x1080.pngzaudio/intro-voice.wavzaudio/intro-full.wavzoutput/intro/intro.mp4zlog/intro-render.jsonzlog/intro-voice.jsonzhttp://192.168.40.33:7862zhttp://192.168.1.104:8021zngoc-huyen-vbeeu   Các bạn đang nghe truyện được phát từ Huyền An Audio. Chúc các bạn có những giây phút nghe truyện vui vẻ. Hãy ủng hộ chúng tôi bằng cách thích video và đăng ký kênh.c                    t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                  .                          d          S )Ni   )read)handles   script/render-intro-gpu.py<lambda>zsha.<locals>.<lambda>    s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr   s      @r   shar      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                     t          j        dddddddddt          |           g
d	d	d	
          }t          j        |j                  S )Nffprobez-verrorz-show_entrieszformat=duration,sizezMstream=index,codec_name,width,height,sample_rate,channels:stream_tags=encoderz-ofjsonT)capture_outputtextcheck)
subprocessrunstrr   loadsstdout)r   results     r   prober&   %   sY    ^4/3Ihvs4yy T	3 3 3F
 :fm$$$r      c                 P   |'t          j        |                              d          nd }t          j                            | ||rddini |rdnd          }t          j                            ||          5 }t          j        |          cd d d            S # 1 swxY w Y   d S )Nutf-8Content-Typezapplication/jsonPOSTGETdataheadersmethodtimeout)r   dumpsencodeurllibrequestRequesturlopenload)urlpayloadr2   bodyr6   responses         r   request_jsonr>   .   s	   292E4:g%%g...4Dn$$Stei=qnN`=a=aoq  EI  {T  {A  {A  OT$  U  UG					9	9 #Xy""# # # # # # # # # # # # # # # # # #s   :BB"Bc                    t          j        t                              d                                                    }t
                                          rt                                          rt          j	        t
          
                    d                    }|                    d          du r}|                    d          | k    rd|                    d          |k    rK|                    d          t          k    r-|                    d          t          t                    k    rd S t          t          d	z             }t          t          d
z                                 dg           }t!          d |D             d           }|                    d          dk    s0|r.|                    d          dus|                    d          durt#          d          t$          j                            t          t          d                              d          }t$          j                            t          dz   |ddid          }t$          j                            |d          5 }|                                }	d d d            n# 1 swxY w Y   t3          |	          dk     s|	d d         dk    s|	dd         dk    rt#          d           t                              d!          }
|
                    |	           t9          j        |
t                     t
                              t          j        d"d| |t          t          tA          t          !                    tD                              t          t                    tG          j$        tJ          j&                  '                                d#	d$d%&          d'z   d           d S )(Nr)   encodingverifiedTsource_canon_sha256text_sha256voiceoutput_sha256/healthz/voicesvoicesc              3   V   K   | ]$}|                     d           t          k     |V  %dS )idN)get
VOICE_NAME).0items     r   	<genexpr>z#synthesize_intro.<locals>.<genexpr>=   s6      HH488D>>Z+G+G+G+G+G+GHHr   statusokmodel_existsconfig_existszintro TTS preflight failed)r   rE   z/ttsr*   z!application/x-www-form-urlencodedr+   r-   i,  r1   ,      s   RIFF      s   WAVEzintro TTS response is not WAV	.part.wavr   )	versionrB   rC   rD   rE   endpointoutputrF   
checked_atF   ensure_asciiindent
)(r   r   TEXTr4   r   VOICE_RECEIPTexistsVOICEr   r#   	read_textrK   rL   r   r>   TTS_BASEnextRuntimeErrorr5   parse	urlencoder6   r7   r8   r
   lenwith_suffixwrite_bytesosreplace
write_textr3   r"   relative_toPROJECTr   nowr   utc	isoformat)canontext_shaoldhealthrH   rowr<   reqr=   r.   temps              r   synthesize_intror~   5   sw   ~dkk'2233==??H %,,.. j00'0BBCC77:$&&3773H+I+IU+R+RWZW^W^_lWmWmqyWyWy  B  F  F  GN  O  O  S]  ]  ]  be  bi  bi  jy  bz  bz  ~A  BG  ~H  ~H  bH  bHF(Y.//F(Y.//33HbAAF
HHHHH$
O
OCzz(t##3##''.2I2IQU2U2UY\Y`Y`apYqYqy}Y}Y}7888<!!4*"E"EFFMMgVVD
.
 
 F!2X{G|  FL
   M  MC			S		1	1 X}}              
4yy2~~bqbW,,QrT
g0E0E:;;;[))DTJtUTZA4`ev~  JT  bj  vy  z  zK  zK  LS  zT  zT  vU  vU  hk  lq  hr  hr  BJ  BN  OW  O[  B\  B\  Bf  Bf  Bh  Bh  )i  )i  x}  FG  H  H  H  KO  O  Za  b  b  b  b  bs   3JJJc                     t                               d          } t          j        t	          t
                    d          5 }|                                }|                                dk    rt          d          |	                    |
                                          }d d d            n# 1 swxY w Y   t          |j        dz            }d|z  |j        z  |j        z  }t          j        t	          |           d          5 }|                    |           |                    |           |                    |           d d d            n# 1 swxY w Y   t#          j        | t                      d S )NrX   r   NONEzintro voice WAV is compressedg       @    wb)FULLrm   waver   r"   re   	getparamsgetcomptyperi   
readframes
getnframesint	framerate	nchannels	sampwidth	setparamswriteframesro   rp   )r}   sourceparamsframessilence_framessilencetargets          r   append_silencer   L   s   K((D	3u::t	$	$ 8!!##6))>???""6#4#4#6#677	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 )C/00N&)99F<LLG	3t99d	#	# $v   6"""7###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ JtTs&   A#B11B58B5
A EEEc            	         t           t          t          fD ](} |                                 st	          d|            )t          j        t                               d                    }t          j        t                              d                    }|                    d          }|                    d          dus[|                    d          dusD|                    di                               d          dus|                    d          |k    rt	          d	          t          |           t                       t          t          t                    d
         d                   }t          t          dz             }|                    d          dk    s0|                    d          dk    s|                    d          durt	          d          t                                           r3t$                                          rt          j        t                               d                    }|                    d          du r|                    d          |k    r|                    d          t'          t                    k    r|                    d          t'          t                    k    rf|                    d          t'          t$                    k    r;t)          t          j        ddt-          t$                    dd                     dS t$          j                            dd           dt3          j                    j        d d         z   }i d|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/d0d1d2d3d4d5d4d6d4ddd7}t          t          d8z   |d9:          }	t$                                          st	          d;          t          t$                    }
|
                    d<g           }t          |
d
         d                   }t9          |          d=k    oGt;          d> |D                       o.t;          d? |D                       ot=          ||z
            d@k    }i dAdBd|d|rdCndDd|d|dEt          dFddG|dH|	dt'          t                    dt'          t                    dIt-          t$                              t@                              dt'          t$                    dJ|dK|
dddLddMdNtC          j"        tF          j$                  %                                }t           &                    t          j        |dd=O          dPz   d           t)          t          j        |||dQd                     |rdndBS )RNzmissing r)   r@   spoken_sha256rB   T	visual_qarC   zintro authority gate mismatchformatdurationrG   rP   rQ   encoder
h264_nvencnvenc_availablez-intro GPU endpoint does not verify h264_nvencposter_sha256audio_sha256rF   )rB   reusedr[   F)r_   r   )parentsexist_okzhuyenan-011-intro-rW   job_idscenes)
image_pathr   
audio_pathsubtitle_pathoutput_pathwidthi  heighti8  fpsr'   crf   presetp4burn_subtitles	ken_burnsmotion_presetnone
transitioncuttransition_durationg        fade_infade_out)slice_audioslice_subtitlesz/stickman-render-gpui  r1   z*intro GPU endpoint returned without outputstreamsr]   c              3   H   K   | ]}|                     d           dk    V  dS )
codec_nameh264NrK   rM   r{   s     r   rO   zmain.<locals>.<genexpr>y   s3      (\(\S)>)>&)H(\(\(\(\(\(\r   c              3   H   K   | ]}|                     d           dk    V  dS )r   aacNr   r   s     r   rO   zmain.<locals>.<genexpr>y   se        eX  eX  ILehelelmyezez  D  fD  eX  eX  eX  eX  eX  eXr   g?rY   r   	completedfailedrZ   encoder_requiredserver_healthserver_resultr[   duration_secondsr&   pending)requiredrP   rB   r\   r^   ra   )rB   r   r   )'	PROMOTIONLAYOUTPOSTERis_fileri   r   r#   rf   rK   r~   r   floatr&   r   r>   GPU_BASERECEIPTrd   OUTPUTr   printr3   r"   parentmkdiruuiduuid4hexrl   anyabsrr   rs   r   rt   r   ru   rv   rq   )r   	promotionlayoutrw   full_durationrz   ry   r   r;   r%   output_prober   r   rB   receipts                  r   mainr   \   s   FF+ 2 2||~~ 	20$00111	2
9...@@AAIZ(('(::;;FMM/**E}}Z  ,,

:0F0Fd0R0RV\V`V`alnpVqVqVuVu  wA  WB  WB  JN  WN  WN  RX  R\  R\  ]r  Rs  Rs  w|  R|  R|:;;;U%++h/
;<<M(Y.//Fzz(t##vzz)'<'<'L'LPVPZPZ[lPmPmuyPyPyJKKK~~ FMMOO j**G*<<==77:$&&3773H+I+IU+R+RWZW^W^_nWoWosvw}s~s~W~W~  DG  DK  DK  LZ  D[  D[  _b  cg  _h  _h  Dh  Dh  mp  mt  mt  uD  mE  mE  IL  MS  IT  IT  mT  mT$*$$#f++VVejkkklll1
Mt444!DJLL$4SbS$99F ~x  ~3v;;Ta,b,b+c  ~eqsvw{s|s|  ~  N  PT  ~  Vc  eh  io  ep  ep  ~  ry  {  ~  AI  KO  ~  QV  XZ  ~  \a  ce  ~  go  qu  ~  wG  IN  ~  P[  ]b  ~  ds  u{  ~  }I  KP  ~  Rg  il  ~  nw  y|  ~  ~H  JM  ~  ^c  x}  ~  ~  ~G(%;;WcRRRF>> IGHHH==Ly"--G\(+J788H7||q   AS(\(\T[(\(\(\%\%\  Aad  eX  eX  PW  eX  eX  eX  bX  bX  A  ]`  ai  ly  ay  ]z  ]z  ~A  ]AH uy!  uZ  u8H=b[[Zb  udy  |A  u  CK  MS  u  U_  ai  u  k}  K  u  M\  ^d  u  fu  w}  u  N  PS  TZ  P[  P[  u  ]k  mp  qu  mv  mv  u  x@  BE  FL  FX  FX  Y`  Fa  Fa  Bb  Bb  u  ds  ux  y  u@  u@  u  BT  V^  u  `g  iu  u  wB  QU  aj  x}  D~  D~  u  @L  NV  NZ  [c  [g  Nh  Nh  Nr  Nr  Nt  Nt  uGtz'aHHH4OZabbb	$*(f(SSbg
h
h
hiii11ar   __main__zIntro blocked: )file)Nr'   )*r   r   ro   r    sysurllib.parser5   urllib.requestr   r   r   r   pathlibr   __file__resolver   rs   r   r   r   re   r   r   r   rc   rg   r   rL   rb   r   r&   r>   r~   r   r   __name__exit	Exceptionexcr   stderr r   r   <module>r      s     				     



           ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-33		/	/	5	5))''	+	+
+
+00&&
 [  % % %# # # #b b b.   !  !  ! H z   %%%CJ7777 s   %B? ?C4%C//C4