charliebaby2023's picture
Update app.py
edc0a4e verified
import gradio as gr
from random import randint
from all_models import models
from datetime import datetime
kii = "mohawk femboy racecar driver"
def get_current_time():
now = datetime.now()
current_time = now.strftime("%Y-%m-%d %H:%M:%S")
return f'{kii} {current_time}'
def load_fn(models):
models_load = {}
for model in models:
if model not in models_load:
try:
m = gr.load(f'models/{model}') # Adjust `gr.load` as needed
except Exception as error:
m = gr.Interface(lambda txt: None, ['text'], ['image'])
models_load[model] = m
return models_load
models_load = load_fn(models)
num_models = len(models)
default_models = models[:num_models]
def extend_choices(choices):
return choices + (num_models - len(choices)) * ['NA']
def update_imgbox(choices):
choices_plus = extend_choices(choices)
return [gr.Image(None, label=m, visible=(m != 'NA')) for m in choices_plus]
def gen_fn(model_str, prompt):
if model_str == 'NA':
return None
noise = str(randint(0, 9999))
combined_prompt = f'{prompt} {model_str} {noise}'
print(f"Generating with prompt: {combined_prompt}") # Debug line
return models_load.get(model_str, lambda txt: None)(f'{prompt} {noise}')
def make_me():
with gr.Row():
txt_input = gr.Textbox(label='Your prompt:', lines=2, value=kii)
gen_button = gr.Button('Generate images', elem_id="generate-btn")
stop_button = gr.Button('Stop', variant='secondary', interactive=False)
gen_button.click(lambda: gr.update(interactive=True), None, stop_button)
gr.HTML("""
<div style="text-align: center; max-width: 100%; margin: 0 auto;">
<body></body>
</div>
""")
with gr.Row():
output = [gr.Image(label=m, width=170, height=170) for m in default_models]
current_models = [gr.Textbox(value=m, visible=False) for m in default_models]
for m, o in zip(current_models, output):
gen_button.click(gen_fn, inputs=[m, txt_input], outputs=o)
js_code = """
<script>
const originalScroll = window.scrollTo;
const originalShowToast = gradio.Toast.show;
gradio.Toast.show = function() {
originalShowToast.apply(this, arguments);
window.scrollTo = function() {};
};
setTimeout(() => {
window.scrollTo = originalScroll;
}, 3000); // Restore scroll function after 3 seconds
</script>
"""
with gr.Blocks() as demo:
gr.Markdown("<div></div>")
make_me()
gr.Markdown(js_code)
demo.queue(concurrency_count=50)
demo.launch()