Ë
    &Æj«!  ã                   óâ  — 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ZddlmZ  ee	«      j                  j                  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g d¢Zg d¢Zd„ Zd"d„Zd„ Zd„ Zd„ Zd„ Zd#d„Zedk(  roddlZ ej<                  d¬«      ZejA                  de!dd¬«       ejA                  ddd¬ «       ejE                  «       Z# ee#jH                  e#jJ                  ¬!«       yy)$u?  
PLUMLOOM ENGINE - Batch Progression Generator v2
Genera secuencias de progresiÃ³n NSFW (7 pasos) para mÃºltiples personajes.
Estructura de prompt por paso:
  Step 1: MASTER + char + OUTFIT + POSE + CAMERA + SCENE
  Step 2: MASTER + char + OUTFIT + UNDRESS + POSE + CAMERA + SCENE
  Step 3: MASTER + char + UNDERWEAR + POSE + CAMERA + SCENE
  Step 4: MASTER + char + nude + PRESENTING + CAMERA + SCENE
  Step 5: MASTER + char + SEXUAL + CAMERA + SCENE
  Step 6: MASTER + char + EXPLICIT + MALE + CAMERA + SCENE
  Step 7: MASTER + char + MALE + CLIMAX(+POSE) + CAMERA + SCENE
é    N)ÚPathzhttp://127.0.0.1:7860ÚOutputÚbatch_progression_v2Ú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, no face, black hair, short hair, muscular body, broad shoulders, large hands, masculine physique, nude male, larger male, taller dominantaø  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                  óp  — 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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ÚkeyÚsteps           ú=C:\Users\Usuario\Downloads\NEW\Engine\batch_progression_v2.pyÚload_wildcardsr0   I   s½   € Ø€Ióˆô   (Ñ*ˆØ�?‰?ÕÜ�h ¨gÕ6¸!Ù,-ÓU©A q°·±µÀ1Ç<Á<ÐPSÕCT˜Ÿ™�¨A�ÐU÷ 7à×"Ñ" 6¨2Ó.ˆCØ"ˆI�cŠNð#ð* ˜	Ñ!ÛSˆDØ'¨Ñ6ˆI�dŠOð TàÐùò V÷ 7Ð6ús(   °B,µB'ÁB'ÁB'Á/B,Â'B,Â,B5	c           	      ó  — t        t        dd¬«      5 }|D �cg c]#  }|j                  «       sŒ|j                  «       ‘Œ% }}d d d «       | r)t        j                  t        | t        |«      «      «      S S c c}w # 1 sw Y   Œ;xY w)Nr   r   r   )r#   Ú	CHAR_FILEr$   ÚrandomÚsampleÚminÚlen)Úcountr*   r+   r,   s       r/   Úload_charactersr8   f   si   € Ü	Œi˜ wÕ	/°1Ù$%Ó3¡A˜q¨¯©­�—‘• AˆÐ3÷ 
0áÜ�}‰}˜U¤C¨¬s°5«zÓ$:Ó;Ð;Ø€Lùò 4÷ 
0Ð	/ús!   “A<˜A7®A7Á A<Á7A<Á<Bc                 ó¦   — t        j                  d| «      }|r9|j                  d«      j                  «       }t        j                  dd|«      d d S y)Nz>([^,]+)é   z[^a-zA-Z0-9]Ú_é   Úunknown)ÚreÚsearchÚgroupr$   Úsub)Ú	char_lineÚmatchÚraws      r/   Úextract_char_namerE   n   sH   € Ü�I‰I�k 9Ó-€EÙØ�k‰k˜!‹n×"Ñ"Ó$ˆÜ�v‰v�o s¨CÓ0°°"Ð5Ð5Øó    c                 óX   — | j                  |g «      }|rt        j                  |«      S dS )z<Pick random from wildcard, return empty string if not found.r   )Úgetr3   Úchoice)r'   r-   Úlsts      r/   ÚpickrK   v   s(   € à
�-‰-˜˜RÓ
 €CÙ!$Œ6�=‰=˜ÓÐ,¨"Ð,rF   c                 óŽ  — 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|› �	}|S | dk(  rt        › d|› d|› dt        › d|› d|› �}|S | dk(  rt        › d|› dt        › d|› d|› d|› d|› �}S )z2Build prompt according to step-specific structure.Ústep1_outfitÚstep2_undressr   Ústep3_underwearr    Ústep4_presentingÚstep5_sexualÚstep6_explicitÚstep7_climaxr:   z 1girl, solo, z
