John6666 commited on
Commit
84b98e0
·
verified ·
1 Parent(s): 44f1ff8

Upload 6 files

Browse files
Files changed (4) hide show
  1. app.py +61 -85
  2. lora_dict.json +161 -0
  3. modutils.py +21 -18
  4. requirements.txt +1 -1
app.py CHANGED
@@ -232,6 +232,7 @@ load_diffusers_format_model = [
232
  'rubbrband/realcartoon3d_v16',
233
  'rubbrband/realcartoonRealistic_v14',
234
  'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
 
235
  'Raelina/Rae-Diffusion-XL-V2',
236
  'Raelina/Raemu-XL-V4',
237
  ]
@@ -291,7 +292,7 @@ def get_my_lora(link_url):
291
  from pathlib import Path
292
  before = get_local_model_list(directory_loras)
293
  for url in [url.strip() for url in link_url.split(',')]:
294
- if not Path(f"./loras/{url.split('/')[-1]}").exists():
295
  download_things(directory_loras, url, hf_token, CIVITAI_API_KEY)
296
  after = get_local_model_list(directory_loras)
297
  new_files = list_sub(after, before)
@@ -401,8 +402,6 @@ warnings.filterwarnings(action="ignore", category=FutureWarning, module="transfo
401
  from stablepy import logger
402
  logger.setLevel(logging.CRITICAL)
403
 
404
- from transformers.utils.hub import move_cache
405
- move_cache()
406
 
407
  from v2 import (
408
  V2UI,
@@ -475,7 +474,7 @@ def info_html(json_data, title, subtitle):
475
  """
476
 
477
  class GuiSD:
478
- def __init__(self, stream=True):
479
  self.model = None
480
 
481
  print("Loading model...")
@@ -487,6 +486,19 @@ class GuiSD:
487
  retain_task_model_in_cache=False,
488
  )
489
 
 
 
 
 
 
 
 
 
 
 
 
 
 
490
  def load_new_model(self, model_name, vae_model, task, progress=gr.Progress(track_tqdm=True)):
491
 
492
  yield f"Loading model: {model_name}"
@@ -512,7 +524,6 @@ class GuiSD:
512
  )
513
  yield f"Model loaded: {model_name}"
514
 
515
- @spaces.GPU
516
  def generate_pipeline(
517
  self,
518
  prompt,
@@ -616,8 +627,10 @@ class GuiSD:
616
  model_ip2,
617
  mode_ip2,
618
  scale_ip2,
 
619
  ):
620
-
 
621
  vae_model = vae_model if vae_model != "None" else None
622
  loras_list = [lora1, lora2, lora3, lora4, lora5]
623
  vae_msg = f"VAE: {vae_model}" if vae_model else ""
@@ -677,10 +690,10 @@ class GuiSD:
677
  # First load
678
  model_precision = torch.float16
679
  if not self.model:
680
- from modelstream import Model_Diffusers2
681
 
682
  print("Loading model...")
683
- self.model = Model_Diffusers2(
684
  base_model_id=model_name,
685
  task_name=task,
686
  vae_model=vae_model if vae_model != "None" else None,
@@ -830,28 +843,15 @@ class GuiSD:
830
  "ip_adapter_scale": params_ip_scale,
831
  }
832
 
833
- # print(pipe_params)
834
-
835
- random_number = random.randint(1, 100)
836
- if random_number < 25 and num_images < 3:
837
- if not upscaler_model and steps < 45 and task in ["txt2img", "img2img"] and not adetailer_active_a and not adetailer_active_b:
838
- num_images *=2
839
- pipe_params["num_images"] = num_images
840
- gr.Info("Num images x 2 🎉")
841
-
842
- # Maybe fix lora issue: 'Cannot copy out of meta tensor; no data!''
843
- self.model.pipe.to("cuda:0" if torch.cuda.is_available() else "cpu")
844
-
845
  info_state = f"PROCESSING "
846
- for img, seed, data in self.model(**pipe_params):
847
- info_state += ">"
848
- if data:
849
- info_state = f"COMPLETED. Seeds: {str(seed)}"
850
- if vae_msg:
851
- info_state = info_state + "<br>" + vae_msg
852
- if msg_lora:
853
- info_state = info_state + "<br>" + "<br>".join(msg_lora)
854
- yield img, info_state
855
 
856
 
857
  sd_gen = GuiSD()
@@ -899,7 +899,7 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", elem_id="main", css=CSS) as app:
899
  model_name_gui = gr.Dropdown(label="Model", info="You can enter a huggingface model repo_id to want to use.", choices=get_tupled_model_list(model_list), value="votepurchase/animagine-xl-3.1", allow_custom_value=True)
900
  model_info_gui = gr.Markdown()
901
  with gr.Row():
902
- quick_model_type_gui = gr.Radio(label="Model Type", choices=["None", "Animagine", "Pony"], value="None", interactive=True)
903
  quick_genre_gui = gr.Radio(label="Genre", choices=["Anime", "Photo"], value="Anime", interactive=True)
904
  quick_speed_gui = gr.Radio(label="Speed", choices=["Fast", "Standard", "Heavy"], value="Standard", interactive=True)
905
  quick_aspect_gui = gr.Radio(label="Aspect Ratio", choices=["1:1", "3:4"], value="1:1", interactive=True)
@@ -1259,17 +1259,17 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", elem_id="main", css=CSS) as app:
1259
  mask_padding_b_gui = gr.Number(label="Mask padding:", value=32, minimum=1)
1260
 
1261
  with gr.Accordion("Other settings", open=False, visible=True) as menu_other:
1262
- image_previews_gui = gr.Checkbox(value=True, label="Image Previews")
1263
  hires_before_adetailer_gui = gr.Checkbox(value=False, label="Hires Before Adetailer")
1264
  hires_after_adetailer_gui = gr.Checkbox(value=True, label="Hires After Adetailer")
1265
  generator_in_cpu_gui = gr.Checkbox(value=False, label="Generator in CPU")
1266
 
1267
  with gr.Accordion("More settings", open=False, visible=False):
1268
  loop_generation_gui = gr.Slider(minimum=1, value=1, label="Loop Generation")
1269
- retain_task_cache_gui = gr.Checkbox(value=False, label="Retain task model in cache")
1270
  leave_progress_bar_gui = gr.Checkbox(value=True, label="Leave Progress Bar")
1271
  disable_progress_bar_gui = gr.Checkbox(value=False, label="Disable Progress Bar")
1272
- display_images_gui = gr.Checkbox(value=True, label="Display Images")
1273
  save_generated_images_gui = gr.Checkbox(value=False, label="Save Generated Images")
1274
  image_storage_location_gui = gr.Textbox(value="./images", label="Image Storage Location")
1275
  retain_compel_previous_load_gui = gr.Checkbox(value=False, label="Retain Compel Previous Load")
@@ -1619,62 +1619,44 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", elem_id="main", css=CSS) as app:
1619
  )
1620
  model_name_gui.change(get_t2i_model_info, [model_name_gui], [model_info_gui], queue=False)
1621
 
1622
- quick_model_type_gui.change(
1623
- set_quick_presets,
1624
- [quick_genre_gui, quick_model_type_gui, quick_speed_gui, quick_aspect_gui],
1625
- [quality_selector_gui, style_selector_gui, sampler_selector_gui, optimization_gui],
1626
- queue=False,
1627
- )
1628
- quick_genre_gui.change(
1629
- set_quick_presets,
1630
- [quick_genre_gui, quick_model_type_gui, quick_speed_gui, quick_aspect_gui],
1631
- [quality_selector_gui, style_selector_gui, sampler_selector_gui, optimization_gui],
1632
- queue=False,
1633
- )
1634
- quick_speed_gui.change(
1635
- set_quick_presets,
1636
- [quick_genre_gui, quick_model_type_gui, quick_speed_gui, quick_aspect_gui],
1637
- [quality_selector_gui, style_selector_gui, sampler_selector_gui, optimization_gui],
1638
- queue=False,
1639
- )
1640
- quick_aspect_gui.change(
1641
- set_quick_presets,
1642
- [quick_genre_gui, quick_model_type_gui, quick_speed_gui, quick_aspect_gui],
1643
- [quality_selector_gui, style_selector_gui, sampler_selector_gui, optimization_gui],
1644
- queue=False,
1645
- )
1646
- quality_selector_gui.change(
1647
- process_style_prompt,
1648
- [prompt_gui, neg_prompt_gui, style_selector_gui, quality_selector_gui, insert_prompt_gui],
1649
- [prompt_gui, neg_prompt_gui],
1650
  queue=False,
 
1651
  )
1652
- style_selector_gui.change(
1653
- process_style_prompt,
1654
- [prompt_gui, neg_prompt_gui, style_selector_gui, quality_selector_gui, insert_prompt_gui],
1655
- [prompt_gui, neg_prompt_gui],
 
1656
  queue=False,
 
1657
  )
1658
  sampler_selector_gui.change(set_sampler_settings, [sampler_selector_gui], [sampler_gui, steps_gui, cfg_gui, clip_skip_gui, img_width_gui, img_height_gui, optimization_gui], queue=False)
1659
  optimization_gui.change(set_optimization, [optimization_gui, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora5_gui, lora_scale_5_gui], [steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora5_gui, lora_scale_5_gui], queue=False)
1660
 
1661
- lora1_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui])\
1662
- .success(set_lora_trigger, [lora1_gui], [lora1_trigger_gui, lora1_copy_button, lora1_desc_gui, lora1_gui], scroll_to_output=True)
1663
- lora2_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui])\
1664
- .success(set_lora_trigger, [lora2_gui], [lora2_trigger_gui, lora2_copy_button, lora2_desc_gui, lora2_gui], scroll_to_output=True)
1665
- lora3_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui])\
1666
- .success(set_lora_trigger, [lora3_gui], [lora3_trigger_gui, lora3_copy_button, lora3_desc_gui, lora3_gui], scroll_to_output=True)
1667
- lora4_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui])\
1668
- .success(set_lora_trigger, [lora4_gui], [lora4_trigger_gui, lora4_copy_button, lora4_desc_gui, lora4_gui], scroll_to_output=True)
1669
- lora5_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui])\
1670
- .success(set_lora_trigger, [lora5_gui], [lora5_trigger_gui, lora5_copy_button, lora5_desc_gui, lora5_gui], scroll_to_output=True)
1671
  gr.on(
1672
- triggers=[lora_scale_1_gui.change, lora_scale_2_gui.change, lora_scale_3_gui.change,\
1673
  lora_scale_4_gui.change, lora_scale_5_gui.change, prompt_syntax_gui.change],
1674
  fn=set_lora_prompt,
1675
- inputs=[prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui,\
1676
  lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui],
1677
  outputs=[prompt_gui],
 
 
1678
  )
1679
  lora1_copy_button.click(apply_lora_prompt, [prompt_gui, lora1_trigger_gui], [prompt_gui], queue=False)
1680
  lora2_copy_button.click(apply_lora_prompt, [prompt_gui, lora2_trigger_gui], [prompt_gui], queue=False)
@@ -1712,12 +1694,6 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", elem_id="main", css=CSS) as app:
1712
  v2b.input_components = [model_name_dbt, series_dbt, character_dbt, prompt_gui,
1713
  rating_dbt, aspect_ratio_dbt, length_dbt, identity_dbt, ban_tags_dbt]
1714
 
1715
- insert_prompt_gui.change(
1716
- process_style_prompt,
1717
- [prompt_gui, neg_prompt_gui, style_selector_gui, quality_selector_gui, insert_prompt_gui],
1718
- [prompt_gui, neg_prompt_gui],
1719
- queue=False,
1720
- )
1721
  prompt_type_button.click(convert_danbooru_to_e621_prompt, [prompt_gui, prompt_type_gui], [prompt_gui], queue=False)
1722
  random_character_gui.click(select_random_character, [series_dbt, character_dbt], [series_dbt, character_dbt], queue=False)
1723
  generate_db_random_button.click(
@@ -1845,9 +1821,9 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", elem_id="main", css=CSS) as app:
1845
  mode_ip2,
1846
  scale_ip2,
1847
  ],
1848
- outputs=[result_images, actual_task_info],
1849
  queue=True,
1850
- show_progress="minimal",
1851
  ).success(save_gallery_images, [result_images], [result_images, result_images_files, result_images_files], queue=False)
1852
 
1853
  with gr.Tab("Danbooru Tags Transformer with WD Tagger", render=True):
 
232
  'rubbrband/realcartoon3d_v16',
233
  'rubbrband/realcartoonRealistic_v14',
234
  'KBlueLeaf/Kohaku-XL-Epsilon-rev2',
235
+ 'KBlueLeaf/Kohaku-XL-Epsilon-rev3',
236
  'Raelina/Rae-Diffusion-XL-V2',
237
  'Raelina/Raemu-XL-V4',
238
  ]
 
292
  from pathlib import Path
293
  before = get_local_model_list(directory_loras)
294
  for url in [url.strip() for url in link_url.split(',')]:
295
+ if not Path(f"{directory_loras}/{url.split('/')[-1]}").exists():
296
  download_things(directory_loras, url, hf_token, CIVITAI_API_KEY)
297
  after = get_local_model_list(directory_loras)
298
  new_files = list_sub(after, before)
 
402
  from stablepy import logger
403
  logger.setLevel(logging.CRITICAL)
404
 
 
 
405
 
406
  from v2 import (
407
  V2UI,
 
474
  """
475
 
476
  class GuiSD:
477
+ def __init__(self):
478
  self.model = None
479
 
480
  print("Loading model...")
 
486
  retain_task_model_in_cache=False,
487
  )
488
 
489
+ @spaces.GPU
490
+ def infer_short(self, model, pipe_params, progress=gr.Progress(track_tqdm=True)):
491
+ # Maybe fix lora issue: 'Cannot copy out of meta tensor; no data!''
492
+ model.pipe.to("cuda:0" if torch.cuda.is_available() else "cpu")
493
+ progress(0, desc="Start inference...")
494
+ images, image_list = model(**pipe_params)
495
+ progress(1, desc="Inference completed.")
496
+ if not isinstance(images, list): images = [images]
497
+ img = []
498
+ for image in images:
499
+ img.append((image, None))
500
+ return img
501
+
502
  def load_new_model(self, model_name, vae_model, task, progress=gr.Progress(track_tqdm=True)):
503
 
504
  yield f"Loading model: {model_name}"
 
524
  )
