
    Sj5                     d   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
Zd dlmZ  ed          ZdZdZdZ ed          Z ed          Zd	Zd
ZdZdZdZdZedz  Zej                            dd           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)Pathzf/data/video-pipeline/Channel-Loi-Co-Nhan/project/212-Giu-mot-loi-that-luc-kho-hon-tram-loi-hay-luc-yenz0http://192.168.40.11:20128/v1/images/generationsz,http://192.168.40.32:7861/voice/truong-giang
doc_truyenzX/data/video-pipeline/Channel-Loi-Co-Nhan/data/bgm/paulyudin-sentimental-story-182512.mp3zD/data/video-pipeline/Channel-Loi-Co-Nhan/data/logo/logoloiconhan.png      z0.88   g      ?g      @zlogs/complete_short_project.logTparentsexist_okc                     t          j        d          | z   }t          |d           t                              dd          5 }|                    |dz              d d d            d S # 1 swxY w Y   d S )Nz%F %T T)flushautf-8encoding
)timestrftimeprintLOGopenwrite)slinefs      ]project/212-Giu-mot-loi-that-luc-kho-hon-tram-loi-hay-luc-yen/scripts_step03_04_assets_tts.pylogr      s    	x	 	 	"D	$d	#w	'	'@1aggd4i.@.@.@@@@@@@@@@@@@@@@@@@s   A++A/2A/c                     t          d          } |                                 r|                                                                 D ]}|                    d          rt
          j                            d          sa|                    dd          d         	                                	                    d          	                    d          t
          j        d<   d S d S )Nz/home/hermes/.hermes/.envzGEN_IMG_API_KEY=GEN_IMG_API_KEY=r   "')
r   exists	read_text
splitlines
startswithosenvirongetsplitstrip)pr   s     r   load_envr,      s    
&''Axxzz aKKMM,,.. 	a 	aD122 a2:>>J[;\;\ a.2jjQ.?.?.B.H.H.J.J.P.PQT.U.U.[.[\_.`.`
,-a a	a 	a    c           	          t          dd                    t          t          |                     z              t	          j        t          t          t          |                                d S )NzRUN  )r   joinmapstr
subprocess
check_calllist)cmds    r   runr7       sP    sxxC%%%&&&$s3s||,,-----r-   c                     t          j        dddddddt          |           gd	                                          }t	          |          S )
Nffprobez-verrorz-show_entrieszformat=durationz-ofzdefault=nw=1:nk=1T)text)r3   check_outputr2   r*   float)r+   outs     r   durr?   $   sg    4HYZ_`stwxytztz {  BF  	G  	G  	G  	M  	M  	O  	OC::r-   c           	      0   t                       t          j        d         }|j                            dd           |                                r|                                j        dk    r'	 d| ddd}t          j	        
                    t          t          j        |                                          d	|z   d
dd          }t          j	                            |d          5 }t          j        |                                                    dd                    }d d d            n# 1 swxY w Y   |d         d                             d          }|                    d          r|                    dd          d         }|                    d          }|                    t1          j        |                     |                    |           t7          d|            no# t8          $ rb}	t7          d|j         dt=          |	          j         d|	            dtA          |	          v rdnd}
tC          j"        |
           Y d }	~	nd }	~	ww xY w|                                |                                j        dk    %d S d S )Nr   Tr   r   cx/gpt-5.5-image	1024x1792r   )modelpromptsizenzBearer zapplication/json)AuthorizationContent-TypePOSTdataheadersmethodiX  timeoutr   ignorerK   b64_jsonzdata:,.tmpzDONE image zRETRY image : r/   zHTTP Error 502   )#r,   r&   r'   parentmkdirr"   statst_sizeurllibrequestRequestIMG_URLjsondumpsencodeurlopenloadsreaddecoder(   r%   r)   with_suffixwrite_bytesbase64	b64decodereplacer   	Exceptionnametype__name__r2   r   sleep)rD   r>   keybodyreqrpayloadbtmpedelays              r   	gen_imagerx   (   s   JJJBJ013:3C3CDZ^3C3_3_3_jjll chhjj0!33	,fKTUVVD&&wDJt4D4D4K4K4M4Mgpqtgt  EW  WX  WX  `f&  g  gC''C'88tAtzRSRXRXRZRZRaRabijrRsRsGtGtwtttttttttttttttfoa $$Z00A||G$$9Aq(9a''C9I!9L9L)M)M)Ms{{[^O_O_O_#c##$$$$ 	 	 	AsxAA477+;AAaAABBB)SVV33AAEJu		 jjll chhjj0!333333s?   0A:G2 *;D1%G2 1D55G2 8D59B8G2 2
