Ë
    %ÆjN+  ã                   ó8  — 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  ee«      j                  «       j                  j                  ZdZdZedz  dz  Zedz  d	z  Zedz  d
z  ZdZdZdZdZg d¢Zg d¢Zd„ Zd%d„Zd„ Zd„ Zd„ Zd&d„Zedk(  r�ddlZ ej>                  d¬«      Z e jC                  de"dd¬«       e jC                  ddd ¬!«       e jC                  d"dd#¬!«       e jG                  «       Z$e$jJ                  Z ee$jL                  e$jN                  ¬$«       yy)'zi
PLUMLOOM ENGINE - Batch Progression Generator v3
Estructura con BREAK separators para mejor adherencia.
é    N)ÚPathFzhttp://127.0.0.1:7860ÚOutputÚbatch_progression_v3ÚArchivosÚprogression_wildcardszpersonajes.txtzômasterpiece, best quality, absurdres, highres, score_9, score_8_up, <lora:IFL_v1.0_IL:0.7> <lora:add-detail-xl:0.5> <lora:blackwhiplash(bwl)-guy90-Illust-Lorav3:0.6> blaash, <lora:scara2b_ill_v1.00:0.7> scara2b-style, <lora:Add_color_ILXLv1:3>,zã1boy, (faceless male:1.4), no face, blank face, featureless face, no facial features, eyes closed, black hair, short hair, muscular body, broad shoulders, large hands, masculine physique, nude male, larger male, taller dominantz3sex, penetration, dick, pussy, cock, cum, naked sexaø  lowres, bad anatomy, bad hands, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, bad feet, multiple views, splits, 2girls, extra people, duplicate_character, cloned_character, ugly, deformed, disfigured, mutation, mutated, extra_limbs, fused_fingers, long_neck, cross-eyed, censored, mosaic censoring, bar censor, mirror, reflection, mirrored, glass_reflection, reflective_surface)Ú	01_outfitÚ
02_undressÚ03_underwearÚ04_presentingÚ	05_sexualÚ06_explicitÚ	07_climax)ÚOUTFITÚUNDRESSÚ	UNDERWEARÚ
PRESENTINGÚSEXUALÚEXPLICITÚCLIMAXc                  ól  — i } dD ]ˆ  }t         |z  }|j                  «       sŒt        |dd¬«      5 }|D �cg c]5  }|j                  «       sŒ|j	                  d«      rŒ&|j                  «       ‘Œ7 }}d d d «       | |j                  dd«      <   ŒŠ d| v rd	D ]
  }| d   | |<   Œ | S c c}w # 1 sw Y   Œ:xY w)
N)zstep1_outfit.txtzstep2_undress.txtzstep3_underwear.txtzextra_poses.txtzstep4_presenting.txtzstep5_sexual.txtzstep6_explicit.txtzstep7_climax.txtzstep_state.txtzcameras.txtz
scenes.txtÚrúutf-8©ÚencodingÚ#z.txtÚ Úextra_poses)Ústep1_extra_posesÚstep2_extra_posesÚstep3_extra_poses)ÚWILDCARD_DIRÚexistsÚopenÚstripÚ
startswithÚreplace)Ú	wildcardsÚfilenameÚfilepathÚfÚlÚlinesÚsteps          ú=C:\Users\Usuario\Downloads\NEW\Engine\batch_progression_v3.pyÚload_wildcardsr/   4   s¹   € Ø€Ióˆô   (Ñ*ˆØ�?‰?ÕÜ�h ¨gÕ6¸!Ù,-ÓU©A q°·±µÀ1Ç<Á<ÐPSÕCT˜Ÿ™�¨A�ÐU÷ 7à6;ˆI�h×&Ñ& v¨rÓ2Ò3ðð ˜	Ñ!ÛSˆDØ'¨Ñ6ˆI�dŠOð TàÐùò V÷ 7Ð6ús(   °B*µB%ÁB%ÁB%Á/B*Â%B*Â*B3	c           	      óî  — t        t        dd¬«      5 }|D �cg c]#  }|j                  «       sŒ|j                  «       ‘Œ% }}ddd«       ddl}|j                  j                  dt        t        t        «      j                  «       j                  «      «       ddlm}  |«      }t        s‡ddlm}  |«       }|rxt!        |«      }	|D �
cg c]   }
|
d   sŒ	|
d   j#                  «       |v sŒ|
‘Œ" }}
t%        d	„ |D «       «      }t'        d
|	t!        |«      z
  › d|	t!        |«      z
  |z
  › d|› d�«       | r)t)        j*                  |t-        | t!        |«      «      «      S |S c c}w # 1 sw Y   �Œ%xY wc c}
