Spaces:
Running
Running
Upload 3 files
Browse files- app.py +9 -3
- civitai_to_hf.py +16 -6
app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
from civitai_to_hf import (search_civitai, download_civitai, select_civitai_item, add_civitai_item, get_civitai_tag, select_civitai_all_item,
|
| 3 |
-
update_civitai_selection,
|
|
|
|
| 4 |
|
| 5 |
css = """
|
| 6 |
.title { font-size: 3em; align-items: center; text-align: center; }
|
|
@@ -34,8 +35,11 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css, delete_ca
|
|
| 34 |
with gr.Column(scale=9):
|
| 35 |
with gr.Accordion("Select from Gallery", open=False):
|
| 36 |
search_civitai_gallery = gr.Gallery([], label="Results", allow_preview=False, columns=5, elem_id="gallery", show_share_button=False, interactive=False)
|
|
|
|
|
|
|
| 37 |
search_civitai_result = gr.Dropdown(label="Search Results", choices=[("", "")], value=[],
|
| 38 |
allow_custom_value=True, visible=True, multiselect=True)
|
|
|
|
| 39 |
with gr.Column(scale=1):
|
| 40 |
search_civitai_add = gr.Button("Add to download URLs")
|
| 41 |
search_civitai_select_all = gr.Button("Select All", variant="secondary", size="sm")
|
|
@@ -70,11 +74,13 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css, delete_ca
|
|
| 70 |
fn=search_civitai,
|
| 71 |
inputs=[search_civitai_query, search_civitai_type, search_civitai_basemodel, search_civitai_sort,
|
| 72 |
search_civitai_period, search_civitai_tag, search_civitai_user, search_civitai_limit, search_civitai_page, search_civitai_gallery],
|
| 73 |
-
outputs=[search_civitai_result, search_civitai_desc, search_civitai_submit, search_civitai_query, search_civitai_gallery],
|
| 74 |
queue=True,
|
| 75 |
show_api=False,
|
| 76 |
)
|
| 77 |
-
search_civitai_result.change(select_civitai_item, [search_civitai_result], [search_civitai_desc, search_civitai_json], queue=False, show_api=False)
|
|
|
|
|
|
|
| 78 |
search_civitai_add.click(add_civitai_item, [search_civitai_result, dl_url], [dl_url], queue=False, show_api=False)
|
| 79 |
search_civitai_select_all.click(select_civitai_all_item, [search_civitai_select_all], [search_civitai_select_all, search_civitai_result], queue=False, show_api=False)
|
| 80 |
search_civitai_gallery.select(update_civitai_selection, [search_civitai_result], [search_civitai_result], queue=False, show_api=False)
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
from civitai_to_hf import (search_civitai, download_civitai, select_civitai_item, add_civitai_item, get_civitai_tag, select_civitai_all_item,
|
| 3 |
+
update_civitai_selection, update_civitai_checkbox, from_civitai_checkbox,
|
| 4 |
+
CIVITAI_TYPE, CIVITAI_BASEMODEL, CIVITAI_SORT, CIVITAI_PERIOD)
|
| 5 |
|
| 6 |
css = """
|
| 7 |
.title { font-size: 3em; align-items: center; text-align: center; }
|
|
|
|
| 35 |
with gr.Column(scale=9):
|
| 36 |
with gr.Accordion("Select from Gallery", open=False):
|
| 37 |
search_civitai_gallery = gr.Gallery([], label="Results", allow_preview=False, columns=5, elem_id="gallery", show_share_button=False, interactive=False)
|
| 38 |
+
with gr.Accordion("Select by Checkbox", open=False):
|
| 39 |
+
search_civitai_result_checkbox = gr.CheckboxGroup(label="", choices=[], value=[])
|
| 40 |
search_civitai_result = gr.Dropdown(label="Search Results", choices=[("", "")], value=[],
|
| 41 |
allow_custom_value=True, visible=True, multiselect=True)
|
| 42 |
+
search_civitai_result_info = gr.Markdown("Search result.", elem_classes="info")
|
| 43 |
with gr.Column(scale=1):
|
| 44 |
search_civitai_add = gr.Button("Add to download URLs")
|
| 45 |
search_civitai_select_all = gr.Button("Select All", variant="secondary", size="sm")
|
|
|
|
| 74 |
fn=search_civitai,
|
| 75 |
inputs=[search_civitai_query, search_civitai_type, search_civitai_basemodel, search_civitai_sort,
|
| 76 |
search_civitai_period, search_civitai_tag, search_civitai_user, search_civitai_limit, search_civitai_page, search_civitai_gallery],
|
| 77 |
+
outputs=[search_civitai_result, search_civitai_desc, search_civitai_submit, search_civitai_query, search_civitai_gallery, search_civitai_result_checkbox, search_civitai_result_info],
|
| 78 |
queue=True,
|
| 79 |
show_api=False,
|
| 80 |
)
|
| 81 |
+
search_civitai_result.change(select_civitai_item, [search_civitai_result], [search_civitai_desc, search_civitai_json], queue=False, show_api=False)\
|
| 82 |
+
.success(update_civitai_checkbox, [search_civitai_result], [search_civitai_result_checkbox], queue=True, show_api=False)
|
| 83 |
+
search_civitai_result_checkbox.select(from_civitai_checkbox, [search_civitai_result_checkbox], [search_civitai_result], queue=False, show_api=False)
|
| 84 |
search_civitai_add.click(add_civitai_item, [search_civitai_result, dl_url], [dl_url], queue=False, show_api=False)
|
| 85 |
search_civitai_select_all.click(select_civitai_all_item, [search_civitai_select_all], [search_civitai_select_all, search_civitai_result], queue=False, show_api=False)
|
| 86 |
search_civitai_gallery.select(update_civitai_selection, [search_civitai_result], [search_civitai_result], queue=False, show_api=False)
|
civitai_to_hf.py
CHANGED
|
@@ -140,7 +140,7 @@ def download_civitai(dl_url, civitai_key, hf_token, urls,
|
|
| 140 |
|
| 141 |
|
| 142 |
CIVITAI_TYPE = ["Checkpoint", "TextualInversion", "Hypernetwork", "AestheticGradient", "LORA", "Controlnet", "Poses"]
|
| 143 |
-
CIVITAI_BASEMODEL = ["Pony", "Illustrious", "SDXL 1.0", "SD 1.5", "Flux.1 D", "Flux.1 S"]
|
| 144 |
CIVITAI_SORT = ["Highest Rated", "Most Downloaded", "Newest"]
|
| 145 |
CIVITAI_PERIOD = ["AllTime", "Year", "Month", "Week", "Day"]
|
| 146 |
|
|
@@ -200,27 +200,30 @@ def search_civitai(query, types, base_model=[], sort=CIVITAI_SORT[0], period=CIV
|
|
| 200 |
civitai_last_choices = [("", "")]
|
| 201 |
civitai_last_gallery = []
|
| 202 |
civitai_last_results = {}
|
|
|
|
| 203 |
items = search_on_civitai(query, types, base_model, int(limit), sort, period, tag, user, int(page))
|
| 204 |
if not items: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 205 |
-
gr.update(value="", visible=False), gr.update(
|
| 206 |
choices = []
|
| 207 |
gallery = []
|
| 208 |
for item in items:
|
| 209 |
base_model_name = "Pony🐴" if item['base_model'] == "Pony" else item['base_model']
|
| 210 |
-
name = f"{item['name']} (for {base_model_name} / By: {item['creator']} / Tags: {', '.join(item['tags'])})"
|
|
|
|
| 211 |
value = item['dl_url']
|
| 212 |
choices.append((name, value))
|
| 213 |
gallery.append((item['img_url'], name))
|
| 214 |
civitai_last_results[value] = item
|
| 215 |
if not choices: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 216 |
-
gr.update(value="", visible=False), gr.update(
|
| 217 |
#result = civitai_last_results.get(choices[0][1], "None") # for debug
|
| 218 |
#md = result['md'] if result else "" # for debug
|
| 219 |
md = ""
|
| 220 |
civitai_last_choices = choices
|
| 221 |
civitai_last_gallery = gallery
|
|
|
|
| 222 |
return gr.update(choices=choices, value=[], visible=True), gr.update(value=md, visible=True),\
|
| 223 |
-
gr.update(
|
| 224 |
|
| 225 |
|
| 226 |
def get_civitai_json(dl_url: str, is_html: bool=False, image_baseurl: str=""):
|
|
@@ -321,5 +324,12 @@ def update_civitai_selection(evt: gr.SelectData, value: list[str]):
|
|
| 321 |
selected = list_uniq([v for v in value if v != ""] + [civitai_last_choices[selected_index][1]])
|
| 322 |
return gr.update(value=selected)
|
| 323 |
except Exception:
|
| 324 |
-
return gr.update(
|
| 325 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
|
| 141 |
|
| 142 |
CIVITAI_TYPE = ["Checkpoint", "TextualInversion", "Hypernetwork", "AestheticGradient", "LORA", "Controlnet", "Poses"]
|
| 143 |
+
CIVITAI_BASEMODEL = ["Pony", "Illustrious", "SDXL 1.0", "SD 1.5", "Flux.1 D", "Flux.1 S", "SD 3.5"]
|
| 144 |
CIVITAI_SORT = ["Highest Rated", "Most Downloaded", "Newest"]
|
| 145 |
CIVITAI_PERIOD = ["AllTime", "Year", "Month", "Week", "Day"]
|
| 146 |
|
|
|
|
| 200 |
civitai_last_choices = [("", "")]
|
| 201 |
civitai_last_gallery = []
|
| 202 |
civitai_last_results = {}
|
| 203 |
+
results_info = "No item found."
|
| 204 |
items = search_on_civitai(query, types, base_model, int(limit), sort, period, tag, user, int(page))
|
| 205 |
if not items: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 206 |
+
gr.update(value="", visible=False), gr.update(), gr.update(), gr.update(), gr.update(), results_info
|
| 207 |
choices = []
|
| 208 |
gallery = []
|
| 209 |
for item in items:
|
| 210 |
base_model_name = "Pony🐴" if item['base_model'] == "Pony" else item['base_model']
|
| 211 |
+
#name = f"{item['name']} (for {base_model_name} / By: {item['creator']} / Tags: {', '.join(item['tags'])})"
|
| 212 |
+
name = f"{item['name']} (for {base_model_name} / By: {item['creator']})"
|
| 213 |
value = item['dl_url']
|
| 214 |
choices.append((name, value))
|
| 215 |
gallery.append((item['img_url'], name))
|
| 216 |
civitai_last_results[value] = item
|
| 217 |
if not choices: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 218 |
+
gr.update(value="", visible=False), gr.update(), gr.update(), gr.update(), gr.update(), results_info
|
| 219 |
#result = civitai_last_results.get(choices[0][1], "None") # for debug
|
| 220 |
#md = result['md'] if result else "" # for debug
|
| 221 |
md = ""
|
| 222 |
civitai_last_choices = choices
|
| 223 |
civitai_last_gallery = gallery
|
| 224 |
+
results_info = f"{int(len(choices))} items found."
|
| 225 |
return gr.update(choices=choices, value=[], visible=True), gr.update(value=md, visible=True),\
|
| 226 |
+
gr.update(), gr.update(), gr.update(value=gallery), gr.update(choices=choices, value=[]), results_info
|
| 227 |
|
| 228 |
|
| 229 |
def get_civitai_json(dl_url: str, is_html: bool=False, image_baseurl: str=""):
|
|
|
|
| 324 |
selected = list_uniq([v for v in value if v != ""] + [civitai_last_choices[selected_index][1]])
|
| 325 |
return gr.update(value=selected)
|
| 326 |
except Exception:
|
| 327 |
+
return gr.update()
|
| 328 |
|
| 329 |
+
|
| 330 |
+
def update_civitai_checkbox(selected: list[str]):
|
| 331 |
+
return gr.update(value=selected)
|
| 332 |
+
|
| 333 |
+
|
| 334 |
+
def from_civitai_checkbox(selected: list[str]):
|
| 335 |
+
return gr.update(value=selected)
|