
    wDj"                     h   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 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ej                            dd                    ZdZdZdZ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)PathzI/data/video-pipeline/Youtube-Video-Maker/Project/01072026-001-Nha-Tay-SonzD/home/hermes/.hermes/skills/media/gen-img-gpt/scripts/gen_img_gpt.pyzscript/scenes.jsonz$script/character_reference_plan.jsonzimages/sceneszoutput/thumbnailszlogs/step06_images_run.logz logs/step06_images_manifest.jsonSTEP06_WORKERS7a  16:9 horizontal historical storytelling image, centered irregular ink-wash narrative window on warm antique cream paper, painted content occupies only about 65-70 percent of page with 30-35 percent clean antique paper negative space, handcrafted Vietnamese co phong feeling, muted brown black charcoal watercolor wash, not modern, not full-frame glossy digital poster, not fantasy splash art, not 3D game key art, no text, no watermark.z16:9 horizontal light Vietnamese old-calligraphy title-card on warm antique paper, subtle ink wash and small red seal stamp accent, airy text with breathing room, not heavy black title slam, not clean modern typography.zAvoid modern objects, wrong culture, fantasy armor, samurai, character sheet layout, model sheet, multiple views, floating costume parts, text labels, watermark, logo, glossy poster, edge-to-edge full-frame painting.c                 4   t          j        d|           } d                    d | D                       } |                     dd                              dd          } t	          j        dd	|                               d	                                          S )
NNFD c              3   J   K   | ]}t          j        |          d k    |V  dS )MnN)unicodedatacategory).0cs     g/data/video-pipeline/Youtube-Video-Maker/Project/01072026-001-Nha-Tay-Son/scripts_run_step_06_images.py	<genexpr>zslug.<locals>.<genexpr>   s9      /^/^a@TUV@W@WY]@]@]@]@]@]@]/^/^    u   đdu   ĐDz[^a-zA-Z0-9]+-)r   	normalizejoinreplaceresubstriplower)ss    r   slugr      s    E!$$A/^/^1/^/^/^(^(^abcbkbklpqtbubub}b}  C  DG  cH  cH`a6"3q))//44::<<<r   c                      i } t                                           rbt          j        t                               d                                        dg           D ] }t          |d                   | |d         <   !| S )Nutf-8encoding
referencesoutput_pathcharacter_id)PLANexistsjsonloads	read_textgetr   )refsrs     r   	load_refsr-      s    	D{{}} CDNNGN<<==AA,rRR  	C  	CAlpqr  tA  rB  mC  mCTXYZ[iYjTkTkKr   c                 2   t          j        d          | z   }t          |d           t          j                            dd           t                              dd          5 }|                    |dz              d d d            d S # 1 swxY w Y   d S )	Nz%Y-%m-%d %H:%M:%S T)flushparentsexist_okar   r    
)timestrftimeprintLOGparentmkdiropenwrite)msglinefs      r   logr@      s    	+	,	,S	0D%42H2H2H2H#*JZJZcgquJZJvJvJv	#w	'	'@1aggd4i.@.@.@@@@@@@@@@@@@@@@@@@s   &BBBc                    |                                  g }g d}|D ]\  }}|v r|                    |           t          fddD                       r|                    d           t          fddD                       r|                    d           t          fdd	D                       r|                    d
           t          fddD                       r|                    d           t          fddD                       r|                    d           t          fddD                       r|                    d           t          fddD                       r|                    d           t          fddD                       r|                    d           g }|D ]F}|                    |          }|r-|                                r||vr|                    |           G|S )N)
)u   nguyễn nhạcznguyen-nhac)u   nguyễn huệnguyen-hue-quang-trung)zquang trungrB   )u   nguyễn lữz	nguyen-lu)u   nguyễn ánhnguyen-anh-gia-long-tre)zgia longrC   )u   trương phúc loanztruong-phuc-loan)u   lê chiêu thốngzle-chieu-thong)u   lê ngọc hânzcong-chua-le-ngoc-han)u   tôn sĩ nghịquan-thanh-va-ton-si-nghic              3       K   | ]}|v V  	d S N r   xts     r   r   zscene_refs.<locals>.<genexpr>   s'      
X
Xa16
X
X
X
X
X
Xr   )u   chúa nguyễnu   đàng trongu
   phú xuânu   gia địnhzchua-nguyen-cuoi-thoic              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>   s'      
\
\a16
\
\
\
\
\
\r   )u   chúa trịnhu   phủ chúau   đàng ngoàiu   trịnh khảizchua-trinh-phu-chuac              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>   s'      
Q
Qa16
Q
Q
Q
Q
Q
Qr   )u   vua lêu   nhà lêu   lê trung hưngu
   ngai vàngzvua-le-va-trieu-le-trung-hungc              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>   s'      
M
Ma16
M
M
M
M
M
Mr   )u   quân thanhu
   nhà thanhu   sầm nghi đốngrD   c              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>    s'      
O
Oa16
O
O
O
O
O
Or   )u   quân xiêmu   xiêmu   rạch gầmu
   xoài mútz	quan-xiemc              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>!   s'      
a
aa16
a
a
a
a
a
ar   )u	   tây sơnu	   áo vảiu   ngọc hồiu   đống đau   nghĩa quânzquan-tay-sonc              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>"   s'      
l
la16
l
l
l
l
l
lr   )u   dân chúngu
   nông dânu   dân u   ruộngu   thuếu   làngu   người dânzdan-chung-ao-vai-tay-sonc              3       K   | ]}|v V  	d S rF   rG   rH   s     r   r   zscene_refs.<locals>.<genexpr>#   s'      
L
La16
L
L
L
L
L
Lr   )u   sĩ phuu
   quan lạiu	   khoa cửu	   nho họczsi-phu-bac-ha-va-quan-lai)r   appendanyr*   r&   )	textr+   keysmappingtokenkoutprJ   s	           @r   
scene_refsr[      s   
jjllAD e  e  eG & &aA::t{{1~~~

X
X
X
XW
X
X
XXX~Z^ZeZef}Z~Z~Z~

\
\
\
\[
\
\
\\\  A^b^i^ij  _A  _A  _A

Q
Q
Q
QP
Q
Q
QQQSWS^S^_~SSS

M
M
M
ML
M
M
MMMwt{{[vOwOwOw

O
O
O
ON
O
O
OOOiQUQ\Q\]hQiQiQi

a
a
a
a`
a
a
aaa~cgcncno}c~c~c~

