File size: 3,573 Bytes
88474c0
180b8b5
 
e6db718
180b8b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e6db718
180b8b5
 
 
e6db718
180b8b5
 
 
 
 
 
 
e6db718
180b8b5
e6db718
180b8b5
 
 
 
 
 
e6db718
180b8b5
 
 
 
 
 
 
 
 
e6db718
180b8b5
 
 
 
e6db718
 
 
 
 
180b8b5
 
 
 
 
 
 
 
 
 
e6db718
 
 
180b8b5
 
 
 
 
 
e6db718
 
180b8b5
 
 
e6db718
180b8b5
 
 
e6db718
 
 
 
 
180b8b5
e6db718
180b8b5
 
 
 
e6db718
 
180b8b5
 
 
 
e6db718
 
 
 
180b8b5
 
e6db718
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import gradio as gr
import time

models = [
    "mann-e/Mann-E_Dreams",
    "Yntec/ChickFlick",
    "John6666/ultimate-realistic-mix-v2-sdxl",
    "Yntec/CrystalReality",
    "John6666/9527-detail-realistic-xl-v55mix-sdxl",
    "John6666/epicrealism-xl-v8kiss-sdxl",
    "John6666/wai-real-mix-v8-sdxl",
    "John6666/real-vis-xl-v40-sdxl",
    "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):
            return None
        model_functions[model_idx] = gr.Interface(fn=the_fn, inputs=["text"], outputs=["image"])
    model_idx += 1

def send_it_idx(idx):
    def send_it_fn(prompt):
        output = (model_functions.get(idx) or model_functions.get(1))(prompt)
        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 gr.update(value=0)
        tog = gr.update(value=0)
    return d, tog

def all_task_start():
    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 (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.Column(scale=6):
                primary_prompt = gr.Textbox(label="Prompt", value="")
            with gr.Column(scale=6):
                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)