Spaces:
Running
Running
Upload 3 files
Browse files- app.py +4 -2
- civitai_to_hf.py +8 -4
app.py
CHANGED
|
@@ -1,7 +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, 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; }
|
|
@@ -18,6 +18,7 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css, delete_ca
|
|
| 18 |
with gr.Row():
|
| 19 |
search_civitai_type = gr.CheckboxGroup(label="Type", choices=CIVITAI_TYPE, value=["Checkpoint", "LORA"])
|
| 20 |
search_civitai_basemodel = gr.CheckboxGroup(label="Base Model", choices=CIVITAI_BASEMODEL, value=[])
|
|
|
|
| 21 |
with gr.Row():
|
| 22 |
search_civitai_sort = gr.Radio(label="Sort", choices=CIVITAI_SORT, value=CIVITAI_SORT[0])
|
| 23 |
search_civitai_period = gr.Radio(label="Period", choices=CIVITAI_PERIOD, value="Month")
|
|
@@ -77,7 +78,8 @@ with gr.Blocks(theme="NoCrypt/miku@>=1.2.2", fill_width=True, css=css, delete_ca
|
|
| 77 |
triggers=[search_civitai_submit.click, search_civitai_query.submit, search_civitai_user.submit],
|
| 78 |
fn=search_civitai,
|
| 79 |
inputs=[search_civitai_query, search_civitai_type, search_civitai_basemodel, search_civitai_sort,
|
| 80 |
-
search_civitai_period, search_civitai_tag, search_civitai_user, search_civitai_limit,
|
|
|
|
| 81 |
outputs=[search_civitai_result, search_civitai_desc, search_civitai_submit, search_civitai_query, search_civitai_gallery,
|
| 82 |
search_civitai_result_checkbox, search_civitai_result_info, state],
|
| 83 |
queue=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, CIVITAI_FILETYPE)
|
| 5 |
|
| 6 |
css = """
|
| 7 |
.title { font-size: 3em; align-items: center; text-align: center; }
|
|
|
|
| 18 |
with gr.Row():
|
| 19 |
search_civitai_type = gr.CheckboxGroup(label="Type", choices=CIVITAI_TYPE, value=["Checkpoint", "LORA"])
|
| 20 |
search_civitai_basemodel = gr.CheckboxGroup(label="Base Model", choices=CIVITAI_BASEMODEL, value=[])
|
| 21 |
+
search_civitai_filetype = gr.CheckboxGroup(label="File type", choices=CIVITAI_FILETYPE, value=["Model"])
|
| 22 |
with gr.Row():
|
| 23 |
search_civitai_sort = gr.Radio(label="Sort", choices=CIVITAI_SORT, value=CIVITAI_SORT[0])
|
| 24 |
search_civitai_period = gr.Radio(label="Period", choices=CIVITAI_PERIOD, value="Month")
|
|
|
|
| 78 |
triggers=[search_civitai_submit.click, search_civitai_query.submit, search_civitai_user.submit],
|
| 79 |
fn=search_civitai,
|
| 80 |
inputs=[search_civitai_query, search_civitai_type, search_civitai_basemodel, search_civitai_sort,
|
| 81 |
+
search_civitai_period, search_civitai_tag, search_civitai_user, search_civitai_limit,
|
| 82 |
+
search_civitai_page, search_civitai_filetype, search_civitai_gallery, state],
|
| 83 |
outputs=[search_civitai_result, search_civitai_desc, search_civitai_submit, search_civitai_query, search_civitai_gallery,
|
| 84 |
search_civitai_result_checkbox, search_civitai_result_info, state],
|
| 85 |
queue=False,
|
civitai_to_hf.py
CHANGED
|
@@ -185,13 +185,15 @@ def download_civitai(dl_url, civitai_key, hf_token, urls,
|
|
| 185 |
|
| 186 |
CIVITAI_TYPE = ["Checkpoint", "TextualInversion", "Hypernetwork", "AestheticGradient", "LORA", "LoCon", "DoRA",
|
| 187 |
"Controlnet", "Upscaler", "MotionModule", "VAE", "Poses", "Wildcards", "Workflows", "Other"]
|
|
|
|
| 188 |
CIVITAI_BASEMODEL = ["Pony", "Illustrious", "SDXL 1.0", "SD 1.5", "Flux.1 D", "Flux.1 S", "SD 3.5"]
|
| 189 |
CIVITAI_SORT = ["Highest Rated", "Most Downloaded", "Newest"]
|
| 190 |
CIVITAI_PERIOD = ["AllTime", "Year", "Month", "Week", "Day"]
|
| 191 |
|
| 192 |
|
| 193 |
def search_on_civitai(query: str, types: list[str], allow_model: list[str] = [], limit: int = 100,
|
| 194 |
-
sort: str = "Highest Rated", period: str = "AllTime", tag: str = "", user: str = "", page: int = 1,
|
|
|
|
| 195 |
user_agent = get_user_agent()
|
| 196 |
headers = {'User-Agent': user_agent, 'content-type': 'application/json'}
|
| 197 |
base_url = 'https://civitai.com/api/v1/models'
|
|
@@ -260,6 +262,7 @@ def search_on_civitai(query: str, types: list[str], allow_model: list[str] = [],
|
|
| 260 |
for f in model['files']:
|
| 261 |
i = item.copy()
|
| 262 |
i['dl_url'] = f['downloadUrl']
|
|
|
|
| 263 |
items.append(i)
|
| 264 |
else:
|
| 265 |
item['dl_url'] = model['downloadUrl']
|
|
@@ -267,13 +270,14 @@ def search_on_civitai(query: str, types: list[str], allow_model: list[str] = [],
|
|
| 267 |
return items if len(items) > 0 else None
|
| 268 |
|
| 269 |
|
| 270 |
-
def search_civitai(query, types, base_model=[], sort=CIVITAI_SORT[0], period=CIVITAI_PERIOD[0], tag="", user="", limit=100, page=1,
|
|
|
|
| 271 |
civitai_last_results = {}
|
| 272 |
set_state(state, "civitai_last_choices", [("", "")])
|
| 273 |
set_state(state, "civitai_last_gallery", [])
|
| 274 |
set_state(state, "civitai_last_results", civitai_last_results)
|
| 275 |
results_info = "No item found."
|
| 276 |
-
items = search_on_civitai(query, types, base_model, int(limit), sort, period, tag, user, int(page))
|
| 277 |
if not items: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 278 |
gr.update(value="", visible=False), gr.update(), gr.update(), gr.update(), gr.update(), results_info, state
|
| 279 |
choices = []
|
|
@@ -365,7 +369,7 @@ def get_civitai_tag():
|
|
| 365 |
|
| 366 |
def select_civitai_item(results: list[str], state: dict):
|
| 367 |
json = {}
|
| 368 |
-
if "http" not in "".join(results) or len(results) == 0: return gr.update(value="", visible=True), gr.update(value=json, visible=False)
|
| 369 |
result = get_state(state, "civitai_last_results")
|
| 370 |
last_selects = get_state(state, "civitai_last_selects")
|
| 371 |
selects = list_sub(results, last_selects if last_selects else [])
|
|
|
|
| 185 |
|
| 186 |
CIVITAI_TYPE = ["Checkpoint", "TextualInversion", "Hypernetwork", "AestheticGradient", "LORA", "LoCon", "DoRA",
|
| 187 |
"Controlnet", "Upscaler", "MotionModule", "VAE", "Poses", "Wildcards", "Workflows", "Other"]
|
| 188 |
+
CIVITAI_FILETYPE = ["Model", "VAE", "Config", "Training Data"]
|
| 189 |
CIVITAI_BASEMODEL = ["Pony", "Illustrious", "SDXL 1.0", "SD 1.5", "Flux.1 D", "Flux.1 S", "SD 3.5"]
|
| 190 |
CIVITAI_SORT = ["Highest Rated", "Most Downloaded", "Newest"]
|
| 191 |
CIVITAI_PERIOD = ["AllTime", "Year", "Month", "Week", "Day"]
|
| 192 |
|
| 193 |
|
| 194 |
def search_on_civitai(query: str, types: list[str], allow_model: list[str] = [], limit: int = 100,
|
| 195 |
+
sort: str = "Highest Rated", period: str = "AllTime", tag: str = "", user: str = "", page: int = 1,
|
| 196 |
+
filetype: list[str] = [], progress=gr.Progress(track_tqdm=True)):
|
| 197 |
user_agent = get_user_agent()
|
| 198 |
headers = {'User-Agent': user_agent, 'content-type': 'application/json'}
|
| 199 |
base_url = 'https://civitai.com/api/v1/models'
|
|
|
|
| 262 |
for f in model['files']:
|
| 263 |
i = item.copy()
|
| 264 |
i['dl_url'] = f['downloadUrl']
|
| 265 |
+
if len(filetype) != 0 and f['type'] not in set(filetype): continue
|
| 266 |
items.append(i)
|
| 267 |
else:
|
| 268 |
item['dl_url'] = model['downloadUrl']
|
|
|
|
| 270 |
return items if len(items) > 0 else None
|
| 271 |
|
| 272 |
|
| 273 |
+
def search_civitai(query, types, base_model=[], sort=CIVITAI_SORT[0], period=CIVITAI_PERIOD[0], tag="", user="", limit=100, page=1,
|
| 274 |
+
filetype=[], gallery=[], state={}, progress=gr.Progress(track_tqdm=True)):
|
| 275 |
civitai_last_results = {}
|
| 276 |
set_state(state, "civitai_last_choices", [("", "")])
|
| 277 |
set_state(state, "civitai_last_gallery", [])
|
| 278 |
set_state(state, "civitai_last_results", civitai_last_results)
|
| 279 |
results_info = "No item found."
|
| 280 |
+
items = search_on_civitai(query, types, base_model, int(limit), sort, period, tag, user, int(page), filetype)
|
| 281 |
if not items: return gr.update(choices=[("", "")], value=[], visible=True),\
|
| 282 |
gr.update(value="", visible=False), gr.update(), gr.update(), gr.update(), gr.update(), results_info, state
|
| 283 |
choices = []
|
|
|
|
| 369 |
|
| 370 |
def select_civitai_item(results: list[str], state: dict):
|
| 371 |
json = {}
|
| 372 |
+
if "http" not in "".join(results) or len(results) == 0: return gr.update(value="", visible=True), gr.update(value=json, visible=False), state
|
| 373 |
result = get_state(state, "civitai_last_results")
|
| 374 |
last_selects = get_state(state, "civitai_last_selects")
|
| 375 |
selects = list_sub(results, last_selects if last_selects else [])
|