|
import gradio as gr |
|
from random import randint |
|
from all_models import models |
|
from datetime import datetime |
|
|
|
|
|
now2=0 |
|
|
|
|
|
|
|
|
|
kii= "5characters, interracial, BREAK , (1femboy, upside down, white nude kneeling, tiny penis, medium breasts, nipples pierced, blindfolded, legs spread, pee dripping from chin, mouth wide open, leather collar, chain leash), BREAK, (4men black nude standing, peeing from glans, peeing on femboy), realisitic human textures," |
|
|
|
|
|
|
|
MODEL_LIST = [ |
|
"Bakanayatsu/ponyDiffusion-V6-XL-Turbo-DPO", |
|
"John6666/mala-anime-mix-nsfw-pony-xl-v3-sdxl", |
|
"John6666/momoiro-pony-v14-sdxl", |
|
"John6666/real-mix-pony-v01-sdxl", |
|
"John6666/photo-realistic-pony-v5-sdxl", |
|
"Yntec/nuipenimix", |
|
"Yntec/iffyMix", |
|
"Yntec/mistoonAnime2", |
|
"Yntec/nuipenimix2", |
|
"Yntec/YiffyMix", |
|
] |
|
def get_current_time(): |
|
now = datetime.now() |
|
now2=now |
|
current_time = now2.strftime("%Y-%m-%d %H:%M:%S") |
|
|
|
ki=f'{kii} {current_time}' |
|
return ki |
|
|
|
|
|
def load_fn(models): |
|
global models_load |
|
models_load = {} |
|
|
|
for model in models: |
|
if model not in models_load.keys(): |
|
try: |
|
m = gr.load(f'models/{model}') |
|
except Exception as error: |
|
m = gr.Interface(lambda txt: None, ['text'], ['image']) |
|
models_load.update({model: m}) |
|
|
|
|
|
|
|
load_fn(models) |
|
|
|
|
|
num_models = len(models) |
|
default_models = models[:num_models] |
|
|
|
|
|
|
|
def extend_choices(choices): |
|
return choices + (num_models - len(choices)) * ['NA'] |
|
|
|
|
|
def update_imgbox(choices): |
|
choices_plus = extend_choices(choices) |
|
return [gr.Image(None, label = m, visible = (m != 'NA')) for m in choices_plus] |
|
|
|
|
|
def gen_fn(model_str, prompt): |
|
if model_str == 'NA': |
|
return None |
|
noise = str(randint(0, 9999)) |
|
|
|
return models_load[model_str](f'{prompt} {noise}') |
|
|
|
|
|
|
|
def make_me(): |
|
with gr.Tab('The Dream'): |
|
txt_input = gr.Textbox(label = 'Your prompt:', lines=4, value=kii ).style(container=False,min_width=1200) |
|
gen_button = gr.Button('Generate up to 6 images in up to 3 minutes total') |
|
stop_button = gr.Button('Stop', variant = 'secondary', interactive = False) |
|
gen_button.click(lambda s: gr.update(interactive = True), None, stop_button) |
|
gr.HTML( |
|
""" |
|
<div style="text-align: center; max-width: 1200px; margin: 0 auto;"> |
|
<div> |
|
<body> |
|
<div class="center"><p style="margin-bottom: 10px; color: #000000;">Scroll down to see more images and select models.</p> |
|
</div> |
|
</body> |
|
</div> |
|
</div> |
|
""" |
|
) |
|
with gr.Row(): |
|
output = [gr.Image(label = m, min_width=280) for m in default_models] |
|
current_models = [gr.Textbox(m, visible = False) for m in default_models] |
|
|
|
for m, o in zip(current_models, output): |
|
gen_event = gen_button.click(gen_fn, [m, txt_input], o) |
|
stop_button.click(lambda s: gr.update(interactive = False), None, stop_button, cancels = [gen_event]) |
|
with gr.Accordion('Model selection'): |
|
model_choice = gr.CheckboxGroup(models, label = f'Choose up to {num_models} different models from the 800 available!', value = default_models, multiselect = True, max_choices = num_models, interactive = True, filterable = False) |
|
model_choice.change(update_imgbox, model_choice, output) |
|
model_choice.change(extend_choices, model_choice, current_models) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Blocks(theme="miittnnss/green", title="Play with Stable Diffusion Models") as playground: |
|
gr.HTML( |
|
""" |
|
<div style="text-align: center; margin: 0 auto;"> |
|
<div style="display: inline-flex; align-items: center; gap: 0.8rem; font-size: 1.75rem;"> |
|
<h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;">๐จ๐ค Play with SD Models</h1> |
|
</div> |
|
<p style="margin-bottom: 10px; font-size: 94%; line-height: 23px;"> |
|
Explore and create your AI art with Stable Diffusion models! |
|
</p> |
|
</div> |
|
""" |
|
) |
|
|
|
with gr.Row(): |
|
image_output = gr.Image(type="pil", label="Output Image", elem_id="gallery") |
|
with gr.Column(elem_id="prompt-container"): |
|
text_prompt = gr.Textbox(label="Prompt", placeholder="a cute cat", lines=1, elem_id="prompt-text-input") |
|
model_dropdown = gr.Dropdown(label="Model", choices=MODEL_LIST, elem_id="model-dropdown", value="runwayml/stable-diffusion-v1-5") |
|
gen_button = gr.Button("Generate", variant='primary', elem_id="gen-button") |
|
|
|
with gr.Accordion("Advanced settings", open=False): |
|
negative_prompt = gr.Textbox(label="Negative Prompt", value="text, blurry, fuzziness", lines=1, elem_id="negative-prompt-text-input") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Row(): |
|
gr.HTML( |
|
""" |
|
<div class="footer"> |
|
<p> Based on the <a href="https://huggingface.co/spaces/derwahnsinn/TestGen">TestGen</a> Space by derwahnsinn, the <a href="https://huggingface.co/spaces/RdnUser77/SpacIO_v1">SpacIO</a> Space by RdnUser77 and Omnibus's Maximum Multiplier! |
|
</p> |
|
""" |
|
) |
|
|
|
with gr.Blocks() as demo: |
|
make_me() |
|
|
|
demo.queue(concurrency_count = 200) |
|
demo.launch() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|