From b6460908def747dfcf4f206521f3d4dc9c656baa Mon Sep 17 00:00:00 2001 From: Th-Underscore Date: Fri, 17 Apr 2026 03:50:36 -0400 Subject: [PATCH 1/3] Add model download branch handling in download_model_wrapper Works with `*/tree/` URL or `*:` ID --- download-model.py | 3 +-- modules/ui_model_menu.py | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/download-model.py b/download-model.py index a31bbfc6..e4c0ec54 100644 --- a/download-model.py +++ b/download-model.py @@ -57,8 +57,7 @@ class ModelDownloader: return session def sanitize_model_and_branch_names(self, model, branch): - if model[-1] == '/': - model = model[:-1] + model = model.removesuffix("/") if model.startswith(base + '/'): model = model[len(base) + 1:] diff --git a/modules/ui_model_menu.py b/modules/ui_model_menu.py index 9c8306f5..7671aeb8 100644 --- a/modules/ui_model_menu.py +++ b/modules/ui_model_menu.py @@ -239,8 +239,27 @@ def download_model_wrapper(repo_id, specific_file, progress=gr.Progress(), retur downloader_module = importlib.import_module("download-model") downloader = downloader_module.ModelDownloader() update_queue = queue.Queue() + branch = None try: + # Handle branch in URL + if "/tree/" in repo_id: + try: + repo_id, branch = repo_id.split("/tree/") + except Exception as e: + yield f"Error parsing branch from URL: {e}" + progress(0.0) + return + + # Handle branch delimited by ":" + elif ":" in repo_id: + try: + repo_id, branch = repo_id.split(":") + except Exception as e: + yield f"Error parsing branch from repo_id: {e}" + progress(0.0) + return + # Handle direct GGUF URLs if repo_id.startswith("https://") and ("huggingface.co" in repo_id) and (repo_id.endswith(".gguf") or repo_id.endswith(".gguf?download=true")): try: @@ -256,6 +275,7 @@ def download_model_wrapper(repo_id, specific_file, progress=gr.Progress(), retur progress(0.0) return + if not repo_id: yield "Please enter a model path." progress(0.0) @@ -266,7 +286,7 @@ def download_model_wrapper(repo_id, specific_file, progress=gr.Progress(), retur progress(0.0, "Preparing download...") - model, branch = downloader.sanitize_model_and_branch_names(repo_id, None) + model, branch = downloader.sanitize_model_and_branch_names(repo_id, branch) yield "Getting download links from Hugging Face..." links, sha256, is_lora, is_llamacpp, file_sizes = downloader.get_download_links_from_huggingface(model, branch, text_only=False, specific_file=specific_file) From d6d9720eb539a9b102a53d8fcb7b743362297192 Mon Sep 17 00:00:00 2001 From: Th-Underscore Date: Fri, 17 Apr 2026 03:57:41 -0400 Subject: [PATCH 2/3] Remove double space --- modules/ui_model_menu.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ui_model_menu.py b/modules/ui_model_menu.py index 7671aeb8..37fde106 100644 --- a/modules/ui_model_menu.py +++ b/modules/ui_model_menu.py @@ -275,7 +275,6 @@ def download_model_wrapper(repo_id, specific_file, progress=gr.Progress(), retur progress(0.0) return - if not repo_id: yield "Please enter a model path." progress(0.0) From 57643eb64d961c8ce4d2620ae73eec64cec6e372 Mon Sep 17 00:00:00 2001 From: Th-Underscore Date: Sat, 18 Apr 2026 20:03:32 -0400 Subject: [PATCH 3/3] Account for non-tree URLs --- modules/ui_model_menu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui_model_menu.py b/modules/ui_model_menu.py index 37fde106..29367b91 100644 --- a/modules/ui_model_menu.py +++ b/modules/ui_model_menu.py @@ -252,7 +252,7 @@ def download_model_wrapper(repo_id, specific_file, progress=gr.Progress(), retur return # Handle branch delimited by ":" - elif ":" in repo_id: + elif not repo_id.startswith("http") and ":" in repo_id: try: repo_id, branch = repo_id.split(":") except Exception as e: