File size: 2,498 Bytes
c076b60 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import os
import subprocess
import requests
from huggingface_hub import hf_hub_download
# Create directories
os.makedirs("/app/ComfyUI/models/checkpoints", exist_ok=True)
os.makedirs("/app/ComfyUI/models/controlnet", exist_ok=True)
os.makedirs("/app/ComfyUI/models/ipadapter", exist_ok=True)
os.makedirs("/app/ComfyUI/models/pulid", exist_ok=True)
os.makedirs("/app/ComfyUI/models/clip_vision", exist_ok=True)
# List of models to download
models = [
# SDXL Checkpoint
{"repo_id": "Lykon/DreamShaper-XL-Turbo", "filename": "dreamshaperXL_turboDpmppSDEKarras.safetensors", "local_path": "/app/ComfyUI/models/checkpoints/sdxl/dreamshaperXL_turboDpmppSDEKarras.safetensors"},
# ControlNet model
{"repo_id": "thibaud/controlnet-openpose-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", "local_path": "/app/ComfyUI/models/controlnet/sdxl/thibaud_xl_openpose.safetensors"},
# IP-Adapter
{"repo_id": "h94/IP-Adapter", "filename": "ip-adapter_sdxl.safetensors", "local_path": "/app/ComfyUI/models/ipadapter/sdxl/ip-adapter_sdxl.safetensors"},
# PuLID model
{"repo_id": "l7dev/ip-adapter-pulid-sdxl", "filename": "ip-adapter_pulid_sdxl_fp16.safetensors", "local_path": "/app/ComfyUI/models/pulid/ip-adapter_pulid_sdxl_fp16.safetensors"},
# CLIP Vision
{"repo_id": "h94/IP-Adapter", "filename": "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors", "local_path": "/app/ComfyUI/models/clip_vision/CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors"}
]
# Download each model
for model in models:
try:
os.makedirs(os.path.dirname(model["local_path"]), exist_ok=True)
print(f"Downloading {model['filename']} from {model['repo_id']}...")
# Get token from environment variable if available
token = os.environ.get("HF_TOKEN", None)
hf_hub_download(
repo_id=model["repo_id"],
filename=model["filename"],
local_dir=os.path.dirname(model["local_path"]),
local_dir_use_symlinks=False,
token=token
)
# Rename if necessary
downloaded_path = os.path.join(os.path.dirname(model["local_path"]), model["filename"])
if downloaded_path != model["local_path"]:
os.rename(downloaded_path, model["local_path"])
print(f"Successfully downloaded {model['filename']}")
except Exception as e:
print(f"Error downloading {model['filename']}: {str(e)}")
|