#!/usr/bin/env bash
# ==============================================================================
# Automated Asset Downloader for ComfyUI Lab Recipe
# Recipe: Flux.1 Dev Spicy Preset: Photorealistic Uncensored Denoising
# Origin: https://decomfy.com/fulfill-your-dirty-fantasies-flux-comfyui
# ==============================================================================
set -euo pipefail

# 1. ComfyUI directory location (Defaults to current working directory)
COMFY_DIR="${1:-.}"

# 2. Civitai API key (Optional: Set export CIVITAI_TOKEN="your_key" if gated)
CIVITAI_TOKEN="${CIVITAI_TOKEN:-}"

echo "===================================================================="
echo "ComfyUI Lab: Downloading assets for: fulfill-your-dirty-fantasies-flux-comfyui"
echo "Target ComfyUI root: ${COMFY_DIR}"
echo "===================================================================="

# Create required directories
echo "==> Ensuring model directories exist..."
mkdir -p "${COMFY_DIR}/user/default/workflows"
mkdir -p "${COMFY_DIR}/models/diffusion_models"
mkdir -p "${COMFY_DIR}/models/text_encoders"
mkdir -p "${COMFY_DIR}/models/vae"
mkdir -p "${COMFY_DIR}/models/loras"

# Download Workflow JSON
echo "==> Fetching Workflow Canvas JSON..."
curl -sSL "https://decomfy.com/api/workflows/fulfill-your-dirty-fantasies-flux-comfyui.json" -o "${COMFY_DIR}/user/default/workflows/fulfill-your-dirty-fantasies-flux-comfyui.json"
echo "[OK] Saved workflow to ${COMFY_DIR}/user/default/workflows/fulfill-your-dirty-fantasies-flux-comfyui.json"

echo "==> Downloading required models and weights..."
  # flux1-dev-fp8.safetensors (11.9 GB) -> models/diffusion_models/
  if [ ! -f "${COMFY_DIR}/models/diffusion_models/flux1-dev-fp8.safetensors" ]; then
    echo "[+] Downloading flux1-dev-fp8.safetensors (11.9 GB)..."
    URL="https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-dev-fp8.safetensors"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/diffusion_models/flux1-dev-fp8.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/diffusion_models/flux1-dev-fp8.safetensors"
  fi

  # t5xxl_fp8_e4m3fn.safetensors (4.89 GB) -> models/text_encoders/
  if [ ! -f "${COMFY_DIR}/models/text_encoders/t5xxl_fp8_e4m3fn.safetensors" ]; then
    echo "[+] Downloading t5xxl_fp8_e4m3fn.safetensors (4.89 GB)..."
    URL="https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/text_encoders/t5xxl_fp8_e4m3fn.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/text_encoders/t5xxl_fp8_e4m3fn.safetensors"
  fi

  # clip_l.safetensors (246 MB) -> models/text_encoders/
  if [ ! -f "${COMFY_DIR}/models/text_encoders/clip_l.safetensors" ]; then
    echo "[+] Downloading clip_l.safetensors (246 MB)..."
    URL="https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/text_encoders/clip_l.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/text_encoders/clip_l.safetensors"
  fi

  # ae.safetensors (170 MB) -> models/vae/
  if [ ! -f "${COMFY_DIR}/models/vae/ae.safetensors" ]; then
    echo "[+] Downloading ae.safetensors (170 MB)..."
    URL="https://huggingface.co/diffusers/FLUX.1-vae/resolve/main/diffusion_pytorch_model.safetensors"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/vae/ae.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/vae/ae.safetensors"
  fi

  # flux_nsfw_uncensored_lora.safetensors (650 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/flux_nsfw_uncensored_lora.safetensors" ]; then
    echo "[+] Downloading flux_nsfw_uncensored_lora.safetensors (650 MB)..."
    URL="https://huggingface.co/Heartsync/Flux-NSFW-uncensored/resolve/main/lora.safetensors"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/flux_nsfw_uncensored_lora.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/flux_nsfw_uncensored_lora.safetensors"
  fi

echo ""
echo "===================================================================="
echo "[SUCCESS] All recipe models and workflow have been synced!"
echo "Open ComfyUI, press 'Load' and select 'fulfill-your-dirty-fantasies-flux-comfyui.json' to run."
echo "===================================================================="
