from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse import gradio as gr import os import sys import random import string import time from queue import Queue from threading import Thread import requests import io from PIL import Image app = FastAPI() API_URL = "https://api-inference.huggingface.co/models/playgroundai/playground-v2-1024px-aesthetic" API_TOKEN = os.getenv("HF_READ_TOKEN") # it is free headers = {"Authorization": f"Bearer {API_TOKEN}"} def generate_image(prompt): payload = {"inputs": prompt} response = requests.post(API_URL, headers=headers, json=payload) image_bytes = response.content image = Image.open(io.BytesIO(image_bytes)) return image text_gen = gr.Interface.load("models/Gustavosta/MagicPrompt-Stable-Diffusion") proc1 = gr.Interface.load("models/playgroundai/playground-v2-1024px-aesthetic") 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): if not prompt_text: return "Please enter text before generating prompts.ØąØŦØ§ØĄ اد؎Ų„ اŲ„Ų†Øĩ اŲˆŲ„ا" raise gr.Error("Please enter text before generating prompts.ØąØŦØ§ØĄ اد؎Ų„ اŲ„Ų†Øĩ اŲˆŲ„ا") else: global request_counter request_counter += 1 timestamp = f"{time.time()}_{request_counter}" options = [ "Cyberpunk android", "2060", "newyork", "style of laurie greasley" , "studio ghibli" , "akira toriyama" , "james gilleard" , "genshin impact" , "trending pixiv fanbox" , "acrylic palette knife, 4k, vibrant colors, devinart, trending on artstation, low details" "Editorial Photography, Shot on 70mm lens, Depth of Field, Bokeh, DOF, Tilt Blur, Shutter Speed 1/1000, F/22, 32k, Super-Resolution, award winning,", "high detail, warm lighting, godrays, vivid, beautiful, trending on artstation, by jordan grimmer, huge scene, grass, art greg rutkowski ", "highly detailed, digital painting, artstation, illustration, art by artgerm and greg rutkowski and alphonse mucha.", "Charlie Bowater, stanley artgerm lau, a character portrait, sots art, sharp focus, smooth, aesthetic, extremely detailed, octane render,solo, dark industrial background, rtx, rock clothes, cinematic light, intricate detail, highly detailed, high res, detailed facial features", "portrait photograph" , "realistic" , "concept art" , "elegant, highly detailed" , "intricate, sharp focus, depth of field, f/1. 8, 85mm, medium shot, mid shot, (((professionally color graded)))" ," sharp focus, bright soft diffused light" , "(volumetric fog),", "Cinematic film still" ," (dark city street:1.2)" , "(cold colors), damp, moist, intricate details" ,"shallow depth of field, [volumetric fog]" , "cinematic lighting, reflections, photographed on a Canon EOS R5, 50mm lens, F/2.8, HDR, 8k resolution" , "cinematic film still from cyberpunk movie" , "volumetric fog, (RAW, analog, masterpiece, best quality, soft particles, 8k, flawless perfect face, intricate details" , "trending on artstation, trending on cgsociety, dlsr, ultra sharp, hdr, rtx, antialiasing, canon 5d foto))" , "((skin details, high detailed skin texture))" , "(((perfect face))), (perfect eyes)))", # Add other prompt options here... ] if prompt_text: chosen_option = random.choice(options) return text_gen(f"{prompt_text}, {chosen_option} - {timestamp}") else: return text_gen("", timestamp) @app.get("/generate_prompts") def generate_prompts(prompt_text: str): return get_prompts(prompt_text) @app.get("/send_inputs") def send_inputs(inputs: str, noise_level: float): generated_image = generate_image(inputs) return generated_image app.mount("/", StaticFiles(directory="static", html=True), name="static") @app.get("/") def index() -> FileResponse: return FileResponse(path="/app/static/index.html", media_type="text/html")