a
    Adr                     @   s   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m	Z	 d dl
mZmZ d dlmZ dd Zdd Zd	d
 Zdd ZdeeeeeeeeeeeeeeeeeeeeeeedZdd Zdd ZG dd dejZdS )    N)sd_samplerserrors)	Processedprocess_images)statec                 C   s   | S N tagr   r   A/var/www/html/stable-diffusion-webui/scripts/prompts_from_file.pyprocess_string_tag   s    r   c                 C   s   t | S r   )intr	   r   r   r   process_int_tag   s    r   c                 C   s   t | S r   )floatr	   r   r   r   process_float_tag   s    r   c                 C   s   | dkrdS dS )NtrueTFr   r	   r   r   r   process_boolean_tag   s    r   )sd_modeloutpath_samplesoutpath_gridsprompt_for_displaypromptnegative_promptstylesseedsubseed_strengthsubseedseed_resize_from_hseed_resize_from_wsampler_indexsampler_name
batch_sizen_itersteps	cfg_scalewidthheightrestore_facestilingdo_not_save_samplesdo_not_save_gridc           	      C   s4  t | }d}i }|t|k r0|| }|ds@J d| |d t|k s^J d| |dd  }|dksz|dkr|d7 }|| }|d7 }|t|k r|| ds|d	7 }||| 7 }|d7 }q|||< qt|d }|sJ d
| ||d  }|dkrtj| d }||||< |d7 }q|S )Nr   --zmust start with "--":    z)missing argument for command line option    r   r    zunknown commandline option: r    )	shlexsplitlen
startswithprompt_tagsgetr   samplers_maplower)	lineargsposresargr
   r   funcvalr   r   r   cmdargs9   s4    



r>   c                 C   sX   | d u rd t  t jddfS dd | jddddD }d d|t jddfS d S )	N   linesc                 S   s   g | ]}|  qS r   strip.0xr   r   r   
<listcomp>d       z$load_prompt_file.<locals>.<listcomp>utf8ignore)r   
)grupdatedecoder0   join)filerA   r   r   r   load_prompt_file`   s    rQ   c                   @   s*   e Zd Zdd Zdd ZedddZdS )	Scriptc                 C   s   dS )NzPrompts from file or textboxr   )selfr   r   r   titlei   s    zScript.titlec                 C   s   t jdd| dd}t jdd| dd}t jdd| d	d
}t jdd| dd}|jt|g|||gdd |jdd |g|gdd |||gS )NzIterate seed every lineFcheckbox_iterate)labelvalueelem_idz"Use same random seed for all linescheckbox_iterate_batchzList of prompt inputsr,   
prompt_txt)rV   rA   rX   zUpload prompt inputsbinaryrP   )rV   typerX   )fninputsoutputsshow_progressc                 S   s    d| v rt jddS t jddS )NrK   r?   r@   r-   )rL   rM   )tbr   r   r   <lambda>x   rH   zScript.ui.<locals>.<lambda>)r^   r_   r`   )rL   CheckboxrX   TextboxFilechangerQ   )rS   
is_img2imgrU   rY   rZ   rP   r   r   r   uil   s    z	Script.ui)rZ   c              	   C   s  dd dd |  D D }d|_d}g }|D ]p}d|v rzzt|}	W q tyv   tjd| d	dd
 d|i}	Y q0 nd|i}	||	d|j7 }||	 q.t	dt
| d| d |s|r|jdkrttd|_|t_g }
g }g }|D ]}	tjd  dtj t_t|}|	 D ]\}}t||| q t|}|
|j7 }
|rd|j|j|j  |_||j7 }||j7 }qt||
|jd||dS )Nc                 S   s   g | ]}|r|qS r   r   rD   r   r   r   rG   |   rH   zScript.run.<locals>.<listcomp>c                 s   s   | ]}|  V  qd S r   rB   rD   r   r   r   	<genexpr>|   rH   zScript.run.<locals>.<genexpr>Tr   r+   zError parsing line z as commandline)exc_infor   r"   zWill process z
 lines in z jobs.l    r,   z out of  )all_prompts	infotexts)
splitlinesr*   r>   	Exceptionr   reportr4   r"   appendprintr1   r   r   random	randranger   	job_countjob_nojobcopyitemssetattrr   imagesr!   rm   rn   r   )rS   prU   rY   rZ   rA   rv   jobsr7   r8   r|   rm   rn   Zcopy_pkvprocr   r   r   run{   sB    


z
Script.runN)__name__
__module____qualname__rT   rh   strr   r   r   r   r   rR   h   s   rR   )ry   rt   r/   modules.scriptsscriptsgradiorL   modulesr   r   Zmodules.processingr   r   Zmodules.sharedr   r   r   r   r   r3   r>   rQ   rR   r   r   r   r   <module>   sN   '