525
  yield f"Model loaded: {model_name}"
526
 
 
527
  def generate_pipeline(
528
  self,
529
  prompt,
 
627
  model_ip2,
628
  mode_ip2,
629
  scale_ip2,
630
+ progress=gr.Progress(track_tqdm=True),
631
  ):
632
+ progress(0, desc="Preparing inference...")
633
+
634
  vae_model = vae_model if vae_model != "None" else None
635
  loras_list = [lora1, lora2, lora3, lora4, lora5]
636
  vae_msg = f"VAE: {vae_model}" if vae_model else ""
 
690
  # First load
691
  model_precision = torch.float16
692
  if not self.model:
693
+ from stablepy import Model_Diffusers
694
 
695
  print("Loading model...")
696
+ self.model = Model_Diffusers(
697
  base_model_id=model_name,
698
  task_name=task,
699
  vae_model=vae_model if vae_model != "None" else None,
 
843
  "ip_adapter_scale": params_ip_scale,
844
  }
845
 
846
+ progress(1, desc="Preparing completed.")
 
 
 
 
 
 
 
 
 
 
 
847
  info_state = f"PROCESSING "
848
+ info_state += ">"
849
+ info_state = f"COMPLETED. Seeds: {str(seed)}"
850
+ if vae_msg:
851
+ info_state = info_state + "<br>" + vae_msg
852
+ if msg_lora:
853
+ info_state = info_state + "<br>" + "<br>".join(msg_lora)
854
+ return self.infer_short(self.model, pipe_params), info_state
 
 
855
 