I<AIIc           
      V   dt          j                    j        z   }g }|                                 D ]6\  }}|                    d| d| d| d                                           7|                    d| d                                           |d                    |          fS )Nz----TruongGiangVoiceBoundaryz--z(
Content-Disposition: form-data; name="z"

z
z--
r-   )uuiduuid4hexitemsappendr`   r0   )fieldsboundarychunkskvs        r   	multipartr   9   s    +DJLL,<<HRf||~~  D  D!v}}-y(-y-yfg-y-yrs-y-y-y  .A  .A  .C  .C   D   D   D   D
MM'x'''..00111(388FCSCS:S3Sr-   c                 <   t          | d                   }|j                            dd           |                                r1|                                j        dk    rt          d|            d S t          j        dd| d                   	                                }d	}|                                r|                                j        dk     r|d
z  }	 |t          d}t          |          \  }}t          j                            t          |dd|z   id          }t          j                            |d          5 }|                                }	d d d            n# 1 swxY w Y   |                    d          }
|
                    |	           |	d d         dk    rd|	d d         v st)          |	d d                   |
                    |           t          d|            no# t,          $ rb}t          d| d          d| dt/          |          j         d|            t3          j        t7          d|z  d                     Y d }~nd }~ww xY w|                                |                                j        dk     d S d S )N
audio_pathTr     zSKIP existing tts u   \s*[:;\-–—]\s*z, r;   r   r   )r;   stylerH   zmultipart/form-data; boundary=rI   rJ      rN   rS      s   RIFFs   WAVE   P   z	DONE tts z
RETRY tts idz	 attempt rT   r/   rU   )r   rV   rW   r"   rX   rY   r   resubr*   	TTS_STYLEr   rZ   r[   r\   TTS_URLra   rc   re   rf   RuntimeErrorri   rj   rl   rm   r   rn   min)itemr>   r;   attemptr   r   rp   rq   rr   blobru   rv   s               r   tts_oner   >   s   T,  C#*"2"24"2"N"N"N
zz|| 

*4//&&&'''	%tT&\	:	:	@	@	B	BDGjjll vchhjj055

	v	22F#F++MHT&&wD.QqrzQzA{  DJ&  K  KC''C'88LAAFFHHtLLLLLLLLLLLLLLL''C)>)>)>!Hg%%'T#2#Y*>*>|TXY\Z\Y\T]G^G^A^KK!C!!"""" 	v 	v 	vST$ZSS'SST!WW=MSSPQSSTTTVZV`adeghoeopsatatVuVuVuVuVuVuVuVu	v jjll vchhjj0555555s?   A*G8 	E*G8 *E..G8 1E.2BG8 8
