File size: 3,424 Bytes
988597d
 
 
c0e3d62
af1e780
e498f21
af1e780
 
 
e915550
988597d
 
 
 
 
 
c0e3d62
988597d
 
 
 
c0e3d62
988597d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c0e3d62
199e195
988597d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1bf2991
988597d
 
c0e3d62
 
 
 
 
988597d
 
 
 
af1e780
988597d
 
 
 
c0e3d62
 
 
988597d
 
 
 
 
 
c0e3d62
 
988597d
 
 
 
 
 
 
 
 
 
 
 
 
c0e3d62
 
988597d
 
 
 
c0e3d62
 
988597d
e915550
c0e3d62
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
import gradio as gr
import time

models = [
    "adirik/flux-cinestill",
    "kudzueye/boreal-flux-dev-v2",
    "alvdansen/flux_film_foto",
    "alvdansen/pola-photo-flux",
    "XLabs-AI/flux-RealismLora",
    "black-forest-labs/FLUX.1-dev",
]

model_functions = {}
model_idx = 1
for model_path in models:
    try:
        model_functions[model_idx] = gr.load(f"models/{model_path}", live=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(str(idx)) or model_functions.get(str(1)))(prompt)
        return output
    return send_it_fn

def get_prompts(prompt_text):
    return prompt_text

def clear_it(val):
    if int(val) != 0:
        val = 0
    else:
        val = 0
    return val

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:
        if cnt != 0:
            d = gr.update(value=et)
        else:
            d = gr.update(value=0)
        tog = gr.update(value=0)
    return d, tog

def all_task_start():
    t = time.gmtime()
    t_stamp = time.time()
    current_time = time.strftime("%H:%M:%S", t)
    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():
                primary_prompt = gr.Textbox(label="Prompt", value="")
            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=200):
                    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(model_functions[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())]
        )

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