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()