import gradio as gr import os import sys from pathlib import Path import random import string import time from queue import Queue from threading import Thread import emoji def pipe(val): return val ru2en = gr.Interface.load("huggingface/Helsinki-NLP/opus-mt-ru-en") text_gen=gr.Interface.load("spaces/phenomenon1981/MagicPrompt-Stable-Diffusion") def get_prompts(prompt_text): return text_gen("photo, " + prompt_text + ", high details, harmony, ideal proportions") proc1=gr.Interface.load("models/dreamlike-art/dreamlike-photoreal-2.0") def restart_script_periodically(): while True: time.sleep(600) # 100 minutes try: os.execl(sys.executable, sys.executable, *sys.argv) except: pass restart_thread = Thread(target=restart_script_periodically, daemon=True) restart_thread.start() queue = Queue() queue_threshold = 800 def add_random_noise(prompt, noise_level=0.00): if noise_level == 0: noise_level = 0.00 # Get the percentage of characters to add as noise percentage_noise = noise_level * 5 # Get the number of characters to add as noise num_noise_chars = int(len(prompt) * (percentage_noise/100)) # Get the indices of the characters to add noise to noise_indices = random.sample(range(len(prompt)), num_noise_chars) # Add noise to the selected characters prompt_list = list(prompt) # Add numbers, special characters, and all emojis to the list of characters used to add noise noise_chars = string.ascii_letters + string.punctuation + ' ' + string.digits + emoji.emojize(":all:") for index in noise_indices: prompt_list[index] = random.choice(noise_chars) return "".join(prompt_list) def send_it(inputs, noise_level, proc1=proc1): prompt_with_noise = add_random_noise(inputs, noise_level) output = proc1(prompt_with_noise) return output with gr.Blocks(analytics_enabled=False, css='style.css') as demo: with gr.Column(elem_id="col-container"): with gr.Row(elem_id="shorts"): input_text_ru = gr.Textbox( label="Short Ru", placeholder="девушка", ) Translate = gr.Button("Ru ➡ En").style(full_width=False) input_text = gr.Textbox( label="Short En", placeholder="girl", ) with gr.Row(elem_id="longs"): with gr.Column(scale=1000): prompt = gr.Textbox( label="Prompt", placeholder="proto, girl, high details", ) with gr.Column(scale=1): Literally = gr.Button("↩ Literally") Explain = gr.Button("↩ Explain") with gr.Row(elem_id="params"): with gr.Column(): noise_level = gr.Slider(minimum=0.0, value=1.0, maximum=3, step=0.1, label="Noise Level") with gr.Row(elem_id="paints"): with gr.Column(): run1 = gr.Button("⬇ Paint") output1=gr.Image() with gr.Column(): run2 = gr.Button("⬇ Paint") output2=gr.Image() with gr.Column(): run3 = gr.Button("⬇ Paint") output3=gr.Image() # with gr.Column(): # run4 = gr.Button("⬇ Paint") # output4=gr.Image() gr.Markdown("Have a fun!") Literally.click(pipe, inputs=[input_text], outputs=[prompt], queue=False) Translate.click(ru2en, inputs=[input_text_ru], outputs=[input_text], queue=False) Explain.click(get_prompts, inputs=[input_text], outputs=[prompt], queue=False) run1.click(send_it, inputs=[prompt, noise_level], outputs=[output1]) run2.click(send_it, inputs=[prompt, noise_level], outputs=[output2]) run3.click(send_it, inputs=[prompt, noise_level], outputs=[output3]) # run4.click(send_it, inputs=[prompt, noise_level], outputs=[output4]) demo.launch(enable_queue=True, inline=True) block.queue(concurrency_count=2)