Spaces:
Running
Running
import gradio as gr | |
import os | |
import requests | |
import random | |
import time | |
r = requests.get(f'https://huggingface.co/spaces/xp3857/text-to-image/raw/main/css.css') | |
css = r.text | |
name2 = "runwayml/stable-diffusion-v1-5" | |
model = gr.Interface.load(f"models/{name2}") | |
models=[ | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
gr.Interface.load(f"models/{name2}"), | |
] | |
#o = os.getenv("P") | |
o = "V" | |
m_out = (""" | |
<div id="restart"> | |
<h3 id="head">Loading Time Limit Reached.</h3><br> | |
<h4 id="cont">Please choose a Simpler Prompt, or <b>Upgrade</b> for faster loading.</h4> | |
</div> | |
""") | |
loading=(""" | |
<style> | |
.lds-ellipsis { | |
display: inline-block; | |
position: relative; | |
width: 80px; | |
height: 80px; | |
} | |
.lds-ellipsis div { | |
position: absolute; | |
z-index:199999; | |
top: 33px; | |
width: 13px; | |
height: 13px; | |
border-radius: 50%; | |
background: blue; | |
animation-timing-function: cubic-bezier(0, 1, 1, 0); | |
} | |
.lds-ellipsis div:nth-child(1) { | |
left: 8px; | |
animation: lds-ellipsis1 0.6s infinite; | |
} | |
.lds-ellipsis div:nth-child(2) { | |
left: 8px; | |
animation: lds-ellipsis2 0.6s infinite; | |
} | |
.lds-ellipsis div:nth-child(3) { | |
left: 32px; | |
animation: lds-ellipsis2 0.6s infinite; | |
} | |
.lds-ellipsis div:nth-child(4) { | |
left: 56px; | |
animation: lds-ellipsis3 0.6s infinite; | |
} | |
@keyframes lds-ellipsis1 { | |
0% { | |
transform: scale(0); | |
} | |
100% { | |
transform: scale(1); | |
} | |
} | |
@keyframes lds-ellipsis3 { | |
0% { | |
transform: scale(1); | |
} | |
100% { | |
transform: scale(0); | |
}frames lds-ellipsis2 { | |
0% { | |
transform: translate(0, 0); | |
} | |
100% { | |
transform: translate(24px, 0); | |
} | |
} | |
} | |
@keyframes lds-ellipsis2 { | |
0% { | |
transform: translate(0, 0); | |
} | |
100% { | |
transform: translate(24px, 0); | |
} | |
} | |
</style> | |
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>""") | |
def ac(): | |
def clear(): | |
return gr.update(value=0),gr.update(value=0) | |
def start(): | |
stamp = time.time() | |
return gr.update(value=stamp),gr.update(value=0) | |
def end(stamp): | |
ts = stamp + 120 | |
ti = time.time() | |
if ti > ts and stamp != 0: | |
return gr.update(value=1),gr.HTML.update(f"{m_out}",visible=True) | |
else: | |
return gr.update(value=0),None | |
def im_fn(put,fac="",h=None): | |
try: | |
if h == o: | |
put = f"{put}{fac}" | |
fac = f"{fac} " | |
rn = random.randint(0, 19) | |
model=models[rn] | |
return model(put),fac | |
elif h != o: | |
return(None,None) | |
except Exception: | |
return None, None | |
def cl_fac(): | |
return "",gr.HTML.update(f"{loading}") | |
with gr.Blocks(css=css) as b: | |
with gr.Row(): | |
with gr.Column(): | |
put = gr.Textbox() | |
with gr.Column(): | |
with gr.Row(): | |
btn1 = gr.Button("Run") | |
btn2 = gr.Button("Clear") | |
message=gr.HTML("<div></div>") | |
message2=gr.HTML("",visible=False) | |
with gr.Row(): | |
out1 = gr.Image() | |
out2 = gr.Image() | |
with gr.Row(): | |
out3 = gr.Image() | |
out4 = gr.Image() | |
with gr.Row(visible=False): | |
h=gr.Textbox(value="V") | |
t_state=gr.Number() | |
t_switch=gr.Textbox(value=0) | |
def clear_all(): | |
return "",None,None,None,None,None,None,1,gr.HTML.update("<div></div>") | |
fac_b = gr.Textbox(value="",visible=False) | |
def noth(): | |
return gr.HTML.update("<div></div>") | |
#a1=btn1.click(noth,None,btn1,every=1) | |
btn1.click(cl_fac,None,[fac_b,message],show_progress=False) | |
b1=btn1.click(start,None,[t_state,t_switch],show_progress=True) | |
sta = t_state.change(end,t_state,[t_switch,message2],every=1,show_progress=True) | |
b2=btn1.click(im_fn,[put,fac_b,h],[out1,fac_b], show_progress=True) | |
b3=out1.change(im_fn,[put,fac_b,h],[out2,fac_b], show_progress=True) | |
b4=out2.change(im_fn,[put,fac_b,h],[out3,fac_b], show_progress=True) | |
b5=out3.change(im_fn,[put,fac_b,h],[out4,fac_b], show_progress=True) | |
b6=out4.change(noth,None,message, show_progress=False) | |
swi=t_switch.change(clear,None,[t_switch,fac_b], cancels=[sta,b2,b3,b4,b5],show_progress=False) | |
#btn2.click(noth,None,message,cancels=[b1,sta,b2,b3,b4,b5,swi],show_progress=False) | |
btn2.click(clear_all, None,[fac_b,put,out1,out2,out3,out4,t_state,t_switch,message],cancels=[b1,sta,b2,b3,b4,b5,swi],show_progress=False) | |
b.queue(concurrency_count=100).launch(show_api=False) | |
ac() |