w )a#  Solo personajes cuyo .safetensors exista en disco, salvo --any-lora.

    Sin este filtro el script puede elegir un personaje cuyo LoRA no esta
    instalado: el prompt sale igual pero la imagen sale con el aspecto por
    defecto del checkpoint y parece que 'el personaje no funciona'.
    r   r   r   Nr   )Úcompute_character_keys)Ú
lora_stemsé   c              3   óN   K  — | ]  }t        j                  d |«      rŒd–— Œ y­w)z<lora:é   N)ÚreÚsearch)Ú.0Úlines     r.   Ú	<genexpr>z"load_characters.<locals>.<genexpr>c   s   è ø€ ÐO© ´B·I±I¸iÈÕ4Nœ!©ùs   ‚%ž%z[!] z personajes descartados (z con LoRA ausente en disco, zE que van por defecto del checkpoint). Usa --any-lora para incluirlos.)r#   Ú	CHAR_FILEr$   ÚsysÚpathÚinsertÚstrr   Ú__file__ÚresolveÚparentÚprompt_builderr1   ÚALLOW_ANY_LORAÚcharacter_keysr2   ÚlenÚlowerÚsumÚprintÚrandomÚsampleÚmin)Úcountr*   r+   ÚrowsÚ_sysr1   Úkeyedr2   Ú	availableÚbeforeÚtÚsin_tags               r.   Úload_charactersrU   J   sG  € ô 
Œi˜ wÕ	/°1Ù#$Ó2¡1˜a¨¯©­	�—‘•	 1ˆÐ2÷ 
0ó Ø‡I�I×Ñ�QœœD¤›N×2Ñ2Ó4×;Ñ;Ó<Ô=Ý5Ù" 4Ó(€EåÝ-Ù“Lˆ	ÙÜ˜“ZˆFÙ %ÓL¡˜1¨¨1«°!°A±$·*±*³,À)Ò2K’Q ˆEÐLÜÑO©ÓOÓOˆGÜ�D˜¤# e£*Ñ,Ð-ð .Øœs 5›zÑ)¨GÑ3Ð4Ð4PØ�Ið 4ð5ô 6ñ
 Ü�}‰}˜U¤C¨¬s°5«zÓ$:Ó;Ð;Ø€Lùò3 3÷ 
0Ñ	/üò" Ms3   “E%˜E ®E Á E%Ã

E2ÃE2Ã+E2Å E%Å%E/c                 óX   — | j                  |g «      }|rt        j                  |«      S dS )Nr   )ÚgetrJ   Úchoice)r'   ÚkeyÚlsts      r.   Úpickr[   n   s(   € Ø
�-‰-˜˜RÓ
 €CÙ!$Œ6�=‰=˜ÓÐ,¨"Ð,ó    c                 óÔ  — t        |d«      }t        |d«      }t        |d«      }t        |d«      }t        |d«      }	t        |d«      }
