
    Ri>              
       "   U d Z ddlZddlZddlZddlmZ ddlmZ  ee      j                  Z
e
dz  dz  Zedz  Zdd	d
ddddddddddddZeeef   ed<   dedefdZdedefdZdededededdf
d Zdeddfd!Zd$d"Zed#k(  r e        yy)%uM   AI 배경 + HTML 오버레이 하이브리드 이미지 생성기 (v4-hybrid)    N)Path)sync_playwrightoutputz	v4-hybridzoverlay_template.htmlAu%   당신의 커리어, 새로운 시작u)   업계 최고 대우, 최고의 시스템u   지금 상담받기)scenarioheadlinesubTextctaTextBu   보험의 모든 것u    15년 경력 전문 컨설턴트u-   전문 상담 | 지금 바로 연락주세요)r   r   r	   contactCu   지금이 기회입니다u"   더 나은 내일을 위한 선택)r   r   r	   )r   r   r   	SCENARIOSr   returnc                     t         d|  dz  S )uL   시나리오 키에 해당하는 배경 이미지 경로를 반환합니다.bg_z.jpg
OUTPUT_DIRr   s    9/home/jay/workspace/tools/ai-image-gen/generate_hybrid.pyget_bg_pathr   -   s    #hZt,,,    c                     t         d|  dz  S )uL   시나리오 키에 해당하는 출력 이미지 경로를 반환합니다.hybrid_z.pngr   r   s    r   get_hybrid_output_pathr   2   s    '(4000r   template_pathscenario_databg_pathoutput_pathc           	         |j                         st        d|       |j                         st        d|       d|j                          }| j                  |d       | j	                  d|j                          dt        j                  |d	       d
       | j                  d       |j                  j                  dd       | j                  t        |      d       t        d|        y)uw  HTML 템플릿에 시나리오 데이터와 배경 이미지를 주입한 뒤 PNG로 캡처합니다.

    Args:
        page: Playwright page 객체 (1080x1080 viewport)
        template_path: overlay_template.html 경로
        scenario_data: 시나리오 데이터 딕셔너리
        bg_path: 배경 이미지(.jpg) 경로
        output_path: 저장할 PNG 경로
    u-   템플릿 파일을 찾을 수 없습니다: u-   배경 이미지를 찾을 수 없습니다: zfile://networkidle)
wait_untilz3() => {
            window.BG_IMAGE_PATH = "file://z&";
            window.SCENARIO_DATA = F)ensure_asciiz;
            if (typeof render === 'function') {
                render(window.SCENARIO_DATA, window.BG_IMAGE_PATH);
            }
        }i  T)parentsexist_okpng)pathtypeu     [캡처] N)existsFileNotFoundErrorresolvegotoevaluatejsondumpswait_for_timeoutparentmkdir
screenshotstrprint)pager   r   r   r   template_urls         r   capture_hybridr7   <   s      !"OP] _``>>"OPWy YZZ]22456LIIl}I5MM ,,3OO,=+> ?$$(JJ}5$Q#R S  	$TD9OO[)O6	K}
%&r   c           	      >   | t         vr,t        d| dt        t         j                                      t         |    }t	        |       }t        |       }t        d|  d       t               5 }|j                  j                         }	 |j                  ddd      }t        |t        |||       |j                          	 ddd       |j                         j                  d	z  }t        d|  d
| d|dd       y# |j                          w xY w# 1 sw Y   RxY w)u   단일 시나리오에 대한 하이브리드 이미지를 생성합니다.

    Args:
        scenario: 시나리오 키 ("A", "B", "C")
    u   알 수 없는 시나리오: u   . 유효한 값: u   [시나리오 u   ] 생성 시작i8  )widthheight)viewportNi   u
   ] 완료: z (z.0fz KB))r   
ValueErrorlistkeysr   r   r4   r   chromiumlaunchnew_pager7   TEMPLATE_PATHclosestatst_size)r   r   r   r   pbrowserr5   size_kbs           r   generate_hybridrI   i   s    y 8DUVZ[d[i[i[kVlUmnooh'M(#G(2K	N8*O
45		 a**##%	##tt-L#MD4wTMMO  ((4/G	N8*J{m2gc]$
OP MMO s$   -D	(C>1D>DDDc                  v   t        j                  d      } | j                  ddt        t        j                               d       | j                  ddd	d
       | j                         }|j                  r-t        d       t        D ]  }t        |        t        d       y t        |j                         y )NuA   AI 배경 + HTML 오버레이 하이브리드 이미지 생성기)descriptionz
--scenarioTu    생성할 시나리오 (A, B, C))requiredchoiceshelpz--all
store_trueall_scenariosu2   전체 3개 시나리오를 모두 생성합니다)actiondestrN   u)   === 전체 시나리오 생성 시작 ===u)   === 전체 시나리오 생성 완료 ===)argparseArgumentParseradd_argumentr=   r   r>   
parse_argsrP   r4   rI   r   )parserargskeys      r   mainrZ      s    $$1tuF
Y^^%&/	   A	   D9: 	!CC 	!9:&r   __main__)r   N)__doc__rS   r-   syspathlibr   playwright.sync_apir   __file__r0   BASE_DIRr   rB   r   dictr3   __annotations__r   r   r7   rI   rZ   __name__ r   r   <module>rf      s   S   
  / >   ;.
44 ;>(	
 *5B	
 /7
	4T	? 4-# -$ -
1S 1T 1%'%' %' 	%'
 %' 
%'ZQc Qd Q@'2 zF r   