l
l
l
lk
l
l
lll  Vnrnyny  {U  oV  oV  oV

L
L
L
LK
L
L
LLLvdkkZuNvNvNv
C < <
((1++;;cjjmmmJr   c           	         |                      d          dk    rt           d| d          dt           S t          |                      dd          dz   |                      dd          z   |          }|rd	nd}t           d
| d          d|                      d          p|                      d           d| dt           	S )Ntypeheadingz>
Vietnamese title card text to depict accurately if possible: 	narrationum   
Subtle Tây Sơn motifs, storm banners, war drums, old citadel and river battle silhouettes, antique paper. r    summaryzUse attached character reference image(s) only to keep identity, age, face, costume language, and temperament consistent. Do not reproduce a reference sheet. z
Historical context: late 18th century Dai Viet, Tay Son uprising and dynasty, Quy Nhon, Phu Xuan, Gia Dinh, Rach Gam - Xoai Mut, Thang Long, Ngoc Hoi - Dong Da, divided Dang Trong and Dang Ngoai.
Narration beat: z
Visual direction: visual_beatvisual_promptr4   zOne cinematic narrative scene, historically grounded Vietnamese clothing, armor, banners, palaces, villages, ports, exam halls, war camps, and atmosphere.
Negative exclusions: )r*   STYLE_HEADINGNEGr[   STYLE_SCENE)scener+   srref_notes       r   
prompt_forrj   )   sp   yy)##  h  h`efq`r  h  h  cf  h  h  	h%))K++C/		)B0G0GGNNB rt  |  n  n  z|H  U  U  sx  yD  sE  U  U  [`  [d  [d  er  [s  [s  [Q  w|  w@  w@  AP  wQ  wQ  U  U  U]  U  U  PS  U  U  Ur   c                 l   t           | d          dz  }|                                rN|                                j        dk    r1| d         dt	          |          |                                j        dS t
          j        t	          t                    dt          | |          dt	          |          dd	d
