
    Fk_jB%                        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dZdZd	 Zd
 Zd Z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image/image-brief.jsonzlog/image-generation.jsonz0http://192.168.40.11:20128/v1/images/generationszcx/gpt-5.5-imagec                 N    t          j        |                                           S )N)hashlibsha256	hexdigest)datas    script/generate-images.py	sha_bytesr      s    >$))+++    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   r   <lambda>zsha_file.<locals>.<lambda>   s    &++o">"> r   r   )r   r	   openiterupdater
   )pathdigestblockr   s      @r   sha_filer      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'c                     t           j                            d          rt           j        d         S t          j                    dz  t          j                    dz  t          j                    dz  g} | D ]}|                                s|                    dd                                          D ]n}|                                	                    d          rE|
                    d	d
          d
                                                             d          c c S ot          j                    dz  }|                                ri }d}|                    dd                                          D ]}|r3|d                                         s|                                dk    }7|rld|v rh|                                
                    dd
          \  }}|                                                    d                              d          ||<   |                    dd                              d          dk    r|                    d          r|d         S t          d          )NIMAGE_API_KEYz .config/huyen-an-audio/image.envz.config/image-api.envz.envutf-8ignore)encodingerrorszIMAGE_API_KEY==r   z"'z.hermes/config.yamlFr   zmodel::"'base_url /zhttp://192.168.40.11:20128/v1api_keyzIMAGE_API_KEY is unavailable)osenvirongetr   homeexists	read_text