I$AII$c                     t          t          | dz                      }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dd|dd|dd|dS )Nr   i6 i`  02:rR   03)intround)secmshmr   s        r   srt_timer   S   s    
5T??Br7{QBKB2u9b%ibSUW[S[QR]_ae]e]_***Q***A***2****r-   c                    3 t                               dd           t          j        t          dz                      d                    } g d}dt          | d                   dz  t          | d                   d	z
  g}|D ]}| d         |         }|                    d
          pd33fd|D             }|r(t          d|                    d           d|           t          dt          j
        |                    d          ddd	3d d         dd          z              g }| d         D ]t}t          dz  |d         dz   z  }|                    |                    d
          p1|                    d          p|                    d          p|d         |f           ut          j                            t                    5 }t!          |                    d |                     d d d            n# 1 swxY w Y   t          dz  }	|                     d          p)|                     di                               dd          }
|                     di                               d           p|
}|                     di                               d!d"          }d#| d$| d%}t%          ||	           g }| d         D ]G}|d         }|d         }|                    |||t'          t          d&z  |z  d'z            d(           Ht          d&z                      d)d)*           t          d+z                      t          j
        d,|idd-          d           t          j                            t*                    5 }t!          |                    t,          |                     d d d            n# 1 swxY w Y   t          d.           d S )/N r   r   zscript/scenes.json)u   cổ phong giấy vàngzaged parchmentzink-washzNegative prompt:zno modern objectszno textr   scenes   r   image_promptc                     g | ]}|v|	S  r   ).0termrD   s     r   
<listcomp>zmain.<locals>.<listcomp>`   s#    PPPDT=O=O4=O=O=Or-   z"image_prompt preflight failed for scene_idz
: missing zPREFLIGHT image payload rA   rB   i  )r   rC   rE   rF   rD   F)ensure_asciizimages/scenesz.pngvisual_promptvisual_beat	narration)max_workersc                     t          |  S )N)rx   )jobs    r   <lambda>zmain.<locals>.<lambda>j   s
    	3 r-   z&output/thumbnails/thumb_9x16_final.pngtitlemetadatatopic_sentencethumbnail_symbolzancient Vietnamese family hearth glowing warmly, two modest bowls placed together, bamboo screen and oil lamp, husband and wife standing in quiet reconciliationu   Vertical 9:16 thumbnail, cổ phong giấy vàng, aged yellow parchment, ink-wash cinematic Vietnamese moral story poster. Large readable Vietnamese brush title: z. Symbolic scene: z, sepia bronze gold accents, mobile-safe composition, dignified, no modern neon, no horizontal layout, no text artifacts except the title.zaudio/voice_segmentszseg_001.wav)r   r   r;   r   Tr   z1audio/voice_segments/voice_segments_manifest.jsonr}   )r   indentzaSTOP after Step 03 and Step 04; master narration composition runs separately on the media worker.)(r   
write_textr^   rb   PROJECTr#   lenr(   r   r   r_   r~   
concurrentfuturesThreadPoolExecutorWORKERSr5   r1   rx   r2   rW   TTS_WORKERSr   r7   SCENE_PAUSE_SEC	enumerater   r?   r   r0   rV   r*   unlinkr   SUB_FONT_SIZELOGOINTRO_PAUSE_SECBGMrk   	TTS_SPEED)4rK   required_prompt_termssample_indicesidxscmissing
image_jobsr>   exthumbr   topicthumb_symbolthumb_promptr}   sidr;   concatlinestimelinetsrt	cue_debugcue_idxsilenceword_chunksitapdvisual_dr   stepcitxtcscemaster
intro_textintro_audioseglistsegtxtmainvfcintropauselistpru   final	concat_fcmix_fcinforD   s4                                                      @r   mainr   W   s   NN2wN'''	W11<<g<NN	O	OD J  J  JT(^,,a/T(^1D1DQ1FGN { {(^C ''-2PPPP$9PPP 	mkBFF:DVDVkkbikklll&tzrvvj?Q?Q\n  yD  KL  X^  _c  `c  _c  Xd  3e  3e  ty  (z  (z  (z  z  	{  	{  	{  	{J8n @ @O#R
^F%:;266.11xRVVO5L5LxPRPVPVWdPePexiklwixz}~			.	.7	.	C	C >rRVV//<<===> > > > > > > > > > > > > > >
:
:E
((7


Ftxx
266::72FFE
((:b
!
!
%
%&6
7
7
@5E88J++//0B  Eg  h  hL h  w|  h  h  P\  h  h  hLlE"""
E8n  zNKD3#Ts7SiKijmKmn{K{G|G|}}~~~~##**4*FFF@@LLTZY`afXguz  CD  NE  NE  NE  OVL  W  W  W			.	.;	.	G	Gk2tTVTZTZ[bdiTjTjOkOkOkkkkkkkkkkkkkkkkklll
Fs$   %HHH)OOO__main__)'rg   concurrent.futuresr   r^   	mimetypesr&   r   r3   r   rz   urllib.requestrZ   pathlibr   r   r]   r   r   r   r   r   r   r   r   r   r   r   rV   rW   r   r,   r7   r?   rx   r   r   r   r   rm   r   r-   r   <module>r      s   b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b      
$w
x
x:6
	D	cdd	T
PQQ	
	-- 
    - - -A A A
a a a. . .    "T T T
v v v*+ + +n  n  n ^ Zr-   