o
    	j?                     @   s   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Zd dl	Zd dl
mZ dZdZdd Zdd Zd	d
 ZdddZdddZdd ZedkrQe  dS dS )    N)Pathzcx/gpt-5.5-imagez#sk-9ffd188da865aa49-mtv9v6-54d294f2c                 C   s>   d| v r|   dr| ddd } t|t|  d S )N,data:   )strip
startswithsplitr   Zwrite_bytesbase64Z	b64decode)b64out r   L/home/onepiece/.openclaw/workspace/skills/gen-img-gpt/scripts/gen_img_gpt.pysave_b64	   s   r   c                 C   s   t j| | d S N)urllibrequestZurlretrieve)urlr   r   r   r   download   s   r   c                 C   s~   | sdS t d| s| dr| S t|  }| s"td|  tt	|d p,d}t
| d}d| d	| S )
zEReturn a URL/data URL suitable for the gateway image reference field.Nz
^https?://zdata:image/zImage reference not found: r   z	image/pngasciir   z;base64,)rematchr   r   
expanduserexists
SystemExit	mimetypesZ
guess_typestrr	   Z	b64encodeZ
read_bytesdecode)refpZmimer
   r   r   r   image_ref_value   s   r   c                 C   s   t | tr
| dnd }|sdS t |tr|r|d n|}t |ts$dS |dp-|d}|dp<|dp<|d}|rG|rGt|| n	|rP|rPt|| ttj| dd	d
 |rj|s`|rjtd| t	j
d t|pp|pp|S )NdataFr   r   	image_urlZb64_jsonr	   Zimage_base64   )Zensure_asciiindentzsaved )file)
isinstancedictgetlistr   r   printjsondumpssysstderrbool)payloadr   r    itemr   r
   r   r   r   handle_payload!   s    

r1   c              	   C   sv   d}|   D ]2}| }|r|dkrq|dr |dd   }zt|}W n	 ty0   Y qw t||p7|}q|S )NFzdata: [DONE]r      )
splitlinesr   r   r*   loads	Exceptionr1   )textr   foundliner/   r   r   r   	parse_sse4   s   
r9   c               	   C   s  t  } | jddd | dd | jdtjddd	 | jd
tjdp'td	 | jdtd	 | jdtdd | jddd	 | jddd	 | jddd	 | jddd	 | jddd	 | jdddg dd | jddg dd | jddg d d | jd!d"dd# | 	 }|j
std$|jd%d& }d'd(|j
 d)d*}g }t|jpg t|jpg  t|jpg  D ]	}|t| q|j|j|j|j|j|j|j|jd+}t|dkr|d, |d-< nt|dkr||d.< |d, |d-< tjj|t !|"d/|d0d1}tjj#|d2d3}|j$d4d5}	|% &d/d6}
W d    n	1 s w   Y  d)|	v s2|
' (d7r?t)|
|j*s=t+|
 d S t ,|
}t-||j* d S )8Nz--promptT)requiredz--outputz-oz
--base-urlZGEN_IMG_BASE_URLzhttp://192.168.40.11:20128)defaultz	--api-keyZGEN_IMG_API_KEYz--modelz--nr   )typer;   z--sizeautoz	--qualityz--backgroundz--image-detailZhighz--output-formatZpngz--imagez-iappendzpReference image path, URL, or data:image URL. Repeatable. Sent as image for one ref or images for multiple refs.)actionr;   helpz--input-refzAlias for --image.z--image-urlz0Reference image URL/data URL. Alias for --image.z--stream
store_true)r?   r;   z7Missing API key. Set GEN_IMG_API_KEY or pass --api-key./z/v1/images/generationszapplication/jsonzBearer ztext/event-stream)zContent-TypeZAuthorizationZAccept)modelpromptnsizequality
backgroundimage_detailoutput_formatr   imageZimageszutf-8ZPOST)r    headersmethodi,  )Ztimeoutzcontent-type ignorer   ).argparseArgumentParseradd_argumentosenvironr'   DEFAULT_API_KEYMODELint
parse_argsZapi_keyr   Zbase_urlrstripr(   rK   Z	input_refr!   r>   r   rC   rD   rE   rF   rG   rH   rI   rJ   lenr   r   ZRequestr*   r+   encodeZurlopenrL   readr   lstripr   r9   outputr)   r4   r1   )Zapargsr   rL   Zrefsr   bodyZreqrZctyper6   r/   r   r   r   mainD   sh   .
 
rb   __main__r   )rP   r	   r*   r   rS   r   r,   Zurllib.errorr   Zurllib.requestZpathlibr   rV   rU   r   r   r   r1   r9   rb   __name__r   r   r   r   <module>   s   H

8