splitlinesstrip
startswithsplitisspacerstripRuntimeError)
candidatesr   rawconfigmodelin_modelkeyvalues           r   find_keyr>      s^   	z~~o&& +z/**)++ BBDIKKRiDikoktkvkvyk  AJ A A{{}} 	>>78>DDOOQQ 	A 	ACyy{{%%&677 Ayya((+113399%@@@@@@@A	A Y[[00F}} $##WX#FFQQSS 	A 	AC 3q6>>++ 99;;(2 AC3JJ YY[[..sA66
U"[[]]0055;;C@@c
99Z$$++C004SSSX]XaXabkXlXlS##
5
6
66r   c                    t          | t                    r|                                 D ]\  }}|dv r@t          |t                    r+t	          |          dk    r|                    d|f           I|dk    rBt          |t                    r-|                    d          r|                    d|f           t          ||           d S t          | t                    r| D ]}t          ||           d S d S )N>   imageb64_jsoni  base64url)zhttp://zhttps://)	
isinstancedictitemsstrlenappendr2   collectlist)objfoundr<   r=   s       r   rJ   rJ   9   s   #t 
"))++ 	& 	&JC+++
5#0F0F+3u::X\K\K\h.////*UC"8"8U=M=MNe=f=feU^,,,,u%%%%	& 	& 
C		 " 	" 	"EE5!!!!" "	" 	"r   c                    g }d}|                      dd                                          D ]z}|                    d          s|dd                                          }|r|dk    r=|dz  }	 t	          t          j        |          |           f# t
          j        $ r Y ww xY w|s4	 t	          t          j        |           |           n# t          $ r Y nw xY w|st          d	          |d
         \  }}|dk    rt          j        |          |fS t          j                            |d          5 }|                                |fcd d d            S # 1 swxY w Y   d S )Nr   r   replace)r!   zdata:   z[DONE]r   z)Image provider response contains no imagerB      timeout)decoder0   r2   r1   rJ   jsonloadsJSONDecodeError	Exceptionr6   rB   	b64decodeurllibrequesturlopenr   )r   rM   eventsr8   payloadkindr=   responses           r   parse_responserb   G   s   EF{{79{55@@BB 
 
~~g&& 	abb'--// 	'X--!	DJw''////# 	 	 	D	 	DJt$$e,,,, 	 	 	D	 HFGGG)KD%x&&..			s		3	3 'x}}&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   1"BB&%B&,"C 
CC8EE"Ec                    |d         |          }d                     |d                   }| dk    rdnd}| dk    rdnd	}| dk    r!d
}d|d          d|d          d|d          d}n+| dk    r!d
}d|d          d|d          d|d          d}nd}d}d| d|d          d| d|d          d|d          dd                     |d                    d|z   d | d!| d"z   S )#Nassetsz | required_textintro_posterzhorizontal 16:9vertical
left_paneltwothreezyUse exactly one fictional adult Asian woman and one fictional adult Asian man. No second woman, crowd or romantic rival. zWorld: worldz Protagonist: protagonistz Love interest: love_interestz. right_panelzNNo people, faces, silhouettes, characters, props, setting or narrative scene. zThis asset is abstract channel branding only; do not inherit story world, cast, cinema, key, ticket, chair or projector motifs. zPremium cinematic z_ artwork for a completely fictional Chinese-style Vietnamese romance audio drama. Composition: composition z	Palette: palettez. Reveal limit: reveal_limitz. Negative constraints: z; negative_constraintsa  Keep the visible emotional focus on an adult woman setting a boundary and a man respecting her space; do not imply coercion, a triangle, investigation or mystery. Typography must be rendered directly by the image provider as part of this same artwork; no blank text area and no separate text layer. Let typography flow naturally, never cover eyes or faces, and keep every required block fully visible, readable and uncropped. Render exactly these zK Vietnamese text blocks with every accent preserved and without rewriting: a  . ABSOLUTE TEXT RULE: the required blocks are the only readable or letter-like characters anywhere. Every prop, surface and decorative element must contain no other letters, numbers, signatures, pseudo-text or glyphs. No watermark, QR code, real logo or extra caption.)join)assetbriefspecexactorientation
text_count	cast_rulecontexts           r   
prompt_forr}   c   s   ?5!DJJtO,--E','>'>##JK<//WJ P	zE'Nzz%:Nzz`efu`vzzz	-		 P	zE'Nzz%:Nzz`efu`vzzzd	 U	N[ 	N 	N]+	N 	N.5	N 	N@Ei@P	N 	Nbghvbw	N 	N!%51G+H!I!I	N 	N 	N 		= !+	= 	= x}	= 	= 	=	
	=r   c                     t                                           st          d          t          j        t                               d                    } |                     d          dus|                     d          st          d          t                      }dd	d
d}i }t          	                                rlt          j        t                              d                    }|                    d          | d         k    r d |                    dg           D             }g }|
                                D ]\  }}t          dz  |z  }t          ||           }	t          |	                    d                    }
|                    |i           }|	                                rl|                    d          du rU|                    d          |
k    r<|                    d          t          |          k    r|                    |           t"          |	ddddddd}d }t%          dd          D ]}	 t&          j                            t,          t          j        |d                              d          ddd|z   dd          }t&          j                            |d !          5 }|                                }d d d            n# 1 swxY w Y   t5          |          \  }}t7          |          d"k     s|                    d#          st          d$          |                    d%          }|                    |           t?          j         ||           || d         t"          t,          |
tC          |"                    t                              |#                                j$        t          |          ||dddd&}|                    |            nX# tJ          $ r7}tC          |          }|d'k     rtM          j'        d(|z             Y d }~d }~ww xY wt          | d)|           t          j(        )                    dd*           t          *                    t          j        dd| d         |tW          j,        tZ          j.                  /                                d+dd(,          d-z   d           ta          t          j        |dtC          |          d.d          d/           dt7          |          d'k    otc          d0 |D                       | d         d|tW          j,        tZ          j.                  /                                d1}t          *                    t          j        |dd(,          d-z   d           ta          t          j        |d         t7          |          d2d                     |d         rd3ndS )4Nzverified image brief missingr   )r    verifiedTsource_canon_sha256zimage brief not verifiedzintro-poster-master.pngzright-panel-master.pngzleft-panel-master.png)rf   rn   rh   c                 :    i | ]}|                     d           |S )ru   )r,   .0rows     r   
<dictcomp>zmain.<locals>.<dictcomp>   s&    SSSC#'''**CSSSr   rd   r@   verified_fileprompt_sha256r	   r   autohighpng)r:   promptnsizequality
backgroundimage_detailoutput_format   F)ensure_asciizapplication/jsonztext/event-streamzBearer )zContent-TypeAcceptAuthorizationPOST)r   headersmethodi  rS   i s   PNG

z'generated asset failed PNG verificationz	.part.png)ru   r   r:   endpointr   r   bytesr	   r^   attemptsr   text_rendered_by_providerpostprocessed_text      z	 failed: )parentsexist_ok)versionr   r   rd   
updated_at)r   indent
)ru   r   r   )flushc              3   &   K   | ]}|d          V  dS )r   N r   s     r   	<genexpr>zmain.<locals>.<genexpr>   s(      ?e?eY\O@T?e?e?e?e?e?er   )r   r   r   provider_rendered_text_onlyrd   
created_at)r   rd   r   )2BRIEFis_filer6   rV   rW   r/   r,   r>   RECEIPTr.   rF   PROJECTr}   r   encoder   rI   MODELranger[   r\   RequestENDPOINTdumpsr]   r   rb   rH   r2   with_suffixwrite_bytesr*   rO   rG   relative_tostatst_sizerY   timesleepparentmkdir
write_textr   nowr   utc	isoformatprintall)rv   r<   mapping
prior_rowspriorrowsru   filenameoutputr   
prompt_shaoldr_   lastattemptr\   ra   r   r@   r^   tempr   excreceipts                           r   mainr      sG   ==?? ;9:::Ju8899EyyD((		:O0P0P(5666
**C8Ia  rI  J  JGJ~~ T
7,,g,>>??99*++u5J/KKKSS599Xr;R;RSSSJD"==??  x  xx7"X-E5))v}}W5566
nnUB''==?? 	sww774??CGGOD\D\`jDjDjorovovw  pA  pA  EM  NT  EU  EU  pU  pUKK!V!VX^nt  GM  `e  f  fQ{{ 	: 	:G- .00
7af@g@g@g@n@nov@w@w  Se  qD  W`  cf  Wf  Bg  Bg  pv0  w  w^++GS+AA +X#==??D+ + + + + + + + + + + + + + + .t 4 4vu::&&e.>.>?S.T.T&&'PQQQ))+66  '''
4((( %eDY>Zej  yA  T^  hk  lr  l~  l~  F  lG  lG  hH  hH  SY  S^  S^  S`  S`  Sh  t|  }C  tD  tD  PV  dk  ~B  ae  }B  C  CC    - - -3xxQ;;JqG|,,,-
 %88$88999TD9994:!_dez_{  HL  \d  \h  iq  iu  \v  \v  \@  \@  \B  \B  'C  'C  RW  `a  b  b  b  ei  i  t{  	|  	|  	|dj54VUUdijjjrvwwwwwTa)eC?e?e`d?e?e?e<e<e  D  EZ  [  |@  LP  `h  `l  mu  my  `z  `z  `D  `D  `F  `F  G  GGtz'aHHH4OZabbb	$*'*"5TKKZ_
`
`
`aaa
#*11*s>   A7O.:KO.KO."K#D	O..
P/8,P**P/__main__zImage generation blocked: )file)!rB   r   rV   r*   sysr   urllib.requestr[   r   r   pathlibr   __file__resolver   r   r   r   r   r   r   r   r>   rJ   rb   r}   r   __name__exitrY   r   r   stderrr   r   r   <module>r      s      				 



      ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-**
/
/=, , ,  7 7 74" " "' ' '8  :2+ 2+ 2+j z   0300szBBBB s   =B C%CC