d	dd	ddddddg}t          | 
                    dd          dz   | 
                    dd          z   |          d d         D ]}|dt	          |          gz  }t          j        |ddd          }|j        dk    r.| d         dt	          |          |j        p|j        dd          dS | d         dt	          |          |                                r|                                j        nddS ) Nscene_idz.png  skipped_exists)rl   statusoutputbytes--prompt--output--sizeauto	--quality--background--image-detailhigh--output-formatpng--n1r_   r   r`   ra      --input-refT  rT   capture_outputtimeoutr   failed0)rl   ro   rp   errorok)
OUT_SCENESr&   statst_sizestrsys
executable
GEN_SCRIPTrj   r[   r*   
subprocessrun
returncodestderrstdout)rg   r+   rY   cmdrefrZ   s         r   run_oner   /   s7   eJ'----C
zz||  ^

*4//E*DU_oy|  ~A  zB  zB  KN  KS  KS  KU  KU  K]  9^  9^  2^	J
:eT3J3J:VYZ]V^V^_ghnoz  |B  CQ  RX  Yi  jp  qB  CH  IN  OR  	SC%))K33C7		)B8O8OOQUVVWYXYWYZ{{\_dqruvyrzrzc{\{\_\_nSd$tDDDA|Q5+<hX[\_X`X`jkjrj~vwv~  AF  AG  AG  jH   I   I  IZ($CgjgqgqgsgsQzQTQYQYQ[Q[QcQcyz{{{r   c                      | dk    rdnd}| dS )N16x9z!16:9 YouTube thumbnail, 1920x1080zFTikTok-safe vertical thumbnail/poster, 1080x1280 preferred compositionu  . Cinematic Vietnamese historical dynasty poster for 'NHÀ TÂY SƠN - CƠN BÃO ÁO VẢI'. Large dramatic Quang Trung on horseback with Tây Sơn storm banners, Ngọc Hồi drums, Rạch Gầm river battle, split old order collapsing, parchment texture, dark sepia bronze black palette, large readable metallic-gold Vietnamese brush lettering over irregular black ink-splash title panel. Historically grounded, not modern, not fantasy, no watermark.rG   )kindaspects     r   thumb_promptr   7   s5    26,,..  EMF  [  [  [  [r   c                    |                                 rH|                                j        dk    r+| dt          |          |                                j        dS t          j        t          t                    dt          |           dt          |          ddddd	dd
dddddg}|                    d          }|r(|                                 r|dt          |          gz  }t          j
        |ddd          }|j        dk    r(| dt          |          |j        p|j        dd          dS | dt          |          |                                 r|                                j        nddS )Nrm   rn   )r   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   rB   r   Tr   r   r   r   r   )r   ro   rp   r   r   )r&   r   r   r   r   r   r   r   r*   r   r   r   r   r   )r   rY   r+   r   rZ   r,   s         r   	gen_thumbr   :   s   
zz||  M

*4//N^hklohphpy|  zB  zB  zD  zD  zL  9M  9M  2M	J
<3E3EjQTUXQYQYZbcijuv|  ~L  MS  Td  ek  l}  ~C  DI  JM  	NC
hh'((A6QXXZZ6s1vv 66nSd$tDDDA|QtXs3xxYZYaYmefemotououXvwwws3xxVYV`V`VbVb@i

@R@Rhijjjr   c                    
 t                               dd           t                              dd           t          j                            dd           t                              dd           t                      t          j        t          
                    d                    d         } g }t          dt          |            dt                      t          j                            t          	          5 

fd
| D             }t          j                            |          D ]}|                                }|                    |           t          d|v r6|d          d|                    d           d|                    d           nt+          |                     	 d d d            n# 1 swxY w Y   g }t-          d |D                       sat          d           dD ]O\  }}t/          |t          |z            }|                    |           t          t+          |                     Pt1          d |D                       r.t          |          dk    rt1          d |D                       rdnd}	t2                              t          j        t6          j        d|	t          t          |           ||ddd          d           t          dt          j        |	t;          d |D                       t          |           t          |          dd          z              |	dk    rt=          d          d S ) NTr0   r   r   r    sceneszSTART step6 scenes=z	 workers=)max_workersc                 J    i | ]}                     t          |          | S rG   )submitr   )r   r   exr+   s     r   
<dictcomp>zmain.<locals>.<dictcomp>F   s+    :::abii$'':::r   rl   ro   r`   z bytes=rq   c              3   .   K   | ]}|d          dk    V  dS )ro   r   NrG   r   r,   s     r   r   zmain.<locals>.<genexpr>J   s+      66q{H$666666r   zSTART thumbnails))r   zthumb_16x9_final.png)9x16zthumb_9x16_final.pngc              3   *   K   | ]}|d          dv V  dS ro   r   rn   NrG   r   s     r   r   zmain.<locals>.<genexpr>N   s,      VVak-DDVVVVVVr   r~   c              3   *   K   | ]}|d          dv V  dS r   rG   r   s     r   r   zmain.<locals>.<genexpr>N   sd        yx  yx  efyz  |D  zE  I`  z`  yx  yx  yx  yx  yx  yxr   	completedneeds_retry   )
project_idstepro   workerstotal_scenesscene_resultsthumbnail_resultsF)ensure_asciiindentzDONE c              3   .   K   | ]}|d          dv dV  dS )ro   r      NrG   r   s     r   r   zmain.<locals>.<genexpr>P   s4      ={={ATUV^T_czTzTzaTzTzTzTz={={r   )ro   scenes_donescenes_totalthumbs)r   )r   r:   
OUT_THUMBSr8   r9   
write_textr-   r'   r(   SCENESr)   r@   lenWORKERS
concurrentfuturesThreadPoolExecutoras_completedresultrR   r*   r   rS   r   allMANIFESTdumpsPROJECTnamesum
SystemExit)r   resultsfutsfutr,   thumb_resultsr   r   trro   r   r+   s             @@r   mainr   B   s   T4000*2B2B4Y]2B2^2^2^`c`j`p`py}  HL`p  aM  aM  aM  OR  O]  O]  ^`  jq  O]  Or  Or  Or	DTZ(8(8'(8(J(JKKHUf_aW^cf  h]  ~A  BH  ~I  ~I  h]  h]  T[  h]  h]  d^  d^  d^			.	.7	.	C	C Qr:::::6:::%22488 	Q 	QCjjllAGNN1---ss}  BC  tC  tCq{4o4oQUU:EVEV4o4o_`_d_del_m_m4o4o4o  IL  MN  IO  IO  0Q  0Q  0Q  0Q	QQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q M66g66666 \Z 	\ 	\IDjod33B]5I5I"5M5M5MsSVWYSZSZ||||VVgVVVVV  K[^_l[m[mop[p[pux  yx  yx  jw  yx  yx  yx  vx  vx[p;;  ~KF
QPVahx{  }C  yD  yD  U\  q~  $  $  MR  Z[  \  \  \  fm  n  n  n
V#={={={={={:{:{  LO  PV  LW  LW  ad  er  as  as  t  t  BG  H  H  H  	H  I  I  I{*]";";;s   B1GG	G	__main__)$concurrent.futuresr   r'   osr   r   r5   r   r   pathlibr   r   r   r   r%   r   r   r8   r   intenvironr*   r   rf   rd   re   r   r-   r@   r[   rj   r   r   r   r   __name__rG   r   r   <module>r      s   K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K      XYY4VWW
##'2X*XT?"
w7J/JJPWXtPtC  @G  Hj  @jv~BJNN+C0011 C l _= = =  
A A A  $U U U| | |[ [ [k k k< < <  Zr   