
    i                        d Z ddlZddlZddlmZ ej
                  j                  dd       ddlZddlZ ed      Z	e	j                  dd       dZd	Zd
Zg dZdedededz  fdZdededz  fdZd Zedk(  r e        yy)u/   컨셉 #18 배경 이미지 생성 - Gemini API    N)Pathz&/home/jay/workspace/tools/ai-image-genzD/home/jay/workspace/output/meta-ads/concept-catalog/18-portrait-textT)parentsexist_oka  Professional Korean business person in their 30s wearing a crisp white dress shirt, confident warm smile, clean modern office background with soft natural lighting, upper body portrait shot, high quality professional headshot photography style, the person is positioned on the right side of the frame leaving the left half mostly empty or with a solid dark navy (#1A2E4A) background, 1080x1080 pixelsz0https://generativelanguage.googleapis.com/v1betaz3https://www.googleapis.com/auth/generative-language)zgemini-2.5-flash-imagezgemini-3-pro-image-previewzgemini-3.1-flash-image-previewtokenmodel_idreturnc                 6   t          d| d}d|  dd}ddt        igigdd	d
gid}t        d|        t        j                  |||d      }t        d|j
                          |j
                  dk7  rt        d|j                  dd         y|j                         }|j                  dg       }|st        d       y|d   j                  di       j                  dg       }|D ]#  }	d|	v st        j                  |	d   d         c S  t        d       y)u.   Gemini generateContent API로 이미지 생성z/models/z:generateContentBearer application/jsonAuthorizationzContent-TypepartstextresponseModalitiesIMAGETEXT)contentsgenerationConfigu   [배경생성] 모델:    headersjsontimeout     HTTP 상태:    
     오류: N,  
candidatesu     candidates 없음r   content
inlineDatadata     이미지 데이터 없음GEMINI_API_BASEPROMPTprintrequestspoststatus_coder   r   getbase64	b64decode)
r   r   urlr   payloadrespr!   r   r   parts
             N/home/jay/workspace/output/meta-ads/concept-catalog/18-portrait-text/gen_bg.pygenerate_with_geminir2   !   sI   XhZ/?
@C"5'**G
  01231GV3DEG 
#H:
./==gGSID	OD,,-
./3
499Tc?+,-99;D,+J#$qMi,00"=E @4##D$6v$>??@ 

()    c                    t          d}d|  dd}dt        igdddd	}t        d
       t        j                  |||d      }t        d|j
                          |j
                  dk7  rt        d|j                  dd         y|j                         }|j                  dg       }|st        d       y|d   j                  d      }|st        d       yt        j                  |      S )u!   Imagen 4 사용 (최후 fallback)z'/models/imagen-4.0-generate-001:predictr
   r   r   prompt   z1:1)sampleCountaspectRatio)	instances
parametersu7   [배경생성] fallback 모델: imagen-4.0-generate-001r   r   r   r   r   Nr   predictionsu     predictions 없음r   bytesBase64Encodedr"   r#   )r   r-   r   r.   r/   r!   r;   b64s           r1   generate_with_imagen4r>   C   s   D
EC"5'**G
  () 
G 

CD==gGSID	OD,,-
./3
499Tc?+,-99;D((="-K$%
a.

1
2C,-C  r3   c                     t        d       t        j                  t              } t        dt	        |        d       d }t
        D ]  }t        | |      }| n |t        |       }| t        d       t        j                  d       t        dz  }|j                  |       t        d| dt	        |      d	d
       y )Nu    [인증] SA 토큰 획득 중...u'   [인증] 토큰 획득 성공 (길이: )u   [오류] 모든 모델 실패r6   zbg.jpgu#   
[완료] 배경 이미지 저장: z (,z bytes))r&   gcloud_authget_service_account_tokenSCOPElenIMAGE_MODELSr2   r>   sysexit
OUTPUT_DIRwrite_bytes)r   image_bytesmodelout_paths       r1   mainrN   g   s    	
,-11%8E	3CJ<q
AB K *5%8" +E2-. H$H%	0
"S=Ma<PPW
XYr3   __main__)__doc__r+   rG   pathlibr   pathinsertrB   r'   rI   mkdirr%   r$   rD   rF   strbytesr2   r>   rN   __name__ r3   r1   <module>rY      s    5  
  ; <  XY
 
    -G  E= s ut| D!! !! !!HZ4 zF r3   