856
 
857
  sd_gen = GuiSD()
 
899
  model_name_gui = gr.Dropdown(label="Model", info="You can enter a huggingface model repo_id to want to use.", choices=get_tupled_model_list(model_list), value="votepurchase/animagine-xl-3.1", allow_custom_value=True)
900
  model_info_gui = gr.Markdown()
901
  with gr.Row():
902
+ quick_model_type_gui = gr.Radio(label="Model Type", choices=["None", "Auto", "Animagine", "Pony"], value="Auto", interactive=True)
903
  quick_genre_gui = gr.Radio(label="Genre", choices=["Anime", "Photo"], value="Anime", interactive=True)
904
  quick_speed_gui = gr.Radio(label="Speed", choices=["Fast", "Standard", "Heavy"], value="Standard", interactive=True)
905
  quick_aspect_gui = gr.Radio(label="Aspect Ratio", choices=["1:1", "3:4"], value="1:1", interactive=True)
 
1259
  mask_padding_b_gui = gr.Number(label="Mask padding:", value=32, minimum=1)
1260
 
1261
  with gr.Accordion("Other settings", open=False, visible=True) as menu_other:
1262
+ image_previews_gui = gr.Checkbox(value=False, label="Image Previews")
1263
  hires_before_adetailer_gui = gr.Checkbox(value=False, label="Hires Before Adetailer")
1264
  hires_after_adetailer_gui = gr.Checkbox(value=True, label="Hires After Adetailer")
1265
  generator_in_cpu_gui = gr.Checkbox(value=False, label="Generator in CPU")
1266
 
1267
  with gr.Accordion("More settings", open=False, visible=False):
1268
  loop_generation_gui = gr.Slider(minimum=1, value=1, label="Loop Generation")
1269
+ retain_task_cache_gui = gr.Checkbox(value=True, label="Retain task model in cache")
1270
  leave_progress_bar_gui = gr.Checkbox(value=True, label="Leave Progress Bar")
1271
  disable_progress_bar_gui = gr.Checkbox(value=False, label="Disable Progress Bar")
1272
+ display_images_gui = gr.Checkbox(value=False, label="Display Images")
1273
  save_generated_images_gui = gr.Checkbox(value=False, label="Save Generated Images")
1274
  image_storage_location_gui = gr.Textbox(value="./images", label="Image Storage Location")
1275
  retain_compel_previous_load_gui = gr.Checkbox(value=False, label="Retain Compel Previous Load")
 
1619
  )
1620
  model_name_gui.change(get_t2i_model_info, [model_name_gui], [model_info_gui], queue=False)
1621
 
1622
+ gr.on(
1623
+ triggers=[quick_model_type_gui.change, quick_genre_gui.change, quick_speed_gui.change, quick_aspect_gui.change],
1624
+ fn=set_quick_presets,
1625
+ inputs=[quick_genre_gui, quick_model_type_gui, quick_speed_gui, quick_aspect_gui],
1626
+ outputs=[quality_selector_gui, style_selector_gui, sampler_selector_gui, optimization_gui, insert_prompt_gui],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1627
  queue=False,
1628
+ trigger_mode="once",
1629
  )
1630
+ gr.on(
1631
+ triggers=[quality_selector_gui.change, style_selector_gui.change, insert_prompt_gui.change],
1632
+ fn=process_style_prompt,
1633
+ inputs=[prompt_gui, neg_prompt_gui, style_selector_gui, quality_selector_gui, insert_prompt_gui],
1634
+ outputs=[prompt_gui, neg_prompt_gui, quick_model_type_gui],
1635
  queue=False,
1636
+ trigger_mode="once",
1637
  )
1638
  sampler_selector_gui.change(set_sampler_settings, [sampler_selector_gui], [sampler_gui, steps_gui, cfg_gui, clip_skip_gui, img_width_gui, img_height_gui, optimization_gui], queue=False)
1639
  optimization_gui.change(set_optimization, [optimization_gui, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora5_gui, lora_scale_5_gui], [steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora5_gui, lora_scale_5_gui], queue=False)
1640
 
1641
+ lora1_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui], queue=False)\
1642
+ .success(set_lora_trigger, [lora1_gui], [lora1_trigger_gui, lora1_copy_button, lora1_desc_gui, lora1_gui], scroll_to_output=True, queue=False)
1643
+ lora2_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui], queue=False)\
1644
+ .success(set_lora_trigger, [lora2_gui], [lora2_trigger_gui, lora2_copy_button, lora2_desc_gui, lora2_gui], scroll_to_output=True, queue=False)
1645
+ lora3_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui], queue=False)\
1646
+ .success(set_lora_trigger, [lora3_gui], [lora3_trigger_gui, lora3_copy_button, lora3_desc_gui, lora3_gui], scroll_to_output=True, queue=False)
1647
+ lora4_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui], queue=False)\
1648
+ .success(set_lora_trigger, [lora4_gui], [lora4_trigger_gui, lora4_copy_button, lora4_desc_gui, lora4_gui], scroll_to_output=True, queue=False)
1649
+ lora5_gui.change(set_lora_prompt, [prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui, lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui], [prompt_gui], queue=False)\
1650
+ .success(set_lora_trigger, [lora5_gui], [lora5_trigger_gui, lora5_copy_button, lora5_desc_gui, lora5_gui], scroll_to_output=True, queue=False)
1651
  gr.on(
1652
+ triggers=[lora_scale_1_gui.change, lora_scale_2_gui.change, lora_scale_3_gui.change,
1653
  lora_scale_4_gui.change, lora_scale_5_gui.change, prompt_syntax_gui.change],
1654
  fn=set_lora_prompt,
1655
+ inputs=[prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui,
1656
  lora3_gui, lora_scale_3_gui, lora4_gui, lora_scale_4_gui, lora5_gui, lora_scale_5_gui],
1657
  outputs=[prompt_gui],
1658
+ trigger_mode="once",
1659
+ queue=False,
1660
  )
1661
  lora1_copy_button.click(apply_lora_prompt, [prompt_gui, lora1_trigger_gui], [prompt_gui], queue=False)
1662
  lora2_copy_button.click(apply_lora_prompt, [prompt_gui, lora2_trigger_gui], [prompt_gui], queue=False)
 
