
    ^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  ee                                          j        d         ZdZdZd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edk    r e             dS dS )    N)Path   zhttp://192.168.40.33:7862zngoc-huyen-vbeeu   Các bạn đang nghe truyện được phát từ Gác Mái 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 like video và đăng ký kênh.zaudio/intro-voice.wavzaudio/intro-silence-2s.wavzaudio/intro-full.wavzlog/intro-audio.jsonc                    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/build-intro-audio.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)pathdigestblockr	   s      @r
   r   r      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,sizez<stream=codec_type,codec_name,sample_rate,channels,sample_fmtz-ofjsonT)capture_outputtextcheck)
subprocessrunstrr   loadsstdout)r   results     r
   prober#      sz    ^	D'?4JO  ^\  ^c  ek  mp  qu  mv  mv  	w	  F :fm$$$r   c                 d   |                      d                              d          d d         dk    s4|                      d                              d          dd         dk    rt          d|            t          |           }d |                    d	g           D             }d
 |                    d	g           D             }t          |                    di                               dd                    }t          |          dk    s|s|dk    rt          d|            ||fS )Nr         s   RIFF   s   WAVEzinvalid RIFF/WAVE: c                 D    g | ]}|                     d           dk    |S )
codec_typeaudioget.0rows     r
   
<listcomp>zverify.<locals>.<listcomp>-   /    XXXSsww|7L7LPW7W7WS7W7W7Wr   streamsc                 D    g | ]}|                     d           dk    |S )r)   videor+   r-   s     r
   r0   zverify.<locals>.<listcomp>.   r1   r   formatdurationr   r   zinvalid audio stream/duration: )r   r   RuntimeErrorr#   r,   floatlen)r   infor*   r4   r6   s        r
   verifyr;   )   s%   yyB#w..$))D//2F2Fr2J2J1R42PT[2[2[777888;;DXXDHHY33XXXEXXDHHY33XXXETXXh++//
A>>??H
5zzQ%8q==CTCCDDD>r   c                     |                      | j        dz             }|                    t          j        |dd          dz   d           t          j        ||            d S )Nz.partF   )ensure_asciiindent
utf-8encoding)with_suffixsuffix
write_textr   dumpsosreplace)r   valueparts      r
   atomic_jsonrL   5   sa    DK'122DOODJu5CCCdJU\O]]]JtTr   c            
         t          j        t          dz                      d                    } |                     di                               d          dk    rt          d          t          d t          t          t          t          fD                       rt          d	          t          j                            t          d
z   d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          j                            t          dz   d          5 }t          j        |                              dg           }d d d            n# 1 swxY w Y   t!          d |D             d           }|                    d          dk    s0|r.|                    d          dus|                    d          durt          d          t                              d          }t          j                            t          dz   t          j                            t*          t,          d                              d          ddid          }d }t1          dd          D ]"}	 t          j                            |d          5 }|                    d           5 }		 |                    d!          }
|
sn|	                    |
           .	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t9          |           t;          j        |t                      na# t>          $ rR}|}|                                 r|!                                 |d"k     rtE          j#        d#|z             Y d }~d }~ww xY w|t9          t                    \  }}tI          j        tK          t                    d$          5 }|&                                }|j'        d%k    rt          d&          |(                    |)                                          }d d d            n# 1 swxY w Y   |j*        d#z  }tI          j        tK          t                    d           5 }|+                    |j,        |j-        |j*        ||j'        |j.        f           |/                    d'|z  |j,        z  |j-        z             d d d            n# 1 swxY w Y   tI          j        tK          t                    d           5 }|+                    |j,        |j-        |j*        d(|j'        |j.        f           |/                    |           |/                    d'|z  |j,        z  |j-        z             d d d            n# 1 swxY w Y   t9          t                    \  }}t9          t                    \  }}ta          |d)z
            d*k    sta          ||z
  d)z
            d+k    rt          d,          tb          j1        2                    tb          j3        j4                  5                                }i ddd-dd.d/d0t          d1dd2t,          d3d4d2gd5t*          d6tm          j7        t*                              d                    8                                d7tK          t          9                    t                              d8to          t                    d9|d:tK          t          9                    t                              d;to          t                    d<|d=tK          t          9                    t                              d>to          t                    |||||d?}tu          t          |           | d@         ;                    tK          t          9                    t                              tK          t          9                    t                              tK          t          9                    t                              tK          t          9                    t                              dA           ddtK          t          9                    t                              |d>         ||dB| dC<   || dD<   tu          t          dz  |            ty          t          j=        d|||d>         dEdFG                     d S )HNzscript/project-manifest.jsonrA   rB   stepstts	completedz1narration TTS must be terminal before intro voicec              3   >   K   | ]}|                                 V  d S )N)exists)r.   r   s     r
   	<genexpr>zmain.<locals>.<genexpr>?   s*      
