Spaces:
Running
Running
File size: 6,926 Bytes
c25cab5 82ce3ab 5e85279 c25cab5 07a3a3d 08cbaa7 07a3a3d 97f1e49 c25cab5 07a3a3d ec20d35 8c84074 c25cab5 07a3a3d ec20d35 c25cab5 f7f6d75 82ce3ab 782be4f f7f6d75 4bee8c1 c25cab5 82ce3ab 782be4f 82ce3ab 80368d1 5e85279 82ce3ab 5e85279 82ce3ab 08cbaa7 dd5d767 08cbaa7 c25cab5 07a3a3d c25cab5 08cbaa7 c25cab5 4bee8c1 c25cab5 82ce3ab ec20d35 c25cab5 ec20d35 5e85279 1069789 ec20d35 c25cab5 |
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 |
import gradio as gr
from civitai_to_hf import (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)
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(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css, delete_cache=(60, 3600)) as demo:
with gr.Column():
gr.Markdown("# CivitAI to HF🤗 Downloader & Uploader", elem_classes="title")
state = gr.State(value={})
with gr.Accordion("Search Civitai", open=True):
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=[])
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.Slider(label="Limit", minimum=1, maximum=100, step=1, value=100)
search_civitai_page = gr.Slider(label="Page", minimum=1, maximum=100, 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.Accordion("Results", open=True):
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.Accordion("Select from Gallery", open=False):
search_civitai_gallery = gr.Gallery([], label="Results", allow_preview=False, columns=5, elem_id="gallery", show_share_button=False, interactive=False)
with gr.Accordion("Select by Checkbox", open=False):
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.Group():
with gr.Row():
with gr.Column():
hf_token = gr.Textbox(label="Your HF write token", placeholder="hf_...", value="", max_lines=1)
gr.Markdown("Your token is available at [hf.co/settings/tokens](https://huggingface.co/settings/tokens).", elem_classes="info")
newrepo_id = gr.Textbox(label="Upload repo ID", placeholder="yourid/yourrepo", value="", max_lines=1)
with gr.Row():
newrepo_type = gr.Radio(label="Upload repo type", choices=["model", "dataset"], value="model")
is_private = gr.Checkbox(label="Create private repo", value=True)
is_info = gr.Checkbox(label="Upload Civitai information files", value=False)
run_button = gr.Button(value="Download and Upload", variant="primary")
uploaded_urls = gr.CheckboxGroup(visible=False, choices=[], value=None) # hidden
urls_md = gr.Markdown("<br><br>", elem_classes="result")
gr.DuplicateButton(value="Duplicate Space")
gr.on(
triggers=[run_button.click],
fn=download_civitai,
inputs=[dl_url, civitai_key, hf_token, uploaded_urls, newrepo_id, newrepo_type, is_private, is_info],
outputs=[uploaded_urls, urls_md],
)
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_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=True,
show_api=False,
)
search_civitai_result.change(select_civitai_item, [search_civitai_result, state], [search_civitai_desc, search_civitai_json], 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()
|