Spaces:
Runtime error
Runtime error
File size: 7,697 Bytes
6a20884 f1f83f2 6d8c23b 6a20884 f1f83f2 6a20884 67b8f97 6a20884 67b8f97 953f4c0 2083734 67b8f97 104aedd 6a20884 6d8c23b 67b8f97 2083734 67b8f97 6d8c23b 67b8f97 6d8c23b 6a20884 630f7c7 6a20884 630f7c7 6a20884 a117519 6a20884 a117519 6a20884 67b8f97 a117519 67b8f97 a117519 67b8f97 6a20884 6d8c23b 6a20884 5bdb7ed 67b8f97 6d8c23b 67b8f97 6d8c23b 67b8f97 6d8c23b 67b8f97 6d8c23b 67b8f97 953f4c0 6a20884 67b8f97 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 171 172 173 174 175 176 177 178 179 180 181 |
import gradio as gr
import requests
import time
import requests
import base64
import os
token = os.getenv("runpod_key")
#############################################################
#################################################
def SD_call(prompt, image_prompt, age, weight, w_w, color, hair_color,h_c_w, hair_length, h_l_w,hair_texture, h_t_w,skin_details, eye_colors, e_c_w,NSFW):
positive = "clothes"
negative = "(((naked))), (((nsfw))), porn"
serverless_api_id = 'zcparyadhjnmg7'
# 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"
}
weight = f"{'(' * w_w}{weight} woman{')' * w_w}"
hair_color=f"{'(' * h_c_w}{hair_color} hair{')' * h_c_w}"
hair_length=f"{'(' * h_l_w}{hair_length} hair{')' * h_l_w}"
hair_texture =f"{'(' * h_t_w}{hair_texture} hair{')' * h_t_w}"
eye_colors=f"{'(' * e_c_w}{eye_colors} eyes{')' * e_c_w}"
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}, (eye contact:1.1), beautiful face, hyper detailed, best quality, ultra high res, {hair_length}, {hair_color}, {hair_texture},{eye_colors}, {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_classicV21",
"sd_vae": "vae-ft-mse-840000-ema-pruned.safetensors"
},
"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": 25,
"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"paintings, sketches, lowres, ((monochrome)), ((grayscale)), bad anatomy, text, error, cropped, signature, watermark, username, blurry, bad feet, poorly drawn face, bad proportions, gross proportions, badhandsv5-neg, {negative}",
# "width": 512,
# "height": 720,
# "guidance_scale": 7.5,
# "num_inference_steps": 30,
# "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, w_w, color, hair_color, h_c_w, hair_length, h_l_w,hair_texture, h_t_w,skin_details, eye_colors, e_c_w,NSFW):
image_path = SD_call(prompt, image_prompt, age, weight, w_w, color, hair_color,h_c_w, hair_length, h_l_w,hair_texture, h_t_w,skin_details, eye_colors, e_c_w,NSFW)
if image_path is not None:
return image_path
else:
return 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.Slider(label="Body Type weight", value=2, minimum=1, maximum=4, step=1),
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.Slider(label="Hair Color weight", value=2, minimum=1, maximum=4, step=1),
gr.Radio(["short", "long", "mi-long"],label="Hair length", type="value"),
gr.Slider(label="Hair length weight", value=2, minimum=1, maximum=4, step=1),
gr.Radio(["straight", "curvy", "wavy"],label="Hair texture", type="value"),
gr.Slider(label="Hair texture weight", value=2, minimum=1, maximum=4, step=1),
gr.CheckboxGroup(choices=["((tattoos))", "((birthmark))", "freckles", "((scars))"],label="Skin details", type="value"),
gr.Radio(["brown", "hazel", "green", "blue", "gray", "amber", "black", "red", "violet"],label="Eyes Color", type="value"),
gr.Slider(label="Eyes color weight", value=2, minimum=1, maximum=4, step=1),
gr.Checkbox(label="NSFW", info="πππ")
],
flagging_options=["blurry", "incorrect", "other"],
outputs=[gr.Image(label="Generated Image", type="filepath")],
)
demo.launch(share=True)
|