John6666 commited on
Commit
6386a0c
·
verified ·
1 Parent(s): 353ca6c

Upload 3 files

Browse files
Files changed (2) hide show
  1. app.py +4 -2
  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, search_civitai_page, search_civitai_gallery, state],
 
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, progress=gr.Progress(track_tqdm=True)):
 
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, gallery=[], state={}, progress=gr.Progress(track_tqdm=True)):
 
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 [])