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 [])
         
     |