Jugg-XL / app.py
djrana's picture
Update app.py
b55cd10 verified
import gradio as gr
import os
import requests
import random
import time
name2 = "stablediffusionapi/juggernaut-xl-v8"
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">
<h4 id="head">Loading Time Limit Reached. Please choose a Simpler Prompt</h4><br>
</div>
""")
loading=("""
<div class="lds-ellipsis"><div></div><div></div><div></div><div></div></div>""")
def ac():
# ... (functions for button logic and image generation)
with gr.Blocks() as b:
with gr.Row():
# Title and description
gr.Markdown("## Text-to-Image Generator with Juggernaut-XL-v8")
gr.Markdown(
"""
**Description:**
This Gradio interface harnesses the power of 20 Juggernaut-XL-v8 models to create breathtaking images from your text prompts.
**Features:**
- Parallel processing for faster generation
- Timeout handling for complex prompts
- Clear progress indicators
- Ability to generate multiple images sequentially
- User-friendly interface
**Instructions:**
1. Enter your text prompt in the text box.
2. Click the "Create" button.
3. Watch as up to 4 images are generated sequentially.
4. Click "Clear" to start a new prompt.
**Tips:**
- Use descriptive and imaginative prompts for best results.
- Experiment with different prompts and styles.
- Be patient, as complex prompts may take longer to generate.
"""
)
# ... (rest of your interface layout)
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() as b:
with gr.Row():
with gr.Column():
put = gr.Textbox()
with gr.Column():
with gr.Row():
btn1 = gr.Button("Create")
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()