
    iv                         d Z ddlZddlZddlZddlZddlmZ ddlZddlm	Z	 ej                  j                  d e ee      j                               ddlZ ed      Zedz  Zedz  ZdZd	Zd
ZdefdZdedefdZd Zedk(  r e        yy)u=   컨셉 #27 Kia Style — 대담한 에너지 이미지 생성    N)Path)sync_playwrightz@/home/jay/workspace/output/meta-ads/concept-catalog/27-kia-stylezbg.jpgz
sample.pngz0https://generativelanguage.googleapis.com/v1betaae  Dynamic diagonal split composition background, bottom-left area dark charcoal #1A1A1A, top-right area vivid red #BB162B, sharp diagonal edge at 15-degree angle cutting across the frame from bottom-left to top-right, subtle motion blur texture suggesting speed and energy, high energy bold graphic design style, no text, no people, no logos, 1080x1080 squareu  <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
  @import url('file:///home/jay/.local/share/fonts/Pretendard/PretendardVariable.ttf');
  * { margin: 0; padding: 0; box-sizing: border-box; }
  body {
    width: 1080px;
    height: 1080px;
    overflow: hidden;
    font-family: 'Pretendard', 'Noto Sans KR', sans-serif;
  }
  .container {
    position: relative;
    width: 1080px;
    height: 1080px;
    background-image: url('__BG_PATH__');
    background-size: cover;
    background-position: center;
  }
  /* 대각선 오버레이 강화 — 좌하단 어두운 반투명 레이어 */
  .diagonal-overlay {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: linear-gradient(
      135deg,
      rgba(26,26,26,0.55) 0%,
      rgba(26,26,26,0.45) 45%,
      rgba(187,22,43,0.0) 55%,
      rgba(187,22,43,0.0) 100%
    );
  }
  /* 텍스트 그룹 */
  .text-group {
    position: absolute;
    left: 64px;
    bottom: 180px;
    max-width: 720px;
  }
  .sub-text {
    font-size: 64px;
    font-weight: 400;
    color: rgba(255,255,255,0.88);
    line-height: 1.3;
    margin-bottom: 20px;
    letter-spacing: -0.02em;
  }
  .headline {
    font-size: 104px;
    font-weight: 900;
    color: #FFFFFF;
    line-height: 1.1;
    letter-spacing: -0.03em;
    margin-bottom: 48px;
    /* 사선 경계를 가로지르는 느낌 — 약간 우측으로 넘침 */
    position: relative;
    left: -4px;
  }
  /* CTA 버튼 */
  .cta-wrapper {
    position: absolute;
    left: 64px;
    bottom: 72px;
  }
  .cta-btn {
    display: inline-block;
    background-color: #C8E600;
    color: #000000;
    font-size: 44px;
    font-weight: 800;
    padding: 18px 52px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 100%, 16px 100%);
  }
  /* 액센트 라임 사선 장식 */
  .accent-line {
    position: absolute;
    top: 0; right: 0;
    width: 8px;
    height: 100%;
    background: #C8E600;
    opacity: 0.85;
  }
  /* 우상단 레드 영역 강조 텍스처 */
  .top-right-accent {
    position: absolute;
    top: 40px;
    right: 56px;
    font-size: 22px;
    font-weight: 700;
    color: rgba(255,255,255,0.35);
    letter-spacing: 0.25em;
    text-transform: uppercase;
    writing-mode: vertical-rl;
    text-orientation: mixed;
  }
</style>
</head>
<body>
<div class="container">
  <div class="diagonal-overlay"></div>
  <div class="text-group">
    <div class="sub-text">열심히는 하는데, 결과가 없다면</div>
    <div class="headline">월급 제자리걸음?<br>이제 판을 바꿔!</div>
  </div>
  <div class="cta-wrapper">
    <div class="cta-btn">지금 바꿔 →</div>
  </div>
  <div class="accent-line"></div>
  <div class="top-right-accent">CHANGE NOW</div>
</div>
</body>
</html>
returnc                     t        j                  d      } | st        d       yd|  dd}t         d}dd	t        igigd
ddgid}t        d       t        j                  |||d      }|j                  dk7  r)t        d|j                   d|j                  dd         y|j                         }|j                  di g      d   j                  di       j                  dg       D ]J  }d|v st        j                  |d   d         }t        j                  |       t        dt                 y t        d       y)u;   Gemini SA 토큰으로 배경 이미지를 생성합니다.z3https://www.googleapis.com/auth/generative-languageu     [오류] SA 토큰 없음FzBearer zapplication/json)AuthorizationzContent-Typez6/models/gemini-3.1-flash-image-preview:generateContentpartstextresponseModalitiesTEXTIMAGE)contentsgenerationConfigu     배경 생성 요청 중...x   )headersjsontimeout   u     [오류] z: Ni,  
candidatesr   content
inlineDatadatau     배경 저장 완료: Tu"     [오류] 이미지 파트 없음)gcloud_authget_service_account_tokenprintGEMINI_API_BASE	BG_PROMPTrequestspoststatus_coder	   r   getbase64	b64decodeBG_PATHwrite_bytes)sa_tokenr   urlpayloadrespr   part	img_bytess           ]/home/jay/workspace/.worktrees/task-2116-dev1/tools/ai-image-gen/_backup/gen_concept27_kia.pygenerate_backgroundr,      sX   445jkH+,")( 4FXYGS
TC 34561FG3DEG 

)*==gGSID3D,,-R		$3/@AB99;Dt,Q/33IrBFFwPRS 4((l);F)CDI	*,WI67 

./    html_contentc                    t         dz  }|j                  | d       t               5 }|j                  j	                         }|j                  ddd      }|j                  d|        |j                  d       |j                  t        t              d	
       |j                          ddd       t        dt                y# 1 sw Y   xY w)u-   Playwright로 HTML을 PNG로 캡처합니다.zoverlay.htmlzutf-8)encodingi8  )widthheight)viewportfile://i  png)pathtypeNu     PNG 저장 완료: T)
OUTPUT_DIR
write_textr   chromiumlaunchnew_pagegotowait_for_timeout
screenshotstrSAMPLE_PATHcloser   )r.   	html_filepbrowserpages        r+   render_htmlrG      s    ^+I8		 a**##%44)HI		GI;'(d#S-E: 
!+
/0 s   BCCc                     t         j                  dd       t        d       t               } | st	        j
                  d       t        d       dt         }t        j                  d|      }t        |       t        dt                y )	NT)parentsexist_oku    [1/2] 배경 이미지 생성...   u$   [2/2] HTML 오버레이 렌더링...r4   __BG_PATH__u	   
완료: )r8   mkdirr   r,   sysexitr#   HTML_TEMPLATEreplacerG   rA   )okbg_urlhtmls      r+   mainrU      sr    TD1	
,-		B	
01wi F  7D	J{m
$%r-   __main__)__doc__r!   r   rN   timepathlibr   r   playwright.sync_apir   r6   insertr@   __file__parentr   r8   r#   rA   r   r   rP   boolr,   rG   rU   __name__ r-   r+   <module>ra      s    C   
    / 3tH~,,- .  TU

x
<'D5 
tnT 8c d & zF r-   