File size: 3,266 Bytes
063b292
 
3a46525
063b292
a7d308b
 
3a46525
d4423e5
 
 
0bb5a0b
 
063b292
 
 
 
88ba3ca
063b292
3a46525
d4423e5
3a46525
 
063b292
 
 
a7d308b
 
88ba3ca
063b292
 
 
 
 
 
3a46525
063b292
3a46525
063b292
 
 
 
 
 
3a46525
063b292
 
 
 
a7d308b
 
063b292
 
 
88ba3ca
063b292
d4423e5
063b292
6d17160
88ba3ca
 
7e8dfc1
3a46525
7e8dfc1
 
3a46525
 
88ba3ca
 
 
 
 
 
d4423e5
88ba3ca
 
 
3a46525
 
 
88ba3ca
3a46525
88ba3ca
 
 
 
 
3a46525
88ba3ca
7e8dfc1
3a46525
 
 
 
88ba3ca
 
3a46525
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
import gradio as gr
import time
import random

random_seed = None

models = [
    "Yntec/ChickFlick",
    "Yntec/CrystalReality",
    "Yntec/DegreesOfFreedom",
]

model_functions = {}
model_idx = 1
for model_path in models:
    try:
        model_functions[model_idx] = gr.Interface.load(f"models/{model_path}", live=False, preprocess=True, postprocess=False)
    except Exception as error:
        def the_fn(txt, seed=None):
            return None
        model_functions[model_idx] = gr.Interface(fn=the_fn, inputs=["text", "number"], outputs=["image"])
    model_idx += 1

def send_it_idx(idx):
    def send_it_fn(prompt):
        global random_seed
        output = (model_functions.get(idx) or model_functions.get(1))(prompt, random_seed)
        return output
    return send_it_fn

def get_prompts(prompt_text):
    return prompt_text

def clear_it(val):
    return 0

def all_task_end(cnt, t_stamp):
    to = t_stamp + 360
    et = time.time()
    if et > to and t_stamp != 0:
        d = gr.update(value=0)
        tog = gr.update(value=1)
    else:
        d = gr.update(value=et if cnt != 0 else 0)
        tog = gr.update(value=0)
    return d, tog

def all_task_start():
    global random_seed
    random_seed = random.randint(0, 2**32 - 1)
    t_stamp = time.time()
    return gr.update(value=t_stamp), gr.update(value=t_stamp), gr.update(value=0)

def clear_fn():
    nn = len(models)
    return tuple([None, *[None for _ in range(nn)]])

with gr.Blocks(title="SD Models") as my_interface:
    with gr.Column(scale=12):
        with gr.Row():
            with gr.Row(scale=6):
                primary_prompt = gr.Textbox(label="Prompt", value="")
            with gr.Row(scale=6):
                with gr.Row():
                    run = gr.Button("Run", variant="primary")
                    clear_btn = gr.Button("Clear")
        with gr.Row():
            sd_outputs = {}
            model_idx = 1
            for model_path in models:
                with gr.Column(scale=3, min_width=320):
                    with gr.Box():
                        sd_outputs[model_idx] = gr.Image(label=model_path)
                model_idx += 1

        with gr.Row(visible=False):
            start_box = gr.Number(interactive=False)
            end_box = gr.Number(interactive=False)
            tog_box = gr.Textbox(value=0, interactive=False)

        start_box.change(all_task_end, [start_box, end_box], [start_box, tog_box], every=1, show_progress=True)
        primary_prompt.submit(all_task_start, None, [start_box, end_box, tog_box])
        run.click(all_task_start, None, [start_box, end_box, tog_box])
        runs_dict = {}
        model_idx = 1
        for model_path in models:
            runs_dict[model_idx] = run.click(send_it_idx(model_idx), inputs=[primary_prompt], outputs=[sd_outputs[model_idx]])
            model_idx += 1

        clear_btn.click(clear_fn, None, [primary_prompt, *list(sd_outputs.values())], cancels=[*list(runs_dict.values())])
        tog_box.change(clear_it, tog_box, tog_box, cancels=[*list(runs_dict.values())])

text_gen1 = gr.Interface.load("spaces/phenomenon1981/MagicPrompt-Stable-Diffusion")

my_interface.queue(concurrency_count=600, status_update_rate=1)
my_interface.launch(inline=True, show_api=True)