
    TiO                     p   d 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 ddlm	Z	 	 ddl
mZ ddlmZ  ed	      Zej'                  d
d
       dddddddddddddddgZd"dededededef
dZdededefdZd  Zed!k(  r e        yy# e$ r'Z ede         ej"                  d       Y dZ[dZ[ww xY w)#z
Jaaz OpenAI Provider - Direct image generation script
Replicates logic from jaaz-app/server/tools/image_providers/openai_provider.py
Uses OPENAI_API_KEY from environment variable
    N)Path)BytesIO)OpenAI)ImagezERROR: Missing dependency:    z5/home/jay/workspace/tools/ai-image-gen/output/v6-jaazT)parentsexist_ok
scenario_au   리크루팅 광고a!  Professional insurance agency recruitment advertisement. Korean insurance brokerage industry, career transition, new beginning, professional occupation. Warm lighting, trustworthy atmosphere, professional tone. Wide format 1024x1024 advertisement image. Include text space for Korean copy.	1024x1024)idnamepromptsize
scenario_bu   브랜딩 광고zPremium insurance consulting branding advertisement. VIP pension consulting, luxury atmosphere. Gold and dark tones, sophisticated elegant design. Premium financial services branding. 1024x1024 format.
scenario_cu   전직 유도 광고zCinematic dramatic career change advertisement for insurance GA agency. Transformation and leap forward theme. Cinematic movie poster quality, dramatic lighting, epic scale. Career opportunity advertisement. 1024x1024 format.clientr   r   modelreturnc                    | j                   j                  ||d|      }|j                  rt        |j                        dk(  rt	        d      |j                  d   }t        |d      r+|j                  rt        j                  |j                        S t        |d      rO|j                  rCddl
}|j                  j                  |j                        5 }|j                         cddd       S t	        d      # 1 sw Y   yxY w)	zo
    Generate image using OpenAI API - mirrors OpenAIImageProvider.generate()
    Returns raw image bytes.
    r   )r   r   nr   r   z&No image data returned from OpenAI APIb64_jsonurlNz'Invalid response format from OpenAI API)imagesgeneratedatalen	Exceptionhasattrr   base64	b64decoder   urllib.requestrequesturlopenread)r   r   r   r   result
image_dataurllibresponses           H/home/jay/workspace/tools/ai-image-gen/output/v6-jaaz/generate_images.pygenerate_imager*   ?   s    
 ]]##
	 $ F ;;#fkk*a/@AAQJz:&:+>+>
 3 344	U	#
^^##JNN3 	#x==?	# 	# ABB	# 	#s   C;;Dimage_bytes	file_pathc                    t        j                  t        |             }|j                  \  }}|j                  dk(  r|j                  d      }n@|j                  dk(  r1d|j                  v r|j                  d      }n|j                  d      }|j                  t        |      dd       |j                         j                  }|||fS )	zASave image bytes as PNG, returns (width, height, file_size_bytes)CMYKRGBPtransparencyRGBAPNGT)formatoptimize)r   openr   r   modeconvertinfosavestrstatst_size)r+   r,   imagewidthheight	file_sizes         r)   save_as_pngrB   Z   s    JJw{+,EJJME6 zzVe$	s	UZZ'MM&)EMM%(E	JJs9~edJ; ((I&)##    c                     t         j                  j                  d      } | s t        d       t	        j
                  d       t        d       t        dt                t        d       t        d       t        |       }g }t        D ]-  }t        d	|d
   j                          d|d           t        d|d   d d  d       t        j                         }t        |d
    dz  }	 t        ||d   |d   d      }t        ||      \  }}}	t        j                         |z
  }
t        d|j                          t        d| d|        t        d|	dz  dd       t        d|
dd       |j                  |d
   |d   dt        |      t!        |	dz  d      | d| t!        |
d       d!       0 t        d%       t        d&       |D ]S  }|d'   dk(  r%t        d(|d
    d)|d*    d+|d,    d-|d.    d/	       0t        d(|d
    d0|j                  d1d2              U t        d3       t        D ]_  }t        |d
    dz  }|j%                         r/t        d(| d4|j'                         j(                  dz  dd5       Qt        d(| d6       a y # t"        $ r`}t        j                         |z
  }
t        d"|        |j                  |d
   |d   d#t        |      t!        |
d       d$       Y d }~wd }~ww xY w)7NOPENAI_API_KEYz2ERROR: OPENAI_API_KEY environment variable not setr   z,[Jaaz Direct] OpenAI Image Generation Scriptz [Jaaz Direct] Output directory: z [Jaaz Direct] Model: gpt-image-1z<============================================================)api_keyz
[Scenario r   z] r   z
  Prompt: r   P   z...z.pngr   gpt-image-1)r   r   r   r   z  SUCCESS: z  Dimensions: xz  File size: i   z.1fz KBz  Time: z.2fsSUCCESS   )r   r   statuspathsize_kb
dimensionstime_sz
  FAILED: FAILED)r   r   rM   errorrQ   z=
============================================================z	[SUMMARY]rM   z  z: OK  (rO   z KB, rP   z, rQ   zs)z: FAILED - rS   unknownz
[File Verification]z  (z KB)z	  MISSING)osenvirongetprintsysexit
OUTPUT_DIRr   	SCENARIOSuppertimer*   rB   r   appendr;   roundr   existsr<   r=   )rF   r   resultsscenario
start_timeoutput_pathr+   r?   r@   rA   elapsederfps                 r)   mainrj   m   s7   jjnn-.GBC	8:	,ZL
9:	,.	(OG$FG )Xd^1134Bx7G6HIJ
8H-cr23378YY[
 htn%5T#::"	()f%#	K (3;'L$E69iikJ.GK 0 0123N5'6(34M)d"23!7s;<HWSM+,NNtn (#K( T!115!&q1+ -)V 
/	+ HX;)#Bqwiwq|nE!L/9J"Qx[MY[\]Bqwi{155)+D*EFG	H 

!" &Xd^,D1199;Brd#bggi//$6s;4@ABrd)$%&+  		iikJ.GJqc"#NNtn ("Q+  		s   +CJ	L%AL  L__main__)rH   )__doc__rU   rY   r   r^   asynciopathlibr   ior   openair   PILr   ImportErrorrg   rX   rZ   r[   mkdirr\   r;   bytesr*   tuplerB   rj   __name__ rC   r)   <module>rx      s2   
 
      IJ
 
    - %]
 
 "E
 
 &B
 
/"	JC6 C3 Cc C# CZ_ C6$U $t $ $&H&V zF M  	's
+,CHHQKKs   B	 	B5B00B5