Spaces:
Paused
Paused
| import gradio as gr | |
| import os | |
| import sys | |
| import random | |
| import string | |
| import time | |
| from queue import Queue | |
| from threading import Thread | |
| text_gen = gr.load(name="spaces/Ashrafb/MagicPrompt-Stable-Diffusiongust") | |
| proc1 = gr.Interface.load("models/runwayml/stable-diffusion-v1-5") | |
| def get_prompts(prompt_text): | |
| return text_gen(prompt_text) | |
| def restart_script_periodically(): | |
| while True: | |
| random_time = random.randint(540, 600) | |
| time.sleep(random_time) | |
| os.execl(sys.executable, sys.executable, *sys.argv) | |
| restart_thread = Thread(target=restart_script_periodically, daemon=True) | |
| restart_thread.start() | |
| queue = Queue() | |
| queue_threshold = 100 | |
| def add_random_noise(prompt, noise_level=0.00): | |
| if noise_level == 0: | |
| noise_level = 0.00 | |
| percentage_noise = noise_level * 5 | |
| num_noise_chars = int(len(prompt) * (percentage_noise / 100)) | |
| noise_indices = random.sample(range(len(prompt)), num_noise_chars) | |
| prompt_list = list(prompt) | |
| noise_chars = list(string.ascii_letters + string.punctuation + ' ' + string.digits) | |
| noise_chars.extend(['๐', '๐ฉ', '๐', '๐ค', '๐', '๐ค', '๐ญ', '๐', '๐ท', '๐คฏ', '๐คซ', '๐ฅด', '๐ด', '๐คฉ', '๐ฅณ', '๐', '๐ฉ', '๐คช', '๐', '๐คข', '๐', '๐น', '๐ป', '๐ค', '๐ฝ', '๐', '๐', '๐ ', '๐', '๐', '๐', '๐', '๐', '๐', '๐ฎ', 'โค๏ธ', '๐', '๐', '๐', '๐', '๐ถ', '๐ฑ', '๐ญ', '๐น', '๐ฆ', '๐ป', '๐จ', '๐ฏ', '๐ฆ', '๐', '๐ฅ', '๐ง๏ธ', '๐', '๐', '๐ฅ', '๐ด', '๐', '๐บ', '๐ป', '๐ธ', '๐จ', '๐ ', '๐', 'โ๏ธ', 'โ๏ธ', 'โ๏ธ', 'โ๏ธ', '๐ค๏ธ', 'โ ๏ธ', '๐ฅ๏ธ', '๐ฆ๏ธ', '๐ง๏ธ', '๐ฉ๏ธ', '๐จ๏ธ', '๐ซ๏ธ', 'โ๏ธ', '๐ฌ๏ธ', '๐จ', '๐ช๏ธ', '๐']) | |
| for index in noise_indices: | |
| prompt_list[index] = random.choice(noise_chars) | |
| return "".join(prompt_list) | |
| # Existing code... | |
| import uuid # Import the UUID library | |
| # Existing code... | |
| # Existing code... | |
| request_counter = 0 # Global counter to track requests | |
| def send_it1(inputs, noise_level, proc=proc1): | |
| global request_counter | |
| request_counter += 1 | |
| timestamp = f"{time.time()}_{request_counter}" | |
| prompt_with_noise = add_random_noise(inputs, noise_level) + f" - {timestamp}" | |
| try: | |
| while queue.qsize() >= queue_threshold: | |
| time.sleep(2) | |
| queue.put(prompt_with_noise) | |
| output = proc(prompt_with_noise) | |
| return output | |
| except Exception as e: | |
| # Display a generic error message to the user | |
| raise gr.Error("Experiencing high demand. Please retry shortly. Thank you for your patience.") | |
| with gr.Blocks(css="footer{display:none !important;}",) as demo: | |
| gr.HTML("""<div style="text-align: center; max-width: 700px; margin: 0 auto;"> | |
| <div | |
| style=" | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.8rem; | |
| font-size: 1.75rem; | |
| " | |
| > | |
| <h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;"> | |
| Magic Diffusion ๐ช | |
| </h1> | |
| </div> | |
| <p style="margin-bottom: 10px; font-size: 94%"> | |
| This Space prettifies your prompt using MagicPrompt | |
| and then runs it through Stable Diffusion to create aesthetically pleasing images. Simply enter a few concepts and let it improve your prompt. You can then diffuse the prompt. | |
| </p> | |
| </div>""") | |
| with gr.Column(elem_id="col-container"): | |
| with gr.Row(variant="compact"): | |
| input_text = gr.Textbox( | |
| lines=4, | |
| label="Short text prompt", | |
| max_lines=8, | |
| placeholder="", | |
| ).style( | |
| textarea={'height': '400px'} | |
| ) | |
| see_prompts = gr.Button("โจ Feed in your text! โจ") | |
| with gr.Row(variant="compact"): | |
| prompt = gr.Textbox( | |
| lines=4, | |
| label="Prettified text prompt", | |
| max_lines=10, | |
| placeholder="Full Prompt", | |
| ).style( | |
| textarea={'height': '400px'} | |
| ) | |
| run = gr.Button("Diffuse the Prompt!") | |
| with gr.Row(): | |
| with gr.Row(): | |
| noise_level = gr.Slider(minimum=0.0, maximum=3, step=0.1, label="Noise Level") | |
| with gr.Row(): | |
| with gr.Row(): | |
| output1 = gr.Image(label="Dreamlike Diffusion 1.0", show_label=False, show_share_button=False) | |
| output2 = gr.Image(label="Dreamlike Diffusion 1.0", show_label=False, show_share_button=False) | |
| output3 = gr.Image(label="Dreamlike Diffusion 1.0", show_label=False, show_share_button=False) | |
| see_prompts.click(get_prompts, inputs=[input_text], outputs=[prompt], queue=False) | |
| run.click(send_it1, inputs=[prompt, noise_level], outputs=[output1]) | |
| run.click(send_it1, inputs=[prompt, noise_level], outputs=[output2]) | |
| run.click(send_it1, inputs=[prompt, noise_level], outputs=[output3]) | |
| demo.launch(enable_queue=True, inline=True) | |