Spaces:
Running
Running
File size: 7,633 Bytes
4d9eab3 3e6d270 23f446e 4d9eab3 3e6d270 4d9eab3 3e6d270 4d9eab3 3e6d270 4d9eab3 953986f 4d9eab3 064e9bf 4d9eab3 a959358 4d9eab3 a959358 4d9eab3 3cd1ee2 3e6d270 953986f 064e9bf 4d9eab3 3e6d270 a020a22 ce2f083 3e6d270 a020a22 3e6d270 9eb8e23 3e6d270 4d7833f 4d9eab3 3e6d270 a020a22 3e6d270 3cd1ee2 a020a22 4d9eab3 e6c3592 4d9eab3 7cf31f7 |
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 |
import gradio as gr
from stablepy import Model_Diffusers
from StableGR import (generate_image, search_civitai, download_civitai, select_civitai_item, add_civitai_item, get_civitai_tag, select_civitai_all_item,
update_civitai_selection, update_civitai_checkbox, from_civitai_checkbox,
CIVITAI_TYPE, CIVITAI_BASEMODEL, CIVITAI_SORT, CIVITAI_PERIOD, CIVITAI_FILETYPE, download_file)
css = """
.title { font-size: 3em; align-items: center; text-align: center; }
.info { align-items: center; text-align: center; }
.block.result { margin: 1em 0; padding: 1em; box-shadow: 0 0 3px 3px #664422, 0 0 3px 2px #664422 inset; border-radius: 6px; background: #665544; }
.desc [src$='#float'] { float: right; margin: 20px; }
"""
with gr.Blocks(fill_width=True, css=css) as demo:
with gr.Column():
gr.Markdown("# StableGR", elem_classes="title")
state = gr.State(value={})
with gr.TabItem("Search Civitai"):
with gr.Row():
search_civitai_type = gr.CheckboxGroup(label="Type", choices=CIVITAI_TYPE, value=["Checkpoint", "LORA"])
search_civitai_basemodel = gr.CheckboxGroup(label="Base Model", choices=CIVITAI_BASEMODEL, value=[])
search_civitai_filetype = gr.CheckboxGroup(label="File type", choices=CIVITAI_FILETYPE, value=["Model"])
with gr.Row():
search_civitai_sort = gr.Radio(label="Sort", choices=CIVITAI_SORT, value=CIVITAI_SORT[0])
search_civitai_period = gr.Radio(label="Period", choices=CIVITAI_PERIOD, value="Month")
search_civitai_limit = gr.Number(label="Limit", minimum=1, maximum=100, step=1, value=100)
search_civitai_page = gr.Number(label="Page", info="If 0, retrieve all pages", minimum=0, maximum=10, step=1, value=1)
with gr.Row(equal_height=True):
search_civitai_query = gr.Textbox(label="Query", placeholder="flux", lines=1)
search_civitai_tag = gr.Dropdown(label="Tag", choices=get_civitai_tag(), value=get_civitai_tag()[0], allow_custom_value=True)
search_civitai_user = gr.Textbox(label="Username", lines=1)
search_civitai_submit = gr.Button("Search on Civitai")
with gr.TabItem("Results"):
with gr.Row():
search_civitai_desc = gr.Markdown(value="", visible=False, elem_classes="desc")
search_civitai_json = gr.JSON(value={}, visible=False)
with gr.Row(equal_height=True):
with gr.Column(scale=9):
with gr.TabItem("Select from Gallery"):
search_civitai_gallery = gr.Gallery([], label="Results", allow_preview=False, columns=5, elem_id="gallery", show_share_button=False, interactive=False)
with gr.TabItem("Select by Checkbox"):
search_civitai_result_checkbox = gr.CheckboxGroup(label="", choices=[], value=[])
search_civitai_result = gr.Dropdown(label="Search Results", choices=[("", "")], value=[],
allow_custom_value=True, visible=True, multiselect=True)
search_civitai_result_info = gr.Markdown("Search result.", elem_classes="info")
with gr.Column(scale=1):
search_civitai_add = gr.Button("Add to download URLs")
search_civitai_select_all = gr.Button("Select All", variant="secondary", size="sm")
with gr.Group():
dl_url = gr.Textbox(label="Download URL(s)", placeholder="https://civitai.com/api/download/models/28907\n...", value="", lines=3, max_lines=255)
with gr.Column():
civitai_key = gr.Textbox(label="Your Civitai Key", value="", max_lines=1)
gr.Markdown("Your Civitai API key is available at [https://civitai.com/user/account](https://civitai.com/user/account).", elem_classes="info")
with gr.Row():
run_base = gr.Button(value="Download Base Model", variant="primary")
run_lora = gr.Button(value="Download Lora", variant="primary")
uploaded_urls = gr.CheckboxGroup(visible=False, choices=[], value=None) # hidden
#urls_md = gr.Markdown("<br><br>", elem_classes="result")
urls_remain = gr.Textbox("Remaining URLs", value="", show_copy_button=True, visible=False)
with gr.Column():
base_model = gr.File(label="Base Models")
lora_A = gr.File(label="Lora")
with gr.Row():
prompt = gr.Textbox(label="Prompt", value="A highly detailed portrait of an underwater city, with towering spires and domes rising up from the ocean floor")
num_steps = gr.Slider(label="Number of Steps", minimum=1, maximum=100, value=30, step=1)
guidance_scale = gr.Slider(label="Guidance Scale", minimum=0.1, maximum=20.0, value=7.5, step=0.1)
sampler = gr.Dropdown(label="Sampler", choices=["DPM++ 2M", "Euler", "TCD"], value="DPM++ 2M")
img_width = gr.Slider(label="Image Width", minimum=64, maximum=2048, value=512, step=64)
img_height = gr.Slider(label="Image Height", minimum=64, maximum=2048, value=1024, step=64)
generate_button = gr.Button("Generate Image")
output_image = gr.Image(label="output")
gr.on(
triggers=[run_base.click],
fn=download_file,
inputs=[dl_url, civitai_key],
outputs=base_model,
queue=True,
)
gr.on(
triggers=[run_lora.click],
fn=download_file,
inputs=[dl_url, civitai_key],
outputs=lora_A,
queue=True,
)
gr.on(
triggers=[generate_button.click],
fn=generate_image,
inputs=[prompt, num_steps, guidance_scale, sampler, img_width, img_height],
outputs=output_image,
queue=True,
)
gr.on(
triggers=[search_civitai_submit.click, search_civitai_query.submit, search_civitai_user.submit],
fn=search_civitai,
inputs=[search_civitai_query, search_civitai_type, search_civitai_basemodel, search_civitai_sort,
search_civitai_period, search_civitai_tag, search_civitai_user, search_civitai_limit,
search_civitai_page, search_civitai_filetype, civitai_key, search_civitai_gallery, state],
outputs=[search_civitai_result, search_civitai_desc, search_civitai_submit, search_civitai_query, search_civitai_gallery,
search_civitai_result_checkbox, search_civitai_result_info, state],
queue=False,
show_api=False,
)
search_civitai_result.change(select_civitai_item, [search_civitai_result, state], [search_civitai_desc, search_civitai_json, state], queue=False, show_api=False)\
.success(update_civitai_checkbox, [search_civitai_result], [search_civitai_result_checkbox], queue=True, show_api=False)
search_civitai_result_checkbox.select(from_civitai_checkbox, [search_civitai_result_checkbox], [search_civitai_result], queue=False, show_api=False)
search_civitai_add.click(add_civitai_item, [search_civitai_result, dl_url], [dl_url], queue=False, show_api=False)
search_civitai_select_all.click(select_civitai_all_item, [search_civitai_select_all, state], [search_civitai_select_all, search_civitai_result], queue=False, show_api=False)
search_civitai_gallery.select(update_civitai_selection, [search_civitai_result, state], [search_civitai_result], queue=False, show_api=False)
demo.queue()
demo.launch(ssr_mode=False, share=True)
|