Spaces:
Runtime error
Runtime error
File size: 7,036 Bytes
6a20884 6d8c23b 6a20884 5bdb7ed 953f4c0 2083734 953f4c0 e50be38 6a20884 6d8c23b 2083734 953f4c0 6d8c23b 5bdb7ed 6d8c23b a117519 6a20884 a117519 6a20884 a117519 6a20884 a117519 6a20884 5bdb7ed a117519 6a20884 6d8c23b 6a20884 5bdb7ed 6d8c23b 5bdb7ed 953f4c0 6a20884 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
import gradio as gr
import requests
import time
import requests
import base64
token = '5UAYO8UWHNQKT3UUS9H8V360L76MD72DRIUY9QC2'
##############################################################
#################################################
def SD_call(prompt, image_prompt, age, weight, color, hair_color,hair_length,hair_texture,skin_details,eye_colors,NSFW):
positive = "clothes"
negative = "naked, nsfw, porn"
serverless_api_id = '7c9nnp0b3ordr8'
# Define the URL you want to send the request to
url = f"https://api.runpod.ai/v2/{serverless_api_id}/runsync"
# Define your custom headers
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/json",
"Content-Type": "application/json"
}
if NSFW == True:
positive = "naked, nsfw"
negative = "clothes"
if prompt.strip():
total_prompt = prompt
else:
color = ", ".join(color)
skin_details = ", ".join(skin_details)
total_prompt = f"masterpiece, best quality, 8k, (looking at viewer:1.1), gorgeous, hot, seductive, {age} years old american {color} woman, {weight} woman, (eye contact:1.1), beautiful face, hyper detailed, best quality, ultra high res, {hair_length} {hair_color} {hair_texture} hair,{eye_colors} eyes, {skin_details} photorealistic, high resolution, detailed, raw photo, 1girl,{image_prompt}, amateur cellphone photography. f8.0, samsung galaxy, noise, jpeg artefacts, poor lighting, low light, underexposed, high contrast "
# Define your data (this could also be a JSON payload)
print("SD_processing")
# data = {
# "input": {
# "api": {
# "method": "POST",
# "endpoint": "/sdapi/v1/txt2img"
# },
# "payload": {
# "override_settings": {
# "sd_model_checkpoint": "CyberRealistic",
# "sd_vae": ""
# },
# "override_settings_restore_afterwards": True,
# "refiner_checkpoint": "",
# "refiner_switch_at": 0.8,
# "prompt": f"{total_prompt}, {positive}",
# "negative_prompt": f"EasyNegative, fat, paintings, sketches, lowres, ((monochrome)), ((grayscale)), bad anatomy, text, error, cropped, signature, watermark, username, blurry, bad feet, poorly drawn face, bad proportions, gross proportions, ng_deepnegative_v1_75t, badhandsv5-neg, {negative}",
# "seed": -1,
# "batch_size": 1,
# "steps": 30,
# "cfg_scale": 7,
# "width": 520,
# "height": 520,
# "sampler_name": "DPM++ SDE Karras",
# "sampler_index": "DPM++ SDE Karras",
# "restore_faces": False
# }
# }
# }
data = {
"input": {
"prompt": f"{total_prompt}, {positive}",
"negative_prompt": f"EasyNegative, fat, paintings, sketches, lowres, ((monochrome)), ((grayscale)), bad anatomy, text, error, cropped, signature, watermark, username, blurry, bad feet, poorly drawn face, bad proportions, gross proportions, ng_deepnegative_v1_75t, badhandsv5-neg, {negative}",
"width": 512,
"height": 720,
"guidance_scale": 7.5,
"num_inference_steps": 50,
"num_outputs": 1,
"prompt_strength": 0.8,
"scheduler": "K-LMS"
}
}
# Send the POST request with headers and data
response = requests.post(url, headers=headers, json=data)
# Check the response
if response.status_code == 200:
response_data = response.json()
msg_id = response_data['id']
print("Message ID:", msg_id)
# Poll the status until it's not 'IN_QUEUE'
while response_data['status'] == 'IN_QUEUE':
time.sleep(5) # Wait for 5 seconds before checking again
print("1")
response = requests.get(f"{url}/{msg_id}", headers=headers)
try:
response_data = response.json()
except Exception as e:
print("Error decoding JSON:", e)
print("Response content:", response.text)
break # Exit the loop on JSON decoding error
# Check if the response contains images
if 'images' in response_data.get('output', {}):
print("image")
base64_image = response_data['output']['images'][0]
image_bytes = base64.b64decode(base64_image)
# Save the image to a file
image_path = f"output_image_{msg_id}.png"
with open(image_path, "wb") as img_file:
img_file.write(image_bytes)
print(f"Image downloaded successfully: {image_path}")
return image_path
else:
return "No images found in the response."
else:
# Print error message
return f"Error: {response.status_code} - {response.text}"
def greet(prompt, image_prompt, age, weight, color, hair_color,hair_length,hair_texture,skin_details,eye_colors,NSFW):
image_path = SD_call(prompt, image_prompt, age, weight, color, hair_color,hair_length,hair_texture,skin_details,eye_colors,NSFW)
#return "Image generated successfully", image_path
if image_path is not None:
return "Image generated successfully", image_path
else:
return "No images found in the response.", None
demo = gr.Interface(
fn=greet,
inputs=[
gr.Textbox(label="Personal prompt", lines=3),
gr.Textbox(label="Girl_prompt", lines=3),
gr.Slider(label="Age", value=22, minimum=18, maximum=75),
gr.Radio(["skinny", "slim", "athletic", "muscular", "average", "curvy", "chubby", "overweight", "obese"],label="Body Type",type="value"),
gr.CheckboxGroup(choices=["asian", "white", "black", "latina", "middle eastern","indigenous", "Mixed"],label="Color",type="value"),
gr.Radio(["black", "brown", "brunette", "dark brown", "light brown", "blonde", "dirty blonde", "platinum blonde", "red", "auburn", "ginger", "strawberry blonde", "gray", "silver", "white", "blue", "green", "purple", "pink", "rainbow", "multicolored"],label="Hair Color",type="value"),
gr.Radio(["short", "long", "mi-long"],label="Hair length", type="value"),
gr.Radio(["straight", "curvy", "wavy"],label="Hair texture", type="value"),
gr.CheckboxGroup(choices=["((tattoos))", "((birthmark))", "freckles", "((scars))"],label="Skin details", type="value"),
gr.Radio(["brown", "hazel", "green", "blue", "gray", "amber", "black", "red", "violet"],label="Eye Color", type="value"),
gr.Checkbox(label="NSFW", info="πππ")
],
flagging_options=["blurry", "incorrect", "other"],
outputs=[gr.Textbox(label="Answer", lines=3), gr.Image(label="Generated Image", type="filepath")],
)
demo.launch(share=True)
|