Spaces:
Running
Running
Upload 9 files
Browse files- app.py +6 -6
- convert_url_to_diffusers_multi_gr.py +5 -2
- utils.py +12 -0
app.py
CHANGED
@@ -55,6 +55,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
55 |
with gr.Row():
|
56 |
is_upload_sf = gr.Checkbox(label="Upload single safetensors file into new repo", value=False)
|
57 |
is_private = gr.Checkbox(label="Create private repo", value=True)
|
|
|
58 |
with gr.Row():
|
59 |
is_overwrite = gr.Checkbox(label="Overwrite repo", value=HF_OW)
|
60 |
is_pr = gr.Checkbox(label="Create PR", value=HF_PR)
|
@@ -178,8 +179,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
178 |
sd35_run_button = gr.Button(value="Submit", variant="primary")
|
179 |
adv_args = gr.Textbox(label="Advanced arguments", value="", visible=False)
|
180 |
with gr.Group():
|
181 |
-
|
182 |
-
repo_urls = gr.CheckboxGroup(visible=False, choices=[], value=[])
|
183 |
output_md = gr.Markdown(label="Output", value="<br><br>", elem_classes="result")
|
184 |
clear_button = gr.Button(value="Clear Output", variant="secondary")
|
185 |
gr.DuplicateButton(value="Duplicate Space")
|
@@ -188,7 +188,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
188 |
gr.on(
|
189 |
triggers=[sdxl_run_button.click],
|
190 |
fn=convert_url_to_diffusers_repo,
|
191 |
-
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
192 |
sdxl_dtype, sdxl_vae, sdxl_clip, flux_t5, sdxl_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, sdxl_mtype,
|
193 |
sdxl_lora1, sdxl_lora1s, sdxl_lora2, sdxl_lora2s, sdxl_lora3, sdxl_lora3s, sdxl_lora4, sdxl_lora4s, sdxl_lora5, sdxl_lora5s, adv_args],
|
194 |
outputs=[repo_urls, output_md],
|
@@ -203,7 +203,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
203 |
gr.on(
|
204 |
triggers=[sd15_run_button.click],
|
205 |
fn=convert_url_to_diffusers_repo,
|
206 |
-
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
207 |
sd15_dtype, sd15_vae, sd15_clip, flux_t5, sd15_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, sd15_mtype,
|
208 |
sd15_lora1, sd15_lora1s, sd15_lora2, sd15_lora2s, sd15_lora3, sd15_lora3s, sd15_lora4, sd15_lora4s, sd15_lora5, sd15_lora5s, adv_args],
|
209 |
outputs=[repo_urls, output_md],
|
@@ -218,7 +218,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
218 |
gr.on(
|
219 |
triggers=[flux_run_button.click],
|
220 |
fn=convert_url_to_diffusers_repo,
|
221 |
-
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
222 |
flux_dtype, flux_vae, flux_clip, flux_t5, flux_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, flux_mtype,
|
223 |
flux_lora1, flux_lora1s, flux_lora2, flux_lora2s, flux_lora3, flux_lora3s, flux_lora4, flux_lora4s, flux_lora5, flux_lora5s, adv_args],
|
224 |
outputs=[repo_urls, output_md],
|
@@ -233,7 +233,7 @@ In particular, conversion of FLUX.1 or SD 3.5 is almost impossible in CPU space.
|
|
233 |
gr.on(
|
234 |
triggers=[sd35_run_button.click],
|
235 |
fn=convert_url_to_diffusers_repo,
|
236 |
-
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
237 |
sd35_dtype, sd35_vae, sd35_clip, sd35_t5, sd35_scheduler, sd15_ema, sd15_isize, sd15_sc, sd35_base_repo, sd35_mtype,
|
238 |
sd35_lora1, sd35_lora1s, sd35_lora2, sd35_lora2s, sd35_lora3, sd35_lora3s, sd35_lora4, sd35_lora4s, sd35_lora5, sd35_lora5s, adv_args],
|
239 |
outputs=[repo_urls, output_md],
|
|
|
55 |
with gr.Row():
|
56 |
is_upload_sf = gr.Checkbox(label="Upload single safetensors file into new repo", value=False)
|
57 |
is_private = gr.Checkbox(label="Create private repo", value=True)
|
58 |
+
gated = gr.Radio(label="Create gated repo", info="Gated repo must be public", choices=["auto", "manual", "False"], value="False")
|
59 |
with gr.Row():
|
60 |
is_overwrite = gr.Checkbox(label="Overwrite repo", value=HF_OW)
|
61 |
is_pr = gr.Checkbox(label="Create PR", value=HF_PR)
|
|
|
179 |
sd35_run_button = gr.Button(value="Submit", variant="primary")
|
180 |
adv_args = gr.Textbox(label="Advanced arguments", value="", visible=False)
|
181 |
with gr.Group():
|
182 |
+
repo_urls = gr.CheckboxGroup(visible=False, choices=[], value=[])
|
|
|
183 |
output_md = gr.Markdown(label="Output", value="<br><br>", elem_classes="result")
|
184 |
clear_button = gr.Button(value="Clear Output", variant="secondary")
|
185 |
gr.DuplicateButton(value="Duplicate Space")
|
|
|
188 |
gr.on(
|
189 |
triggers=[sdxl_run_button.click],
|
190 |
fn=convert_url_to_diffusers_repo,
|
191 |
+
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, gated, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
192 |
sdxl_dtype, sdxl_vae, sdxl_clip, flux_t5, sdxl_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, sdxl_mtype,
|
193 |
sdxl_lora1, sdxl_lora1s, sdxl_lora2, sdxl_lora2s, sdxl_lora3, sdxl_lora3s, sdxl_lora4, sdxl_lora4s, sdxl_lora5, sdxl_lora5s, adv_args],
|
194 |
outputs=[repo_urls, output_md],
|
|
|
203 |
gr.on(
|
204 |
triggers=[sd15_run_button.click],
|
205 |
fn=convert_url_to_diffusers_repo,
|
206 |
+
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, gated, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
207 |
sd15_dtype, sd15_vae, sd15_clip, flux_t5, sd15_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, sd15_mtype,
|
208 |
sd15_lora1, sd15_lora1s, sd15_lora2, sd15_lora2s, sd15_lora3, sd15_lora3s, sd15_lora4, sd15_lora4s, sd15_lora5, sd15_lora5s, adv_args],
|
209 |
outputs=[repo_urls, output_md],
|
|
|
218 |
gr.on(
|
219 |
triggers=[flux_run_button.click],
|
220 |
fn=convert_url_to_diffusers_repo,
|
221 |
+
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, gated, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
222 |
flux_dtype, flux_vae, flux_clip, flux_t5, flux_scheduler, sd15_ema, sd15_isize, sd15_sc, flux_base_repo, flux_mtype,
|
223 |
flux_lora1, flux_lora1s, flux_lora2, flux_lora2s, flux_lora3, flux_lora3s, flux_lora4, flux_lora4s, flux_lora5, flux_lora5s, adv_args],
|
224 |
outputs=[repo_urls, output_md],
|
|
|
233 |
gr.on(
|
234 |
triggers=[sd35_run_button.click],
|
235 |
fn=convert_url_to_diffusers_repo,
|
236 |
+
inputs=[dl_url, hf_user, hf_repo, hf_token, civitai_key, is_private, gated, is_overwrite, is_pr, is_upload_sf, repo_urls,
|
237 |
sd35_dtype, sd35_vae, sd35_clip, sd35_t5, sd35_scheduler, sd15_ema, sd15_isize, sd15_sc, sd35_base_repo, sd35_mtype,
|
238 |
sd35_lora1, sd35_lora1s, sd35_lora2, sd35_lora2s, sd35_lora3, sd35_lora3s, sd35_lora4, sd35_lora4s, sd35_lora5, sd35_lora5s, adv_args],
|
239 |
outputs=[repo_urls, output_md],
|
convert_url_to_diffusers_multi_gr.py
CHANGED
@@ -17,7 +17,7 @@ import shutil
|
|
17 |
import gc
|
18 |
import tempfile
|
19 |
# also requires aria, gdown, peft, huggingface_hub, safetensors, transformers, accelerate, pytorch_lightning
|
20 |
-
from utils import (get_token, set_token, is_repo_exists, is_repo_name, get_download_file, upload_repo)
|
21 |
from sdutils import (SCHEDULER_CONFIG_MAP, get_scheduler_config, fuse_loras, DTYPE_DEFAULT, get_dtype, get_dtypes, get_model_type_from_key, get_process_dtype)
|
22 |
|
23 |
|
@@ -394,7 +394,8 @@ def convert_url_to_diffusers(url: str, civitai_key: str="", is_upload_sf: bool=F
|
|
394 |
gc.collect()
|
395 |
|
396 |
|
397 |
-
def convert_url_to_diffusers_repo(dl_url: str, hf_user: str, hf_repo: str, hf_token: str, civitai_key="", is_private: bool=True,
|
|
|
398 |
is_upload_sf: bool=False, urls: list=[], dtype: str="fp16", vae: str="", clip: str="", t5: str="", scheduler: str="Euler a",
|
399 |
ema: bool=True, image_size: str="768", safety_checker: bool=False,
|
400 |
base_repo: str="", mtype: str="", lora1: str="", lora1s=1.0, lora2: str="", lora2s=1.0, lora3: str="", lora3s=1.0,
|
@@ -404,6 +405,7 @@ def convert_url_to_diffusers_repo(dl_url: str, hf_user: str, hf_repo: str, hf_to
|
|
404 |
if not civitai_key and os.environ.get("CIVITAI_API_KEY"): civitai_key = os.environ.get("CIVITAI_API_KEY") # default Civitai API key
|
405 |
if not hf_token and os.environ.get("HF_TOKEN"): hf_token = os.environ.get("HF_TOKEN") # default HF write token
|
406 |
if not hf_user: raise gr.Error(f"Invalid user name: {hf_user}")
|
|
|
407 |
set_token(hf_token)
|
408 |
lora_dict = {lora1: lora1s, lora2: lora2s, lora3: lora3s, lora4: lora4s, lora5: lora5s}
|
409 |
new_path = convert_url_to_diffusers(dl_url, civitai_key, is_upload_sf, dtype, vae, clip, t5, scheduler, ema, image_size, safety_checker, base_repo, mtype, lora_dict, is_local)
|
@@ -413,6 +415,7 @@ def convert_url_to_diffusers_repo(dl_url: str, hf_user: str, hf_repo: str, hf_to
|
|
413 |
if not is_repo_name(new_repo_id): raise gr.Error(f"Invalid repo name: {new_repo_id}")
|
414 |
if not is_overwrite and is_repo_exists(new_repo_id) and not is_pr: raise gr.Error(f"Repo already exists: {new_repo_id}")
|
415 |
repo_url = upload_repo(new_repo_id, new_path, is_private, is_pr)
|
|
|
416 |
safe_clean(new_path)
|
417 |
if not urls: urls = []
|
418 |
urls.append(repo_url)
|
|
|
17 |
import gc
|
18 |
import tempfile
|
19 |
# also requires aria, gdown, peft, huggingface_hub, safetensors, transformers, accelerate, pytorch_lightning
|
20 |
+
from utils import (get_token, set_token, is_repo_exists, is_repo_name, get_download_file, upload_repo, gate_repo)
|
21 |
from sdutils import (SCHEDULER_CONFIG_MAP, get_scheduler_config, fuse_loras, DTYPE_DEFAULT, get_dtype, get_dtypes, get_model_type_from_key, get_process_dtype)
|
22 |
|
23 |
|
|
|
394 |
gc.collect()
|
395 |
|
396 |
|
397 |
+
def convert_url_to_diffusers_repo(dl_url: str, hf_user: str, hf_repo: str, hf_token: str, civitai_key="", is_private: bool=True,
|
398 |
+
gated: str="False", is_overwrite: bool=False, is_pr: bool=False,
|
399 |
is_upload_sf: bool=False, urls: list=[], dtype: str="fp16", vae: str="", clip: str="", t5: str="", scheduler: str="Euler a",
|
400 |
ema: bool=True, image_size: str="768", safety_checker: bool=False,
|
401 |
base_repo: str="", mtype: str="", lora1: str="", lora1s=1.0, lora2: str="", lora2s=1.0, lora3: str="", lora3s=1.0,
|
|
|
405 |
if not civitai_key and os.environ.get("CIVITAI_API_KEY"): civitai_key = os.environ.get("CIVITAI_API_KEY") # default Civitai API key
|
406 |
if not hf_token and os.environ.get("HF_TOKEN"): hf_token = os.environ.get("HF_TOKEN") # default HF write token
|
407 |
if not hf_user: raise gr.Error(f"Invalid user name: {hf_user}")
|
408 |
+
if gated != "False" and is_private: raise gr.Error(f"Gated repo must be public")
|
409 |
set_token(hf_token)
|
410 |
lora_dict = {lora1: lora1s, lora2: lora2s, lora3: lora3s, lora4: lora4s, lora5: lora5s}
|
411 |
new_path = convert_url_to_diffusers(dl_url, civitai_key, is_upload_sf, dtype, vae, clip, t5, scheduler, ema, image_size, safety_checker, base_repo, mtype, lora_dict, is_local)
|
|
|
415 |
if not is_repo_name(new_repo_id): raise gr.Error(f"Invalid repo name: {new_repo_id}")
|
416 |
if not is_overwrite and is_repo_exists(new_repo_id) and not is_pr: raise gr.Error(f"Repo already exists: {new_repo_id}")
|
417 |
repo_url = upload_repo(new_repo_id, new_path, is_private, is_pr)
|
418 |
+
gate_repo(new_repo_id, gated)
|
419 |
safe_clean(new_path)
|
420 |
if not urls: urls = []
|
421 |
urls.append(repo_url)
|
utils.py
CHANGED
@@ -211,6 +211,18 @@ def upload_repo(repo_id: str, dir_path: str, is_private: bool, is_pr: bool=False
|
|
211 |
return ""
|
212 |
|
213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
HF_SUBFOLDER_NAME = ["None", "user_repo"]
|
215 |
|
216 |
|
|
|
211 |
return ""
|
212 |
|
213 |
|
214 |
+
def gate_repo(repo_id: str, gated_str: str, repo_type: str="model"):
|
215 |
+
hf_token = get_token()
|
216 |
+
api = HfApi(token=hf_token)
|
217 |
+
try:
|
218 |
+
if gated_str == "auto": gated = "auto"
|
219 |
+
elif gated_str == "manual": gated = "manual"
|
220 |
+
else: gated = False
|
221 |
+
api.update_repo_settings(repo_id=repo_id, gated=gated, repo_type=repo_type, token=hf_token)
|
222 |
+
except Exception as e:
|
223 |
+
print(f"Error: Failed to update settings {repo_id}. {e}")
|
224 |
+
|
225 |
+
|
226 |
HF_SUBFOLDER_NAME = ["None", "user_repo"]
|
227 |
|
228 |
|