, age up, z, é   é   é   z', age up, nude, naked, nipples, pussy, é   é   z 1girl, é   )rK   ÚMASTERÚ	MALE_TAGS)Ústep_numrB   r'   ÚcameraÚsceneÚoutfitÚundressÚpose_undressÚ	underwearÚpose_underwearÚ
presentingÚsexualÚexplicitÚclimaxÚprompts                  r/   Úbuild_step_promptri   |   s@  € ä�)˜^Ó,€FÜ�9˜oÓ.€GÜ˜	Ð#6Ó7€LÜ�YÐ 1Ó2€IÜ˜)Ð%8Ó9€NÜ�iÐ!3Ó4€JÜ�)˜^Ó,€FÜ�IÐ/Ó0€HÜ�)˜^Ó,€Fà�1‚}ä�8˜>¨)¨°J¸v¸hÀbÈÈÐVXÐY_ÐX`Ð`bÐchÐbiÐjˆð4 €Mð1 
�QŠä�8˜>¨)¨°J¸v¸hÀbÈÈ	ÐQSÐT`ÐSaÐacÐdjÐckÐkmÐnsÐmtÐuˆð, €Mð) 
�QŠä�8˜>¨)¨°J¸y¸kÈÈNÐK[Ð[]Ð^dÐ]eÐegÐhmÐgnÐoˆð$ €Mð! 
�QŠä�8˜>¨)¨Ð4[Ð\fÐ[gÐgiÐjpÐiqÐqsÐtyÐszÐ{ˆð €Mð 
�QŠä�8˜>¨)¨°J¸v¸hÀbÈÈÐPRÐSXÐRYÐZˆð €Mð 
�QŠä�8˜8 I ;¨j¸¸
À"ÄYÀKÈrÐRXÐQYÐY[Ð\aÐ[bÐcˆð €Mð	 
�QŠä�8˜8 I ;Ð.UÔV_ÐU`Ð`bÐciÐbjÐjlÐmuÐlvÐvxÐyð  yAð  ACð  DIð  CJð  Kˆà€MrF   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À  é   rW   zDPM++ 2M Karrasr:   éÿÿÿÿrT   )rh   Ú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Ú	b64decoderw   r#   Úwriter6   Ú	ExceptionÚstr)rh   Ú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rU   c                 ó>  — t        «       }t        | «      }t        j                  dd¬«       t	        d«       t	        dt        |«      › d�«       t	        d«       t        |«      dz  }d}t        |«      D ]ú  \  }}t        |«      }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 v2 - z chars x 7 stepsrY   r   Úscenesz
--- z ---r:   Úcamerasr;   z.pngz  [Ú/z] z
    [DRY] z    éx   z...z	    [OK] ÚKBz    [FAIL] rT   z8
=======================================================z  COMPLETADO - z images in )r0   r8   Ú
OUTPUT_DIRÚmkdirÚprintr6   Ú	enumeraterE   rK   Úrangeri   Ú
STEP_NAMESÚSTEP_LABELSr‹   ÚtimeÚsleep)Ú
char_countÚdry_runr'   Ú
charactersÚtotalÚdoneÚcirB   Ú	char_namer^   Úsir\   r]   rh   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ä" :Ö.‰ˆˆIÜ% iÓ0ˆ	Ü�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•ñ) ð /ô8 
ˆ/ÔÜ	ˆO˜D˜6 ¬Z¨LÐ
9Ô:Ü	ˆ(…OrF   Ú__main__zProgression Batch v2)Údescriptionz--charszNumber of characters)ÚtypeÚdefaultÚhelpz	--dry-runÚ
store_truezPrint prompts only)Úactionr¬   )r�   rž   )N)rU   F)&Ú__doc__r}   r�   r3   r›   r>   ÚosÚpathlibr   Ú__file__ÚparentÚBASE_DIRr   r”   r!   r2   rZ   r[   r|   r™   rš   r0   r8   rE   rK   ri   r‹   r§   Ú__name__ÚargparseÚArgumentParserÚparserÚadd_argumentÚintÚ
parse_argsÚargsÚcharsrž   © rF   r/   Ú<module>r¿      s0  ðñó Û Û Û Û 	Û 	Ý á�‹>× Ñ ×'Ñ'€Ø#€	Ø˜Ñ Ð#9Ñ9€
Ø˜*Ñ$Ð'>Ñ>€Ø�zÑ!Ð$4Ñ4€	ð!ð ð.ð 
ðIð ò€
ò€òó:òò-ò(òVó6+ð\ ˆzÒÛØ$ˆX×$Ñ$Ð1GÔH€FØ
×Ñ˜	¨°QÐ=SÐÔTØ
×Ñ˜¨LÐ?SÐÔTØ×ÑÓ€Dá˜Ÿ™¨T¯\©\Ö:ð rF   