1694
  v2b.input_components = [model_name_dbt, series_dbt, character_dbt, prompt_gui,
1695
  rating_dbt, aspect_ratio_dbt, length_dbt, identity_dbt, ban_tags_dbt]
1696
 
 
 
 
 
 
 
1697
  prompt_type_button.click(convert_danbooru_to_e621_prompt, [prompt_gui, prompt_type_gui], [prompt_gui], queue=False)
1698
  random_character_gui.click(select_random_character, [series_dbt, character_dbt], [series_dbt, character_dbt], queue=False)
1699
  generate_db_random_button.click(
 
1821
  mode_ip2,
1822
  scale_ip2,
1823
  ],
1824
+ outputs=[result_images, actual_task_info],
1825
  queue=True,
1826
+ show_progress="full",
1827
  ).success(save_gallery_images, [result_images], [result_images, result_images_files, result_images_files], queue=False)
1828
 
1829
  with gr.Tab("Danbooru Tags Transformer with WD Tagger", render=True):
lora_dict.json CHANGED
@@ -587,6 +587,13 @@
587
  "https://civitai.com/models/534612",
588
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ba21785e-9a19-4fb7-944b-2651a36cb0c9/width=450/16953072.jpeg"
589
  ],
 
 
 
 
 
 
 
590
  "Fine_Anime_Screencap-PonyV2": [
591
  "fine anime screencap_xl, anime screencap",
592
  "Pony",
@@ -741,6 +748,13 @@
741
  "https://civitai.com/models/537014",
742
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/7370deac-a20d-4229-91e8-07950973d8d5/width=450/17133393.jpeg"
743
  ],
 
 
 
 
 
 
 
744
  "Hentai_Pussy_inspection_Pony_V1": [
745
  "(Multiple layers), multiple views, simple bacground, Character profile, radar chart,zoom layer, close-up layer, breasts out, nippleless clothes, crotch cutout, breastless clothes, no panties, torn clothes, breasts, nipples, puffy nipples, pussy, fat mons, anus, clitoris, gaping, erect clitoris, large CLITORIS, Clitoral hood,",
746
  "Pony",
@@ -790,6 +804,13 @@
790
  "https://civitai.com/models/495860",
791
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/913dfaaa-3959-4def-83e9-991112db2782/width=450/14638692.jpeg"
792
  ],
 
 
 
 
 
 
 
793
  "Hyper-SDXL-12steps-CFG-lora": [
794
  "",
795
  "SDXL Hyper",
@@ -1049,6 +1070,13 @@
1049
  "https://civitai.com/models/544619",
1050
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/50c852ef-82ad-49f5-b5e0-f7ff3548c155/width=450/17631835.jpeg"
1051
  ],
 
 
 
 
 
 
 
1052
  "MiniAXV9XLScreencap": [
1053
  "Anime Screencap",
1054
  "Pony",
@@ -1098,6 +1126,13 @@
1098
  "https://civitai.com/models/558150",
1099
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/e903e134-ad96-4c65-93b5-50b6f7aefd24/width=450/18695088.jpeg"
1100
  ],
 
 
 
 
 
 
 
1101
  "Nimura_YuujiXL": [
1102
  "",
1103
  "SDXL 1.0",
@@ -1182,6 +1217,13 @@
1182
  "https://civitai.com/models/345352",
1183
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/2fc201a9-840c-4c7d-a648-db2cd3639ac3/width=450/16860750.jpeg"
1184
  ],
 
 
 
 
 
 
 
1185
  "PaiControlPdxlDwnsty-000005": [
1186
  "paizuri motion / motion line, motion blur, speed lines",
1187
  "Pony",
@@ -1343,6 +1385,13 @@
1343
  "https://civitai.com/models/540624",
1344
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/f15654c4-f436-42f4-8334-b8ec45e9ccb1/width=450/17379632.jpeg"
1345
  ],
 
 
 
 
 
 
 
1346
  "Reverse_Fellatio_LoRa__PonyXL": [
1347
  "1girl, 1boy, reverse fellatio, head back, deepthroat, uncensored",
1348
  "Pony",
@@ -1595,6 +1644,13 @@
1595
  "https://civitai.com/models/563212",
1596
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/02536d33-fce2-4f1b-988e-a02517591fe2/width=450/18850029.jpeg"
1597
  ],
 
 
 
 
 
 
 
1598
  "Tribadism_for_Pony": [
1599
  "tribadism / scissoring / tribbing / trib / vaginal rubbing / pussies grinding",
1600
  "Pony",
@@ -1665,6 +1721,13 @@
1665
  "https://civitai.com/models/504990",
1666
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/708e949d-7dfd-473b-952a-e09317b679ca/width=450/15176927.jpeg"
1667
  ],
 
 
 
 
 
 
 
1668
  "WatashiHentaiPony": [
1669
  "",
1670
  "Pony",
@@ -1700,6 +1763,13 @@
1700
  "https://civitai.com/models/570360",
1701
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/af88a2b0-ab45-4e67-a03f-ce3f8d3befce/width=450/19316294.jpeg"
1702
  ],
 
 
 
 
 
 
 
1703
  "X-ray_Ver_2_0": [
1704
  "x-ray / x-ray-blowjob / x-ray, anal",
1705
  "Pony",
@@ -1791,6 +1861,13 @@
1791
  "https://civitai.com/models/476605",
1792
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/9015abba-f2a7-4a37-bae5-5b80e37ebba1/width=450/13607816.jpeg"
1793
  ],
 
 
 
 
 
 
 
1794
  "_sdxl-effectnewtype-pony": [
1795
  "effectnewtype",
1796
  "Pony",
@@ -2148,6 +2225,13 @@
2148
  "https://civitai.com/models/474245",
2149
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/004510d3-810d-41b2-85f3-9cf3dc3f84d9/width=450/16422785.jpeg"
2150
  ],
 
 
 
 
 
 
 
2151
  "bioluminescence_monmusu_v15": [
2152
  "bioluminescence / blue glow / cyan glow / green glow / red glow / monster girl / monster girl encyclopedia / scylla / shoggoth / shark girl / mind flayer girl / kraken girl / anglerfish girl / sea slug girl / mermaid / xeno'jiiva / sangonomiya kokomi / skadi dragenfelt / firefly / jellyfish / mushroom / glowworm / phytoplankton / swell shark",
2153
  "Pony",
@@ -2547,6 +2631,13 @@
2547
  "https://civitai.com/models/145887",
2548
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/d5944f71-a1a7-4dcc-927b-5ea70aa1ca5f/width=450/10955692.jpeg"
2549
  ],
 
 
 
 
 
 
 
2550
  "crimepreventionbuzzer_Pony_v1": [
2551
  "crime prevention buzzer",
2552
  "Pony",
@@ -3030,6 +3121,13 @@
3030
  "https://civitai.com/models/568857",
3031
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ed855025-54e5-4dae-bc62-bd18a546a993/width=450/19208208.jpeg"
3032
  ],
 
 
 
 
 
 
 
