Testopenj / app.py
Ashrafb's picture
Update app.py
1f31be6
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.Interface.load("models/Gustavosta/MagicPrompt-Stable-Diffusion")
proc1 = gr.Interface.load("models/Joeythemonster/anything-midjourney-v-4-1")
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}"
while queue.qsize() >= queue_threshold:
time.sleep(2)
queue.put(prompt_with_noise)
output = proc(prompt_with_noise)
return output
def get_prompts(prompt_text):
global request_counter
request_counter += 1
timestamp = f"{time.time()}_{request_counter}"
if prompt_text:
return text_gen("mdjrny-v4 style, " + prompt_text + f" - {timestamp}")
else:
return text_gen("", timestamp)
# Existing code...
# Existing code...
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;
">
<div>
<h1 style="
text-align: center;
font-weight: bold;
color: #800000;
font-family: 'Courier New', Courier, monospace;
font-size: 25px;
margin-top: 40px;">
Experience the Next Level of Image Creation with the New Artigen Version (Artigen v.2)
</h1>
<h2 style=" Color :#4682B4;
font-family : "Brush Script MT", cursive;
font-size: 30px;
margin-top: 30px;" >fast and easy</h2>
</div>
</div>
<p style="margin-bottom: 10px; font-size: 96%;">
Noise Level: Controls how much randomness is added to the input before it is sent to the model. Higher noise level produces more diverse outputs, while lower noise level produces similar outputs.
</p>
</div>
""")
with gr.Column(elem_id="col-container"):
with gr.Row(variant="compact"):
input_text = gr.Textbox(
lines=8,
label="Short Prompt",
show_label=False,
max_lines=10,
placeholder="Enter a basic idea and click 'Magic Prompt'. Got no ideas? No problem, Simply just hit the magic button!",
).style(
container=False,
textarea={'height': '400px'}
)
see_prompts = gr.Button("โœจ Magic Prompt โœจ").style(full_width=False)
with gr.Row(variant="compact"):
prompt = gr.Textbox(
lines=8,
label="Enter your prompt",
show_label=False,
max_lines=10,
placeholder="Full Prompt",
).style(
container=False,
textarea={'height': '400px'}
)
run = gr.Button("Generate Images").style(full_width=False)
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)
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])
gr.HTML("""
<div class="footer" style="margin-bottom: 45px;
margin-top: 35px;
text-align: center;
border-bottom: 1px solid #e5e5e5"
>
<p style="font-size: .8rem;
display: inline-block;
padding: 0 10px;
transform: translateY(10px);
background: white" >
</p>
</div>
<div class="acknowledgments" style="margin: 1.25em 0 .25em 0;
font-size: 96%">
<p> โค๏ธUnleash your creative side and generate mesmerizing images with just a few clicks! Enter a spark of inspiration in the "Basic Idea" text box and click the "Magic Prompt" button to elevate it to a polished masterpiece. Make any final tweaks in the "Full Prompt" box and hit the "Generate Images" button to watch your vision come to life. Experiment with the "Noise Level" for a diverse range of outputs, from similar to wildly unique. Let the fun begin!โค๏ธ
</p>
</div>
""")
demo.launch(enable_queue=True, inline=True)