t        |d«      }t        |d«      }t        |d	«      }t        |d
«      }| dk(  rt        › d|› d|› d|› d|› d|› �}|S | dk(  rt        › d|› d|› d|› d|› d|› d|› �}|S | dk(  rt        › d|› d|› d|	› d|› d|› �}|S | dk(  rt        › d|› d|
› d|› d|› �	}|S | dk(  rt        › d|› d|› d|› d|› d|› �}|S | dk(  r't        › d|› d|› d|› dt        › dt        › d|› d|› �}|S | dk(  r(t        › d|› d|› d|› d|› dt        › dt        › d|› d|› �}S )NÚstep1_outfitÚstep2_undressr   Ústep3_underwearr    Ústep4_presentingÚstep5_sexualÚstep6_explicitÚstep7_climaxÚ
step_stater5   z 1girl, solo, BREAK z, age up, mature female, z, z, BREAK r3   é   é   z6, age up, mature female, nude, naked, nipples, pussy, é   é   z 1girl, BREAK é   )r[   ÚMASTERÚSEX_TAGSÚ	MALE_TAGS)Ústep_numÚ	char_liner'   ÚcameraÚsceneÚoutfitÚundressÚpose_undressÚ	underwearÚpose_underwearÚ
presentingÚsexualÚexplicitÚclimaxÚstateÚprompts                   r.   Úbuild_step_promptr}   s   sÈ  € Ü�)˜^Ó,€FÜ�9˜oÓ.€GÜ˜	Ð#6Ó7€LÜ�YÐ 1Ó2€IÜ˜)Ð%8Ó9€NÜ�iÐ!3Ó4€JÜ�)˜^Ó,€FÜ�IÐ/Ó0€HÜ�)˜^Ó,€FÜ�˜LÓ)€Eà�1‚}ô ˆhð àˆkÐ2Øˆh�b˜˜ð 'àˆhð àˆgðð 	ðz €Mðe 
�QŠô ˆhð àˆkÐ2Øˆh�b˜˜	  L >ð 2àˆhð àˆgðð 	ð` €MðK 
�QŠô ˆhð àˆkÐ2Øˆk˜˜NÐ+ð ,àˆhð àˆgðð 	ðF €Mðq 
�QŠô ˆhð àˆkÐOØˆlð àˆhð àˆgðð 	ðl €MðW 
�QŠô ˆhð àˆkÐOØˆh�b˜˜ð  àˆhð àˆgðð 	ðR €Mð= 
�QŠô ˆhð àˆkÐ2Øˆj˜˜5˜'ð "äˆj˜œ9˜+ð &àˆhð àˆgð	ð 	ð8 €Mð 
�QŠô ˆhð àˆkÐOØˆh�b˜˜
 " U Gð ,äˆj˜œ9˜+ð &àˆhð àˆgð	ð 	ð €Mr\   c                 ó¼  — | t         dddddddddd	œ}	 t        j                  t        › d
�|d¬«      }|j                  dk(  r_t        j                  |j                  «       d   d   «      }t        |d«      5 }|j                  |«       d d d «       dt        |«      dz  fS d|j                  fS # 1 sw Y   Œ'xY w# t        $ r}dt        |«      fcY d }~S d }~ww xY w)Ni@  iÀ  é   rh   zDPM++ 2M Karrasr5   éÿÿÿÿr3   )r|   Únegative_promptÚwidthÚheightÚstepsÚ	cfg_scaleÚsampler_nameÚ
batch_sizeÚn_iterÚseedÚ	clip_skipz/sdapi/v1/txt2imgi,  )ÚjsonÚtimeoutéÈ   Úimagesr   ÚwbTi   F)ÚNEGÚrequestsÚpostÚ	FORGE_URLÚstatus_codeÚbase64Ú	b64decoder‹   r#   ÚwriterF   Ú	Exceptionr?   )r|   ÚoutpathÚpayloadÚrespÚimgr*   Úes          r.   Úgenerate_imagerž   á   sá   € àÜØØØØØ)ØØØØñ€Gð	Ü�}‰}¤	˜{Ð*;Ð<À7ÐTWÔXˆØ×Ñ˜sÒ"Ü×"Ñ" 4§9¡9£;¨xÑ#8¸Ñ#;Ó<ˆCÜ�g˜tÔ$¨Ø—‘˜”÷ %àœ˜S› TÑ)Ð)Ð)Ø�d×&Ñ&Ð&Ð&÷ %Ð$ûô ò Ø”c˜!“fˆ}Õûðús<   ”A#B; Á7B/Â	B; Â!B; Â/B8Â4B; Â;	CÃCÃCÃCr3   c                 óh  — t        «       }t        | «      }t        j                  dd¬«       t	        d«       t	        dt        |«      › d�«       t	        d«       t        |«      dz  }d}t        |«      D �]  \  }\  }}}	t        j                  dd	|«      d d
 }t        |d«      }
t	        d|› d�«       t        d«      D ]Á  }|dz   }t        |d«      }t        |||||
«      }|› d	t        |   › d�}t        |z  }|dz  }t	        d|› d|› dt        |   › �«       |r!t	        d|› �«       t	        d|d d › d�«       Œ~t        ||«      \  }}|rt	        d|› d�«       nt	        d|› �«       t        j                   d«       ŒÃ �Œ t	        d«       t	        d|› dt        › �«       t	        d«       y )NT)ÚparentsÚexist_okz7=======================================================z  PROGRESSION BATCH v3 - z chars x 7 stepsrj   r   z[^a-zA-Z0-9]Ú_é   Úscenesz
--- z ---r5   Úcamerasz.pngz  [Ú/z] z
    [DRY] z    é–   z...z	    [OK] ÚKBz    [FAIL] r3   z8
=======================================================z  COMPLETADO - z images in )r/   rU   Ú
OUTPUT_DIRÚmkdirrI   rF   Ú	enumerater6   Úsubr[   Úranger}   Ú
STEP_NAMESÚSTEP_LABELSrž   ÚtimeÚsleep)Ú
char_countÚdry_runr'   Ú
charactersÚtotalÚdoneÚciÚ	char_namero   Ú_lorarq   Úsirn   rp   r|   r(   r™   ÚokÚresults                      r.   Ú	run_batchr½   û   s¾  € ÜÓ €IÜ  Ó,€JÜ×Ñ˜T¨DÐÔ1ä	ˆ(„OÜ	Ð%¤c¨*£oÐ%6Ð6FÐ
GÔHÜ	ˆ(„Oä�
‹O˜aÑ€EØ€Dä-6°z×-BÑ)ˆÑ)ˆY˜	 5Ü—F‘F˜?¨C°Ó;¸C¸RÐ@ˆ	Ü�Y Ó)ˆÜ��y�k Ð&Ô'ä˜–(ˆBØ˜A‘vˆHÜ˜) YÓ/ˆFÜ& x°¸IÀvÈuÓUˆFØ#˜ A¤j°¡nÐ%5°TÐ:ˆHÜ  8Ñ+ˆGØ�A‰IˆDä�C˜�v˜Q˜u˜g R¬°B©Ð'8Ð9Ô:áÜ˜
 8 *Ð-Ô.Ü˜˜V D S˜\˜N¨#Ð.Õ/ä+¨F°GÓ<‘
��FÙÜ˜I f X¨RÐ0Õ1ä˜K¨ xÐ0Ô1Ü—
‘
˜1•ò' ð .Cô4 
ˆ/ÔÜ	ˆO˜D˜6 ¬Z¨LÐ
9Ô:Ü	ˆ(…Or\   Ú__main__zProgression Batch v3)Údescriptionz--charszNumber of characters)ÚtypeÚdefaultÚhelpz	--dry-runÚ
store_truezPrint prompts only)ÚactionrÂ   z
--any-loraz5incluye personajes cuyo .safetensors no este en disco)r²   r³   )N)r3   F)(Ú__doc__r‘   r•   rJ   r°   r6   Úpathlibr   r@   rA   rB   ÚBASE_DIRrD   r“   r©   r!   r;   rk   rm   rl   r�   r®   r¯   r/   rU   r[   r}   rž   r½   Ú__name__ÚargparseÚArgumentParserÚparserÚadd_argumentÚintÚ
parse_argsÚargsÚany_loraÚcharsr³   © r\   r.   Ú<module>rÓ      sc  ðñó Û Û Û Û 	Ý á�‹>×!Ñ!Ó#×*Ñ*×1Ñ1€Ø€Ø#€	Ø˜Ñ Ð#9Ñ9€
Ø˜*Ñ$Ð'>Ñ>€Ø�zÑ!Ð$4Ñ4€	ð!ð ð.ð 
ð A€ðIð ò s€
Ú^€òó,!òH-ò
kò\ó4(ðV ˆzÒÛØ$ˆX×$Ñ$Ð1GÔH€FØ
×Ñ˜	¨°QÐ=SÐÔTØ
×Ñ˜¨LÐ?SÐÔTØ
×Ñ˜¨\ØTð ô Và×ÑÓ€Dà—]‘]€NÙ˜Ÿ™¨T¯\©\Ö:ð r\   