File size: 2,644 Bytes
6fef025
89c5f18
edc0a4e
53b0019
 
edc0a4e
 
 
 
 
 
 
 
 
f5b8400
edc0a4e
f5b8400
edc0a4e
 
 
 
 
 
 
 
 
 
 
 
 
6fef025
fc20ddf
edc0a4e
 
 
 
 
 
 
 
 
 
f5b8400
edc0a4e
1fb3ca0
25a1729
481d7cd
edc0a4e
 
 
1fb3ca0
 
bdcf524
fc20ddf
edc0a4e
9b21a4a
edc0a4e
 
 
 
 
 
 
 
9b21a4a
 
edc0a4e
 
 
 
 
9b21a4a
 
 
 
 
 
 
 
 
 
 
5b9e78e
9b21a4a
 
 
 
edc0a4e
9b21a4a
 
 
 
 
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
import gradio as gr
from random import randint
from all_models import models
from datetime import datetime

kii = "mohawk femboy racecar driver"


def get_current_time():
    now = datetime.now()
    current_time = now.strftime("%Y-%m-%d %H:%M:%S")
    return f'{kii} {current_time}'


def load_fn(models):
    models_load = {}
    for model in models:
        if model not in models_load:
            try:
                m = gr.load(f'models/{model}')  # Adjust `gr.load` as needed
            except Exception as error:
                m = gr.Interface(lambda txt: None, ['text'], ['image'])
            models_load[model] = m
    return models_load


models_load = 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))
    combined_prompt = f'{prompt} {model_str} {noise}'
    print(f"Generating with prompt: {combined_prompt}")  # Debug line

    return models_load.get(model_str, lambda txt: None)(f'{prompt} {noise}')


def make_me():
    with gr.Row():
        txt_input = gr.Textbox(label='Your prompt:', lines=2, value=kii)
        gen_button = gr.Button('Generate images', elem_id="generate-btn")
        stop_button = gr.Button('Stop', variant='secondary', interactive=False)
        gen_button.click(lambda: gr.update(interactive=True), None, stop_button)

        gr.HTML("""
        <div style="text-align: center; max-width: 100%; margin: 0 auto;">
            <body></body>
        </div>
        """)

    with gr.Row():
        output = [gr.Image(label=m, width=170, height=170) for m in default_models]
        current_models = [gr.Textbox(value=m, visible=False) for m in default_models]
        for m, o in zip(current_models, output):
            gen_button.click(gen_fn, inputs=[m, txt_input], outputs=o)


js_code = """
<script>
    const originalScroll = window.scrollTo;
    const originalShowToast = gradio.Toast.show;
    gradio.Toast.show = function() {
        originalShowToast.apply(this, arguments);
        window.scrollTo = function() {};
    };
    setTimeout(() => {
        window.scrollTo = originalScroll;
    }, 3000); // Restore scroll function after 3 seconds
</script>
"""

with gr.Blocks() as demo:
    gr.Markdown("<div></div>")
    make_me()
    gr.Markdown(js_code)

demo.queue(concurrency_count=50)
demo.launch()