T
TT4;;==
T
T
T
T
T
Tr   z"intro audio outputs must be virginz/health   )timeoutz/voicesvoicesc              3   V   K   | ]$}|                     d           t          k     |V  %dS )idN)r,   VOICEr-   s     r
   rS   zmain.<locals>.<genexpr>E   s6      FFcswwt}}/E/Ec/E/E/E/EFFr   statusokmodel_existsTconfig_existszTTS preflight failedz	.wav.partz/tts)r   voicezContent-Typez!application/x-www-form-urlencodedPOST)dataheadersmethodr   r&   i,  wbi      r=   r   NONEz#intro voice is not uncompressed PCM    r   g       @g-C6?gMbP?z+intro silence/full duration relation failedverifiedproviderzpiper-wrapperbase_urlendpointr^   request_fieldsr   
intro_textintro_text_sha256
voice_pathvoice_sha256voice_duration_secondssilence_pathsilence_sha256silence_duration_secondsintro_full_pathintro_full_sha256)intro_full_duration_secondsvoice_probesilence_probeintro_full_probecompleted_atactive_paths)intro_voiceintro_silenceintro_audiointro_audio_receipt)rZ   rg   receiptartifact_sha256duration_secondsrz   r~   
updated_at)rZ   voice_durationfull_durationr   F)r>   )>r   r    ROOT	read_textr,   r7   any
VOICE_PATHSILENCE_PATH	FULL_PATHRECEIPTurllibrequesturlopenBASEloadnextrD   Requestparse	urlencodeTEXTrY   encoderanger   r   writer;   rH   rI   	ExceptionrR   unlinktimesleepwaver   	getparamscomptype
readframes
getnframes	framerate	setparams	nchannels	sampwidthcompnamewriteframesabsdatetimenowtimezoneutc	isoformatr   r   r   relative_torL   r   printrG   )projectresponsehealthrV   	voice_rowrK   r   
last_errorattemptr	   r   excrw   r   sourceparamsvoice_framessilence_framessilencefullrx   silence_duration
full_prober   r   r   s                             r
   mainr   ;   s
   j$!??JJT[J\\]]G{{7B##E**k99NOOO

T
Tj,	7%S
T
T
TTT A?@@@			y 0"		=	= %8$$% % % % % % % % % % % % % % %			y 0"		=	= 78$$((2667 7 7 7 7 7 7 7 7 7 7 7 7 7 7FFVFFFMMIzz(t##9#	n8U8U]a8a8aenerer  tC  fD  fD  LP  fP  fP1222!!+..Dn$$v\##TE$B$BCCJJ7SS!DE	 %  G JA;;  	)'''== (499UY?? (^d($MM+66E  LL'''	( 	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 4LLLJtZ(((E 	) 	) 	)J{{}} {{
1<(((	) "("4"4K	3z??D	)	) >V!!##?f$$DEEE(():):)<)<==	> > > > > > > > > > > > > > >
 %)N	3|$$d	+	+ \w6+V-=v?OQ_agaprx  sB  C  	D  	D  	DGn4v7GG&JZZ[[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
3y>>4	(	( YD(&*:F<LaQWQ`bhbqrsss&&&>1F4DDvGWWXXXY Y Y Y Y Y Y Y Y Y Y Y Y Y Y
 '-\&:&:#M# &y 1 1J
c!""V++s=>3QTW3W/X/X[`/`/`HIII



 1 5
6
6
@
@
B
BC+D 	O 	D	
 	F 	 	67+ 	d 	W^DKK,@,@AAKKMM 	c*006677 	z** 	!. 	L44T::;; 	&.. 	#$4  	3y44T::;;!" 	VI..#$ (5"&&-  G0 !!!N""3z7M7Md7S7S3T3Tgjkw  lD  lD  EI  lJ  lJ  hK  hK  \_  `i  `u  `u  vz  `{  `{  \|  \|  UX  Y`  Yl  Yl  mq  Yr  Yr  Us  Us  $t  $t  u  u  u(3RUV]ViVijnVoVoRpRp  FM  Na  Fb  xE  WZ  [  [GMGL55w???	$*~`m  zA  BU  zV  W  W  fk  l  l  l  m  m  m  m  ms   C77C;>C;+)E  E$'E$7!L8L.0K+L+K//L2K/3L6L8L	L8	L	
,L88
NANNAP99P= P=5ASS"%S"A2VVV__main__)r   r   r   rH   r   r   urllib.parser   urllib.requestr   pathlibr   __file__resolveparentsr   r   rY   r   r   r   r   r   r   r#   r;   rL   r   __name__ r   r
   <module>r      sF      				                    tH~~'*" X++
22))	
'
'  % % %	 	 	  [m [m [m| zDFFFFF r   