
    o0j~                         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dZd	Zh d
Zh dZd Zd Zd Zd Zedk    r e             dS dS )    N)PathzF/data/video-pipeline/Youtube-Video-Maker/Project/15062026-001-Nha-TranzD/home/hermes/.hermes/skills/media/gen-img-gpt/scripts/gen_img_gpt.pyz$script/character_reference_plan.jsonz"logs/step05_character_refs_run.logz(logs/step05_character_refs_manifest.jsonzNo modern objects, no fantasy armor, no Chinese opera costume, no Qing/Ming palace drift, no European medieval armor, no Japanese samurai look, no text labels, no watermark, no vertical portrait canvas, no square canvas.uN  16:9 horizontal landscape character reference concept sheet on warm antique parchment, 13th-century Đại Việt / Nhà Trần Vietnam, sepia brown ochre charcoal ink wash, handcrafted Vietnamese co phong historical feeling, controlled face/full-body/costume details for identity locking, clean negative space, historically grounded.>      Trần Nhân Tông   Trần Thủ Độ"   Trần Thái Tông / Trần Cảnh*   Trần Hưng Đạo / Trần Quốc Tuấn>      Chu Văn An   Hồ Quý Ly   Trần Khánh Dư   Trần Thánh Tông   Trần Quốc Toản&   Quân dân Đại Việt thời Trần,   Trần Quang Khải và Trần Nhật Duật.   Quân Nguyên Mông / Thoát Hoan / Ô Mã Nhic                 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     %scripts_run_step_05_character_refs.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                 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autf-8encoding
)timestrftimeprintLOGparentmkdiropenwrite)msglinefs      r   logr=      s    	+	,	,S	0D%D2I2I2I2I3:K[K[dhswK[KxKxKx	#w	'	'@1aggd4i.@.@.@@@@@@@@@@@@@@@@@@@s   &BBBc                  R   t          j        t          dz                      d                    } g }| d         D ]}|d         }t	          |          }|t
          v rdn|t          v rdnd}|                    |||t          t          d	| d
z            d|d          d|d          d|d          d|d          d|d          d|d          d|d          d           t          j	        dd|ddddd}t                              t          j        |dd !          d           |S )"Nzscript/character_bible.jsonr.   r/   
charactersnamerequiredrecommendedoptionalzcharacters/z_ref.pngpendingz: rolez. Appearance: 
appearancez. Costume: costumez. Temperament: temperamentz. Context: historical_cultural_contextz. Negative: negative_notes)character_idr@   priorityoutput_pathstatusprompt   in_progressFTzZUser approved continuing to final; refs are treated as workflow-approved after generation.required_refs_existapproved_for_scene_generationapproval_note)
project_idsteprN   
references
validation   ensure_asciiindent)jsonloadsPROJECT	read_textr'   REQUIREDRECOMMENDEDappendstrr@   PLAN
write_textdumps)biblerefsr   r@   cidprplans          r   
build_planrn      s.   
*g;;FFPWFXX
Y
YE	D<  Z ZvYDJJ9I9I::`dhs`s`s}}  zDCtrPST[\wjm\w\w\wTwPxPx  CL  YZ  [a  Yb  VX  VX  fg  hn  fo  VX  VX  @  AM  N  VX  VX  [\  ]f  [g  VX  VX  xy  zG  xH  VX  VX  UV  Wt  Uu  VX  VX  CD  EU  CV  VX  VX  Y  Y  	Z  	Z  	Z  	Z|1mQUz  ae  vR  dS  dS  
T  
TDOODJta@@@'ORRRKr   c                     t                               dd           t                                          r-t	          j        t                              d                    nt                      } d| vrt                      } |                     ddddd	           | d         D ](}|d
         dvrt          |d                   }|j
                            dd           |                                r<|                                j        dk    rd|d<   t          d|d          d           t           d|d          dt            }t          d|d          d|            t"          j        t'          t(                    d|dt'          |          dddddddd d!d"d#d$g}d}t+          d%d&          D ]}t-          j        |ddd'(          }|j        d)k    rZd*|d<   |                                r|                                j        nd)|d+<   t          d,|d          d-|d+                      nM|j        p|j        d.d          }d/|v sd0|                                v sd1|v rt9          j        d2|z              |                    d          d*k    r0d3|d<   ||d4<   t          d5|d         z   d6z   |d4         z               n*d7 | d         D             }t?          d8 |D                       | d         d9<   | d         d9         rd:nd;| d<   t                              t	          j         | dd<=          d           tB                              t	          j         tD          j#        d>| d         t'          t                    | d         d?dd<=          d           t          d@t	          j         | d         tI          | d                   dAdB          z              d S )CNr   r.   r/   rX   rY   FTz>User approved continuing to step 6 after reference generation.rR   rL   )rA   rB   rM   r*   i  existsrN   zSKIP rK   z existsz)

Create a character reference sheet for rO   u   . Include consistent identity, face close-up, full-body view, costume/armor/material details, historically grounded 13th-century Đại Việt / Nhà Trần visual culture.

Negative exclusions: z	GENERATE z -> z--promptz--outputz--sizeautoz	--qualityz--backgroundz--image-detailhighz--output-formatpngz--n1      i  )textcapture_outputtimeoutr   	generatedbyteszOK z bytes=i0429zusage limitzToo Many Requests   failederrorzFAILED  c                 *    g | ]}|d          dk    |S )rL   rA    r   rs     r   
<listcomp>zmain.<locals>.<listcomp>5   s&    DDDq!J-*C*C*C*C*Cr   c              3   d   K   | ]+}t          |d                                                    V  ,dS )rM   N)r   rp   r   s     r   r   zmain.<locals>.<genexpr>6   s<      1_1_VW$q7G2H2H2O2O2Q2Q1_1_1_1_1_1_r   rS   rT   rQ   rZ   r[   rP   )rV   rW   rN   	plan_pathrj   zDONE )rN   rj   )r\   )%r5   rg   rf   rp   r^   r_   ra   rn   
setdefaultr   r6   r7   statst_sizer=   STYLEBASE_NEGsys
executablere   
GEN_SCRIPTrange
subprocessrun
returncodestderrstdoutr%   r2   sleepgetallrh   MANIFESTr`   r@   len)	rm   refoutrO   cmdlast_errattemptpreqs	            r   mainr      s   NN2wN'''9=	XDNNGN44	5	5	5JLLD4jllOOL%bf  zz  #{  #{  |  |  |L! v vz?"<<<h]#$$cj&6&6tT&6&R&R&R::<< 	XCHHJJ.t33"CMC(LN0C(L(L(L$M$M$Mx  c  cCM  c  c  Ya  c  c6N+6666777^C
OOJvjSRZ[abmnt  vD  EK  L\  ]c  du  v{  |A  BE  FQqzz 	 	GnSd$sKKKA|Q)Hcjjll8a

8J8J`a3w<cf  hXmpq  nA  hX  hX  JM  NU  JV  hX  hX  dY  dY  dY  [`  [`h*!(EFF3H  MX^^5E5E$E$EI\`hIhIh
2g:&&&778k))"CMCL3y^I\?\]`?`adelam?m;n;n;npupu *DDD&DDDC.11_1_[^1_1_1_._._D,-6:<6HI^6_r22erDNOODJta@@@'ORRR
QPTU]P^knosktkt  }A  BN  }O  $P  $P  ^c  kl  m  m  m  w~      
T(^3tL?Q;R;RSSafgggghhhhhr   __main__)r^   r   r   r2   r"   r   pathlibr   r`   r   rf   r5   r   r   r   rb   rc   r'   r=   rn   r   __name__r   r   r   <module>r      s;   3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3      
$W
X
XTXYY
7744?? j 	Y I  I  I w  w  w= = =A A A  i i i> Zr   