File size: 4,002 Bytes
6fef025 89c5f18 f5b8400 53b0019 0318f31 b5a428c 53b0019 0318f31 c469318 0318f31 b21c027 f5b8400 6fef025 81987e1 6fef025 19aac56 f5b8400 6fef025 f5b8400 6fef025 f5b8400 0318f31 6fef025 f5b8400 25a1729 6177a01 6fef025 bdcf524 6b70d61 0318f31 3977ac5 8f8f343 3977ac5 0318f31 8f8f343 0318f31 8f8f343 89c5f18 0318f31 8f8f343 0318f31 8f8f343 556ec8a 0318f31 556ec8a 41c7400 0318f31 e5beca8 8fc64ff 0318f31 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
import gradio as gr
from random import randint
from all_models import models
from datetime import datetime
now2 = 0
kii = "dog"
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=600, min_height=300)
gen_button = gr.Button('Generate up to 6 images in up to 3 minutes total').style(max_width=400, max_height=200)
stop_button = gr.Button('Stop', variant='secondary', interactive=False).style(max_width=400, max_height=200)
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.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>
""")
# Custom JavaScript to prevent auto-scrolling on error toast
js_code = """
document.addEventListener('DOMContentLoaded', function() {
const observer = new MutationObserver(function(mutations) {
for (let mutation of mutations) {
if (mutation.addedNodes.length && mutation.addedNodes[0].classList.contains('alert')) {
window.scrollTo({top: window.scrollY});
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
});
"""
with gr.Blocks(css=".toast-wrap {position:absolute!important; bottom:0%!important; top:auto!important; display:none!important; }") as demo:
gr.Markdown("<script>" + js_code + "</script>")
make_me()
demo.queue(concurrency_count=200)
demo.launch()
|