Spaces:
Running
Running
File size: 3,660 Bytes
2476bf2 85226b0 2476bf2 85226b0 e60fe6a 901270b 85226b0 2476bf2 85226b0 901270b 85226b0 8650fd3 85226b0 b0fc198 85226b0 901270b 85226b0 b0fc198 e4ad141 901270b e4ad141 fbd1c26 e4ad141 85226b0 b0fc198 85226b0 b0fc198 85226b0 b0fc198 85226b0 901270b 264c7c2 2476bf2 |
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 |
import logging
import gradio as gr
from fastapi import Request
from fastapi.responses import JSONResponse
import sys
sys.path.append("scripts/")
from lib import init, refresh_character_thumb_image, get_prompt_manager
from lib import TITLE
logging.getLogger("gradio").setLevel(logging.ERROR)
logging.getLogger("uvicorn.error").setLevel(logging.ERROR)
async def security_middleware(request: Request, call_next):
if request.method == "POST" and "/api/" in request.url.path:
return JSONResponse(status_code=403, content={"error": "Forbidden"})
try:
return await call_next(request)
except:
return JSONResponse(status_code=400, content={"error": "Bad Request"})
if __name__ == '__main__':
character_list, character_list_cn, LANG, JAVA_SCRIPT, CSS_SCRIPT = init()
with gr.Blocks(js=JAVA_SCRIPT, css=CSS_SCRIPT, title=TITLE) as ui:
with gr.Row():
character1 = gr.Dropdown(
choices=character_list,
label=LANG["character1"],
value='none',
allow_custom_value=False,
)
character2 = gr.Dropdown(
choices=character_list,
label=LANG["character2"],
value='none',
allow_custom_value=False,
)
character3 = gr.Dropdown(
choices=character_list_cn,
label=LANG["character3"],
value='none',
allow_custom_value=False,
)
dummy_dropdown = gr.Dropdown(visible=False, allow_custom_value=True)
dummy_textbox = gr.Textbox(visible=False)
with gr.Row(elem_classes='main_row'):
with gr.Column(elem_classes='column_prompts'):
thumb_image = gr.Gallery(type="pil", columns=3, show_download_button=False, object_fit='contain', label="Thumb")
output_info = gr.Textbox(label="Characters' Info")
with gr.Row():
with gr.Column():
custom_prompt = gr.Textbox(value='', label='Semi-auto tag complete test. Try tag* *tag *tag* (e621_sfw.csv@DominikDoom)', elem_id="custom_prompt_text")
with gr.Column():
gr.Markdown("<h2><span style=\"color:orangered\">Thumb Image create by waiIllustriousSDXL_v160.safetensors with ComfyUI</span></h2>",)
gr.Markdown(f"<a href='https://github.com/mirabarukaso/character_select_stand_alone_app'>Character Select SAA</a>")
character1.change(fn=refresh_character_thumb_image,
inputs=[character1,character2,character3],
outputs=[thumb_image, output_info])
character2.change(fn=refresh_character_thumb_image,
inputs=[character1,character2,character3],
outputs=[thumb_image, output_info])
character3.change(fn=refresh_character_thumb_image,
inputs=[character1,character2,character3],
outputs=[thumb_image, output_info])
# Prompt Auto Complete JS
# Have to use dummy components
# Use custom_prompt, the stupid js console will always report "api_info.ts:423 Too many arguments provided for the endpoint."
dummy_textbox.change(fn=get_prompt_manager().update_suggestions_js, inputs=[dummy_textbox], outputs=[dummy_dropdown])
ui.app.middleware("http")(security_middleware)
ui.launch(show_api=False, share=False) |