3033
  "hair_ribbon_pony_V1_0": [
3034
  "hair ribbon",
3035
  "Pony",
@@ -3037,6 +3135,34 @@
3037
  "https://civitai.com/models/568857",
3038
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/b66e4ada-d395-4d06-a6fe-50d2b12008bf/width=450/19226354.jpeg"
3039
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3040
  "hamipan_XL_V1_0": [
3041
  " hamipan, panties under clothes / buruma / shorts",
3042
  "SDXL 1.0",
@@ -3646,6 +3772,13 @@
3646
  "https://civitai.com/models/320709",
3647
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/121cc0d1-e20f-460d-b27d-e4dae494976f/width=450/7081151.jpeg"
3648
  ],
 
 
 
 
 
 
 
3649
  "multi_prolapse_ponyXL_v1": [
3650
  "anal prolapse / uterine prolapse / double prolapse / ovary prolapse",
3651
  "Pony",
@@ -4185,6 +4318,13 @@
4185
  "https://civitai.com/models/541663",
4186
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/f4a1ad57-1835-4088-9ed1-8772d802c249/width=450/17440119.jpeg"
4187
  ],
 
 
 
 
 
 
 
4188
  "pubic_tattoo_Pony_V1_0": [
4189
  "pubic tattoo,tattoo / heart",
4190
  "Pony",
@@ -4584,6 +4724,13 @@
4584
  "https://civitai.com/models/542280",
4585
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/98ef287c-0e72-4582-b5af-ed200c8e2824/width=450/17471785.jpeg"
4586
  ],
 
 
 
 
 
 
 
4587
  "splitXL2": [
4588
  "split",
4589
  "SDXL 1.0",
@@ -4675,6 +4822,13 @@
4675
  "https://civitai.com/models/544991",
4676
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/731ad22b-7f48-46a2-b071-653d6f35baf0/width=450/17658185.jpeg"
4677
  ],
 
 
 
 
 
 
 
4678
  "sukumizu_Pony_V1_1": [
4679
  "swimsuit,school swimsuit / blue one-piece swimsuit / white one-piece swimsuit",
4680
  "Pony",
@@ -5095,6 +5249,13 @@
5095
  "https://civitai.com/models/557389",
5096
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/deedeed2-8c1a-4121-8036-5c7e984c40e7/width=450/18485212.jpeg"
5097
  ],
 
 
 
 
 
 
 
5098
  "wadingpool_Pony_v1": [
5099
  "wading pool",
5100
  "Pony",
 
587
  "https://civitai.com/models/534612",
588
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ba21785e-9a19-4fb7-944b-2651a36cb0c9/width=450/16953072.jpeg"
589
  ],
590
+ "Female_Cunnilingus_POV": [
591
+ "female cunnilingus POV, female, cunnilingus, POV, Nostra666, visible viewer breasts, female pov,",
592
+ "Pony",
593
+ "Female Cunnilingus POV Helper",
594
+ "https://civitai.com/models/573102",
595
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/6d84052f-fa1a-40cf-963b-c9417187139b/width=450/19517005.jpeg"
596
+ ],
597
  "Fine_Anime_Screencap-PonyV2": [
598
  "fine anime screencap_xl, anime screencap",
599
  "Pony",
 
748
  "https://civitai.com/models/537014",
749
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/7370deac-a20d-4229-91e8-07950973d8d5/width=450/17133393.jpeg"
750
  ],
751
+ "Hentai_Pussy_inspection2_Pony_V1": [
752
+ "solo, multiple views, close-up, looking at viewer, cowboy shot, nude, female masturbation, (perfect hand), presenting, anus, clitoris, urethra, pussy, spread pussy, breasts, nipples, pussy juice, cervix, collarbone, sweat, navel, ass, clitoral hood, shiny, gaping, fingernails, shiny skin, stomach, nude, lying, on back, simple background, on bed, blush, smile, full body, standing, ",
753
+ "Pony",
754
+ "Hentai Pussy inspection 2shot Pony XL",
755
+ "https://civitai.com/models/573817",
756
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/e7545528-96c3-4eea-a546-c39d54b11f2c/width=450/19551004.jpeg"
757
+ ],
758
  "Hentai_Pussy_inspection_Pony_V1": [
759
  "(Multiple layers), multiple views, simple bacground, Character profile, radar chart,zoom layer, close-up layer, breasts out, nippleless clothes, crotch cutout, breastless clothes, no panties, torn clothes, breasts, nipples, puffy nipples, pussy, fat mons, anus, clitoris, gaping, erect clitoris, large CLITORIS, Clitoral hood,",
760
  "Pony",
 
804
  "https://civitai.com/models/495860",
805
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/913dfaaa-3959-4def-83e9-991112db2782/width=450/14638692.jpeg"
806
  ],
807
+ "Hussy_in_Phone": [
808
+ "2GIRLS, HUSSY IN PHONE",
809
+ "SDXL 1.0",
810
+ "Hussy in Phone",
811
+ "https://civitai.com/models/571833",
812
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/a091138c-3be3-4475-b70f-fe927558392f/width=450/19533815.jpeg"
813
+ ],
814
  "Hyper-SDXL-12steps-CFG-lora": [
815
  "",
816
  "SDXL Hyper",
 
1070
  "https://civitai.com/models/544619",
1071
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/50c852ef-82ad-49f5-b5e0-f7ff3548c155/width=450/17631835.jpeg"
1072
  ],
1073
+ "MilkCharacterMeme": [
1074
+ "pi-mlk-chr-mm, inset, holding",
1075
+ "Pony",
1076
+ "Character on Milk Carton Meme",
1077
+ "https://civitai.com/models/562753",
1078
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/6f136e74-5105-4fc8-9970-8601566df7d1/width=450/18834618.jpeg"
1079
+ ],
1080
  "MiniAXV9XLScreencap": [
1081
  "Anime Screencap",
1082
  "Pony",
 
1126
  "https://civitai.com/models/558150",
1127
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/e903e134-ad96-4c65-93b5-50b6f7aefd24/width=450/18695088.jpeg"
1128
  ],
1129
+ "Neoteny": [
1130
+ "neoteny / large eyes / small nose / small mouth / plump lips",
1131
+ "Pony",
1132
+ "Neoteny (Youthful Facial Features)",
1133
+ "https://civitai.com/models/568847",
1134
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/d560bb85-4916-42d6-8276-d984857089a0/width=450/19494094.jpeg"
1135
+ ],
1136
  "Nimura_YuujiXL": [
1137
  "",
1138
  "SDXL 1.0",
 
1217
  "https://civitai.com/models/345352",
1218
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/2fc201a9-840c-4c7d-a648-db2cd3639ac3/width=450/16860750.jpeg"
1219
  ],
1220
+ "PVC": [
1221
+ "PVC",
1222
+ "SDXL 1.0",
1223
+ "PVC LoRA/PVC style/PVC\u30b9\u30bf\u30a4\u30eb/PVC \uc2a4\ud0c0\uc77c",
1224
+ "https://civitai.com/models/572550",
1225
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/f6721ee0-5f8e-4029-bdb7-12a049f141c3/width=450/19473087.jpeg"
1226
+ ],
1227
  "PaiControlPdxlDwnsty-000005": [
1228
  "paizuri motion / motion line, motion blur, speed lines",
1229
  "Pony",
 
1385
  "https://civitai.com/models/540624",
1386
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/f15654c4-f436-42f4-8334-b8ec45e9ccb1/width=450/17379632.jpeg"
1387
  ],
1388
+ "RealisticSkinv1_ponyv6_loraplus": [
1389
+ "<lora:RealisticSkinv1_ponyv6_loraplus:1.15:step=15-28>real skin, freckles, mole, dirty skin, ",
1390
+ "Pony",
1391
+ "Realistic Skin for pony",
1392
+ "https://civitai.com/models/572899",
1393
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/453eb876-a8dd-45ab-aba5-e56c88595d3a/width=450/19501372.jpeg"
1394
+ ],
1395
  "Reverse_Fellatio_LoRa__PonyXL": [
1396
  "1girl, 1boy, reverse fellatio, head back, deepthroat, uncensored",
1397
  "Pony",
 
1644
  "https://civitai.com/models/563212",
1645
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/02536d33-fce2-4f1b-988e-a02517591fe2/width=450/18850029.jpeg"
1646
  ],
1647
+ "Transparent_Male_PXL": [
1648
+ "transparent male / disembodied transparent limb / disembodied transparent penis",
1649
+ "Pony",
1650
+ "Transparent Male [PonyXL]",
1651
+ "https://civitai.com/models/573936",
1652
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/84262209-e3e2-4821-84a5-bdf564e5ff6f/width=450/19557719.jpeg"
1653
+ ],
1654
  "Tribadism_for_Pony": [
1655
  "tribadism / scissoring / tribbing / trib / vaginal rubbing / pussies grinding",
1656
  "Pony",
 
1721
  "https://civitai.com/models/504990",
1722
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/708e949d-7dfd-473b-952a-e09317b679ca/width=450/15176927.jpeg"
1723
  ],
1724
+ "VibingDance_(frieren_vibing)_LoRA_PDXL_Anzhc": [
1725
+ "vibingdance, animation sheet, chibi, dancing / simple background, white background",
1726
+ "Pony",
1727
+ "Vibing Dance (Frieren Vibing meme) PDXL",
1728
+ "https://civitai.com/models/571967",
1729
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/a2a343d6-9357-46fb-9865-a00de2e6b39a/width=450/19429555.jpeg"
1730
+ ],
1731
  "WatashiHentaiPony": [
1732
  "",
1733
  "Pony",
 
1763
  "https://civitai.com/models/570360",
1764
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/af88a2b0-ab45-4e67-a03f-ce3f8d3befce/width=450/19316294.jpeg"
1765
  ],
1766
+ "X-Ray_Phone": [
1767
+ "X-RAY PHONE",
1768
+ "Pony",
1769
+ "X-Ray Phone",
1770
+ "https://civitai.com/models/570386",
1771
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/4807350e-69af-48d8-806d-e3d5f5ca5bbb/width=450/19421507.jpeg"
1772
+ ],
1773
  "X-ray_Ver_2_0": [
1774
  "x-ray / x-ray-blowjob / x-ray, anal",
1775
  "Pony",
 
1861
  "https://civitai.com/models/476605",
1862
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/9015abba-f2a7-4a37-bae5-5b80e37ebba1/width=450/13607816.jpeg"
1863
  ],
1864
+ "_sdxl-dontstop-pony": [
1865
+ "dontstop",
1866
+ "Pony",
1867
+ "for PONY, don't_you_ever_stop_(meme) - \u6b62\u307e\u308b\u3093\u3058\u3083\u306d\u3048\u305e LoRA",
1868
+ "https://civitai.com/models/573722",
1869
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/345f8f21-c9af-4faf-83c6-2b5c6cce261a/width=450/19545975.jpeg"
1870
+ ],
1871
  "_sdxl-effectnewtype-pony": [
1872
  "effectnewtype",
1873
  "Pony",
 
2225
  "https://civitai.com/models/474245",
2226
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/004510d3-810d-41b2-85f3-9cf3dc3f84d9/width=450/16422785.jpeg"
2227
  ],
2228
+ "bind_four_sdxl": [
2229
+ "1girl, solo, bind_all, machine, spread legs, bdsm",
2230
+ "Pony",
2231
+ "Hands and legs are bound by the machine",
2232
+ "https://civitai.com/models/572367",
2233
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/65cc350f-a83f-49af-a098-03843d14658b/width=450/19460194.jpeg"
2234
+ ],
2235
  "bioluminescence_monmusu_v15": [
2236
  "bioluminescence / blue glow / cyan glow / green glow / red glow / monster girl / monster girl encyclopedia / scylla / shoggoth / shark girl / mind flayer girl / kraken girl / anglerfish girl / sea slug girl / mermaid / xeno'jiiva / sangonomiya kokomi / skadi dragenfelt / firefly / jellyfish / mushroom / glowworm / phytoplankton / swell shark",
2237
  "Pony",
 
2631
  "https://civitai.com/models/145887",
2632
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/d5944f71-a1a7-4dcc-927b-5ea70aa1ca5f/width=450/10955692.jpeg"
2633
  ],
2634
+ "creepydoll": [
2635
+ "doll / long arms, long legs",
2636
+ "Pony",
2637
+ "Creepy Doll",
2638
+ "https://civitai.com/models/570966",
2639
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/054ce404-1106-4c7e-a459-d90d670aaac2/width=450/19380314.jpeg"
2640
+ ],
2641
  "crimepreventionbuzzer_Pony_v1": [
2642
  "crime prevention buzzer",
2643
  "Pony",
 
3121
  "https://civitai.com/models/568857",
3122
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ed855025-54e5-4dae-bc62-bd18a546a993/width=450/19208208.jpeg"
3123
  ],
3124
+ "hair_ribbon_braid_XL_V1_0": [
3125
+ "hair ribbon braid,hair ribbon / braid",
3126
+ "SDXL 1.0",
3127
+ "\u7de8\u307f\u8fbc\u307f\u30ea\u30dc\u30f3/hair ribbon braid",
3128
+ "https://civitai.com/models/572391",
3129
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/8e51c565-3c37-4525-88fc-b24b72246d81/width=450/19462384.jpeg"
3130
+ ],
3131
  "hair_ribbon_pony_V1_0": [
3132
  "hair ribbon",
3133
  "Pony",
 
3135
  "https://civitai.com/models/568857",
3136
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/b66e4ada-d395-4d06-a6fe-50d2b12008bf/width=450/19226354.jpeg"
3137
  ],
3138
+ "hairless_pussy_baihu": [
3139
+ "Heimuerbaihu Pussy / Pussy / heibaihu pussy",
3140
+ "Pony",
3141
+ "Shaved Pussy\u65e0\u6bdb\u7a74Pony",
3142
+ "https://civitai.com/models/573028",
3143
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/a09bdec1-7f00-451a-8437-8ded4af989cd/width=450/19511290.jpeg"
3144
+ ],
3145
+ "hairy_pussy": [
3146
+ "hairy pussy / maomao / heimuer",
3147
+ "Pony",
3148
+ "hairy pussy\u9ed1\u6728\u8033\u9c8d\u9c7cPony",
3149
+ "https://civitai.com/models/572312",
3150
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/953380b7-3116-42cb-950d-c47b50ad8fa3/width=450/19465465.jpeg"
3151
+ ],
3152
+ "hairy_pussystanding": [
3153
+ "Hairy Pussy / yingmao",
3154
+ "Pony",
3155
+ "Hairy Pussy(Standing)",
3156
+ "https://civitai.com/models/572665",
3157
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/d666c491-d65f-49e5-bfe2-b0658ed035df/width=450/19485170.jpeg"
3158
+ ],
3159
+ "hairywomenxl": [
3160
+ "1woman, excessive pubic hair, pussy juice, hairy anus, anus, hairy arms, hairy legs, hairy thighs, hairy stomach, hairy armpits, happy trail, (Pubic Hair:1.4), large breasts / hairywomenxl",
3161
+ "SDXL 1.0",
3162
+ "hairy_womenXL",
3163
+ "https://civitai.com/models/572643",
3164
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ca34c1d0-9cb4-4c0b-b572-e0bd50327080/width=450/19481548.jpeg"
3165
+ ],
3166
  "hamipan_XL_V1_0": [
3167
  " hamipan, panties under clothes / buruma / shorts",
3168
  "SDXL 1.0",
 
3772
  "https://civitai.com/models/320709",
3773
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/121cc0d1-e20f-460d-b27d-e4dae494976f/width=450/7081151.jpeg"
3774
  ],
3775
+ "mugshot_pony_ver1": [
3776
+ "mugshot / holding sign",
3777
+ "Pony",
3778
+ "(Pony) mugshot",
3779
+ "https://civitai.com/models/573056",
3780
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/c3c99a9a-f2cf-4c20-ae4b-a03ded327311/width=450/19512503.jpeg"
3781
+ ],
3782
  "multi_prolapse_ponyXL_v1": [
3783
  "anal prolapse / uterine prolapse / double prolapse / ovary prolapse",
3784
  "Pony",
 
4318
  "https://civitai.com/models/541663",
4319
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/f4a1ad57-1835-4088-9ed1-8772d802c249/width=450/17440119.jpeg"
4320
  ],
4321
+ "pubic_hair_XL_V1_0": [
4322
+ "pubic hair",
4323
+ "SDXL 1.0",
4324
+ "\u30de\u30f3\u6bdb/pubic hair",
4325
+ "https://civitai.com/models/572782",
4326
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/bf9525c7-e755-475d-86d6-c958af21be24/width=450/19491907.jpeg"
4327
+ ],
4328
  "pubic_tattoo_Pony_V1_0": [
4329
  "pubic tattoo,tattoo / heart",
4330
  "Pony",
 
4724
  "https://civitai.com/models/542280",
4725
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/98ef287c-0e72-4582-b5af-ed200c8e2824/width=450/17471785.jpeg"
4726
  ],
4727
+ "spfigmaFigurineXLPony2": [
4728
+ "3d, figma, depth of field, blurry background",
4729
+ "Pony",
4730
+ "[PonyXL] Figma Figurines \u30d5\u30a3\u30b0\u30de || Concept / Style",
4731
+ "https://civitai.com/models/573646",
4732
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/99afd187-fba0-443b-b34b-63060541789b/width=450/19544489.jpeg"
4733
+ ],
4734
  "splitXL2": [
4735
  "split",
4736
  "SDXL 1.0",
 
4822
  "https://civitai.com/models/544991",
4823
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/731ad22b-7f48-46a2-b071-653d6f35baf0/width=450/17658185.jpeg"
4824
  ],
4825
+ "suction_dildo_masturbation": [
4826
+ "fuckingherself, 1woman, suction_dildo, suction_cup_dildo, dildo, female_masturbation, vaginal, uncensored pussy, looking_back, ahegao, pussy juice, / against_glass, glass_wall, / against wall, wall, ",
4827
+ "SDXL 1.0",
4828
+ "suction_dildo_masturbation",
4829
+ "https://civitai.com/models/572613",
4830
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/ad3ce7ac-af94-412d-9c1a-de186f8b9df9/width=450/19479975.jpeg"
4831
+ ],
4832
  "sukumizu_Pony_V1_1": [
4833
  "swimsuit,school swimsuit / blue one-piece swimsuit / white one-piece swimsuit",
4834
  "Pony",
 
5249
  "https://civitai.com/models/557389",
5250
  "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/deedeed2-8c1a-4121-8036-5c7e984c40e7/width=450/18485212.jpeg"
5251
  ],
5252
+ "vore_frog": [
5253
+ "vored / frog / ass / breast",
5254
+ "Pony",
5255
+ "[PonyXL] Vored by Frog",
5256
+ "https://civitai.com/models/572375",
5257
+ "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/0b409539-77e6-494e-b5fd-c4266a8cc7e1/width=450/19460494.jpeg"
5258
+ ],
5259
  "wadingpool_Pony_v1": [
5260
  "wading pool",
5261
  "Pony",
modutils.py CHANGED
@@ -224,8 +224,7 @@ def get_tupled_model_list(model_list):
224
 
225
  def save_gallery_images(images):
226
  from datetime import datetime, timezone, timedelta
227
- japan_tz = timezone(timedelta(hours=9))
228
- dt_now = datetime.utcnow().replace(tzinfo=timezone.utc).astimezone(japan_tz)
229
  basename = dt_now.strftime('%Y%m%d_%H%M%S_')
230
  i = 1
231
  if not images: return images
@@ -234,7 +233,7 @@ def save_gallery_images(images):
234
  for image in images:
235
  from pathlib import Path
236
  filename = basename + str(i) + ".png"
237
- oldpath = Path(image[0])
238
  newpath = oldpath.resolve().rename(Path(filename).resolve())
239
  output_paths.append(str(newpath))
240
  output_images.append((str(newpath), str(filename)))
@@ -261,7 +260,7 @@ optimization_list = {
261
  }
262
 
263
 
264
- def set_optimization(opt, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora1_gui, lora_scale_1_gui):
265
  if not opt in list(optimization_list.keys()): opt = "None"
266
  def_steps_gui = 28
267
  def_cfg_gui = 7.
@@ -269,8 +268,8 @@ def set_optimization(opt, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora1_
269
  cfg = optimization_list.get(opt, "None")[1]
270
  sampler = optimization_list.get(opt, "None")[2]
271
  clip_skip = optimization_list.get(opt, "None")[3]
272
- lora1 = optimization_list.get(opt, "None")[4]
273
- lora_scale_1 = optimization_list.get(opt, "None")[5]
274
  if opt == "None":
275
  steps = max(steps_gui, def_steps_gui)
276
  cfg = max(cfg_gui, def_cfg_gui)
@@ -280,7 +279,7 @@ def set_optimization(opt, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora1_
280
  cfg = max(cfg_gui, def_cfg_gui)
281
 
282
  return gr.update(value=steps), gr.update(value=cfg), gr.update(value=sampler),\
283
- gr.update(value=clip_skip), gr.update(value=lora1), gr.update(value=lora_scale_1),
284
 
285
 
286
  def set_lora_prompt(prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui,\
@@ -460,8 +459,10 @@ def apply_lora_prompt(prompt_gui: str, lora_trigger_gui: str):
460
  return gr.update(value=prompt)
461
 
462
 
463
- def upload_file_lora(files):
 
464
  file_paths = [file.name for file in files]
 
465
  return gr.update(value=file_paths, visible=True), gr.update(visible=True)
466
 
467
 
@@ -686,7 +687,7 @@ preset_styles = {k["name"]: (k["prompt"], k["negative_prompt"]) for k in style_l
686
  preset_quality = {k["name"]: (k["prompt"], k["negative_prompt"]) for k in quality_prompt_list}
687
 
688
 
689
- def process_style_prompt(prompt: str, neg_prompt: str, styles_key: str = "None", quality_key: str = "None", type: str = "None"):
690
  def to_list(s):
691
  return [x.strip() for x in s.split(",") if not s == ""]
692
 
@@ -723,8 +724,8 @@ def process_style_prompt(prompt: str, neg_prompt: str, styles_key: str = "None",
723
  prompts = list_sub(prompts, animagine_ps + pony_ps + all_styles_ps + all_quality_ps)
724
  neg_prompts = list_sub(neg_prompts, animagine_nps + pony_nps + all_styles_nps + all_quality_nps)
725
 
726
- last_empty_p = [""] if not prompts and type != "None" and styles_key != "None" and quality_key != "None" else []
727
- last_empty_np = [""] if not neg_prompts and type != "None" and styles_key != "None" and quality_key != "None" else []
728
 
729
  if type == "Animagine":
730
  prompts = prompts + animagine_ps
@@ -739,17 +740,17 @@ def process_style_prompt(prompt: str, neg_prompt: str, styles_key: str = "None",
739
  prompt = ", ".join(list_uniq(prompts) + last_empty_p)
740
  neg_prompt = ", ".join(list_uniq(neg_prompts) + last_empty_np)
741
 
742
- return prompt, neg_prompt
743
 
744
 
745
- def set_quick_presets(genre:str = "None", type:str = "None", speed:str = "None", aspect:str = "None"):
746
  quality = "None"
747
  style = "None"
748
  sampler = "None"
749
  opt = "None"
750
 
751
  if genre == "Anime":
752
- style = "Anime"
753
  if aspect == "1:1":
754
  if speed == "Heavy":
755
  sampler = "Anime 1:1 Heavy"
@@ -766,10 +767,12 @@ def set_quick_presets(genre:str = "None", type:str = "None", speed:str = "None",
766
  sampler = "Anime 3:4 Standard"
767
  if type == "Pony":
768
  quality = "Pony Anime Common"
769
- else:
770
  quality = "Animagine Common"
 
 
771
  elif genre == "Photo":
772
- style = "Photographic"
773
  if aspect == "1:1":
774
  if speed == "Heavy":
775
  sampler = "Photo 1:1 Heavy"
@@ -791,9 +794,9 @@ def set_quick_presets(genre:str = "None", type:str = "None", speed:str = "None",
791
 
792
  if speed == "Fast":
793
  opt = "DPO Turbo"
794
- if genre == "Anime" and type != "Pony": quality = "Animagine Light v3.1"
795
 
796
- return gr.update(value=quality), gr.update(value=style), gr.update(value=sampler), gr.update(value=opt)
797
 
798
 
799
  textual_inversion_dict = {}
 
224
 
225
  def save_gallery_images(images):
226
  from datetime import datetime, timezone, timedelta
227
+ dt_now = datetime.now(timezone(timedelta(hours=9)))
 
228
  basename = dt_now.strftime('%Y%m%d_%H%M%S_')
229
  i = 1
230
  if not images: return images
 
233
  for image in images:
234
  from pathlib import Path
235
  filename = basename + str(i) + ".png"
236
+ oldpath = Path(image[0]) # Path(image[0])
237
  newpath = oldpath.resolve().rename(Path(filename).resolve())
238
  output_paths.append(str(newpath))
239
  output_images.append((str(newpath), str(filename)))
 
260
  }
261
 
262
 
263
+ def set_optimization(opt, steps_gui, cfg_gui, sampler_gui, clip_skip_gui, lora_gui, lora_scale_gui):
264
  if not opt in list(optimization_list.keys()): opt = "None"
265
  def_steps_gui = 28
266
  def_cfg_gui = 7.
 
268
  cfg = optimization_list.get(opt, "None")[1]
269
  sampler = optimization_list.get(opt, "None")[2]
270
  clip_skip = optimization_list.get(opt, "None")[3]
271
+ lora = optimization_list.get(opt, "None")[4]
272
+ lora_scale = optimization_list.get(opt, "None")[5]
273
  if opt == "None":
274
  steps = max(steps_gui, def_steps_gui)
275
  cfg = max(cfg_gui, def_cfg_gui)
 
279
  cfg = max(cfg_gui, def_cfg_gui)
280
 
281
  return gr.update(value=steps), gr.update(value=cfg), gr.update(value=sampler),\
282
+ gr.update(value=clip_skip), gr.update(value=lora), gr.update(value=lora_scale),
283
 
284
 
285
  def set_lora_prompt(prompt_gui, prompt_syntax_gui, lora1_gui, lora_scale_1_gui, lora2_gui, lora_scale_2_gui,\
 
459
  return gr.update(value=prompt)
460
 
461
 
462
+ def upload_file_lora(files, progress=gr.Progress(track_tqdm=True)):
463
+ progress(0, desc="Uploading...")
464
  file_paths = [file.name for file in files]
465
+ progress(1, desc="Uploaded.")
466
  return gr.update(value=file_paths, visible=True), gr.update(visible=True)
467
 
468
 
 
687
  preset_quality = {k["name"]: (k["prompt"], k["negative_prompt"]) for k in quality_prompt_list}
688
 
689
 
690
+ def process_style_prompt(prompt: str, neg_prompt: str, styles_key: str = "None", quality_key: str = "None", type: str = "Auto"):
691
  def to_list(s):
692
  return [x.strip() for x in s.split(",") if not s == ""]
693
 
 
724
  prompts = list_sub(prompts, animagine_ps + pony_ps + all_styles_ps + all_quality_ps)
725
  neg_prompts = list_sub(neg_prompts, animagine_nps + pony_nps + all_styles_nps + all_quality_nps)
726
 
727
+ last_empty_p = [""] if not prompts and type != "None" and type != "Auto" and styles_key != "None" and quality_key != "None" else []
728
+ last_empty_np = [""] if not neg_prompts and type != "None" and type != "Auto" and styles_key != "None" and quality_key != "None" else []
729
 
730
  if type == "Animagine":
731
  prompts = prompts + animagine_ps
 
740
  prompt = ", ".join(list_uniq(prompts) + last_empty_p)
741
  neg_prompt = ", ".join(list_uniq(neg_prompts) + last_empty_np)
742
 
743
+ return gr.update(value=prompt), gr.update(value=neg_prompt), gr.update(value=type)
744
 
745
 
746
+ def set_quick_presets(genre:str = "None", type:str = "Auto", speed:str = "None", aspect:str = "None"):
747
  quality = "None"
748
  style = "None"
749
  sampler = "None"
750
  opt = "None"
751
 
752
  if genre == "Anime":
753
+ if type != "None" and type != "Auto": style = "Anime"
754
  if aspect == "1:1":
755
  if speed == "Heavy":
756
  sampler = "Anime 1:1 Heavy"
 
767
  sampler = "Anime 3:4 Standard"
768
  if type == "Pony":
769
  quality = "Pony Anime Common"
770
+ elif type == "Animagine":
771
  quality = "Animagine Common"
772
+ else:
773
+ quality = "None"
774
  elif genre == "Photo":
775
+ if type != "None" and type != "Auto": style = "Photographic"
776
  if aspect == "1:1":
777
  if speed == "Heavy":
778
  sampler = "Photo 1:1 Heavy"
 
794
 
795
  if speed == "Fast":
796
  opt = "DPO Turbo"
797
+ if genre == "Anime" and type != "Pony" and type != "Auto": quality = "Animagine Light v3.1"
798
 
799
+ return gr.update(value=quality), gr.update(value=style), gr.update(value=sampler), gr.update(value=opt), gr.update(value=type)
800
 
801
 
802
  textual_inversion_dict = {}
requirements.txt CHANGED
@@ -1,4 +1,4 @@
1
- git+https://github.com/R3gm/stablepy.git@test_stream
2
  torch==2.2.0
3
  gdown
4
  opencv-python
 
1
+ git+https://github.com/R3gm/stablepy.git@dev2
2
  torch==2.2.0
3
  gdown
4
  opencv-python