#!/usr/bin/env bash
# ==============================================================================
# Automated Asset Downloader for ComfyUI Lab Recipe
# Recipe: Civitai #143619714 Pink Knit Bedroom: Krea 2 Photorealism & Multi-Slider Recipe
# Origin: https://decomfy.com/civitai-pink-knit-bedroom-krea2
# ==============================================================================
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: civitai-pink-knit-bedroom-krea2"
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/civitai-pink-knit-bedroom-krea2.json" -o "${COMFY_DIR}/user/default/workflows/civitai-pink-knit-bedroom-krea2.json"
echo "[OK] Saved workflow to ${COMFY_DIR}/user/default/workflows/civitai-pink-knit-bedroom-krea2.json"

echo "==> Downloading required models and weights..."
  # sickOllie_krea2.safetensors (13.5 GB) -> models/diffusion_models/
  if [ ! -f "${COMFY_DIR}/models/diffusion_models/sickOllie_krea2.safetensors" ]; then
    echo "[+] Downloading sickOllie_krea2.safetensors (13.5 GB)..."
    URL="https://civitai.com/api/download/models/3154408"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/diffusion_models/sickOllie_krea2.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/diffusion_models/sickOllie_krea2.safetensors"
  fi

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

  # wan_2.1_vae.safetensors (254 MB) -> models/vae/
  if [ ! -f "${COMFY_DIR}/models/vae/wan_2.1_vae.safetensors" ]; then
    echo "[+] Downloading wan_2.1_vae.safetensors (254 MB)..."
    URL="https://huggingface.co/Wan-AI/Wan2.1-T2V-14B/resolve/main/Wan2.1_VAE.pth"
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/vae/wan_2.1_vae.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/vae/wan_2.1_vae.safetensors"
  fi

  # Emotions V1.safetensors (229 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/Emotions V1.safetensors" ]; then
    echo "[+] Downloading Emotions V1.safetensors (229 MB)..."
    URL="https://civitai.com/api/download/models/3193133"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/Emotions V1.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/Emotions V1.safetensors"
  fi

  # Krea2_TextFusion_Refusal_Reduction.safetensors (27.6 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/Krea2_TextFusion_Refusal_Reduction.safetensors" ]; then
    echo "[+] Downloading Krea2_TextFusion_Refusal_Reduction.safetensors (27.6 MB)..."
    URL="https://civitai.com/api/download/models/3125118"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/Krea2_TextFusion_Refusal_Reduction.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/Krea2_TextFusion_Refusal_Reduction.safetensors"
  fi

  # areola_size_krea2_loraholic_Recommended range -10.0 to 10.0.safetensors (14.3 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/areola_size_krea2_loraholic_Recommended range -10.0 to 10.0.safetensors" ]; then
    echo "[+] Downloading areola_size_krea2_loraholic_Recommended range -10.0 to 10.0.safetensors (14.3 MB)..."
    URL="https://civitai.com/api/download/models/3120387"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/areola_size_krea2_loraholic_Recommended range -10.0 to 10.0.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/areola_size_krea2_loraholic_Recommended range -10.0 to 10.0.safetensors"
  fi

  # PornMaster_Breasts_Slider_Krea2_V1_weight +15 to -10.safetensors (29.5 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/PornMaster_Breasts_Slider_Krea2_V1_weight +15 to -10.safetensors" ]; then
    echo "[+] Downloading PornMaster_Breasts_Slider_Krea2_V1_weight +15 to -10.safetensors (29.5 MB)..."
    URL="https://civitai.com/api/download/models/3125465"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/PornMaster_Breasts_Slider_Krea2_V1_weight +15 to -10.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/PornMaster_Breasts_Slider_Krea2_V1_weight +15 to -10.safetensors"
  fi

  # ass_v2_krea2_loraholic.safetensors (50 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/ass_v2_krea2_loraholic.safetensors" ]; then
    echo "[+] Downloading ass_v2_krea2_loraholic.safetensors (50 MB)..."
    URL="https://civitai.com/api/download/models/3207249"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/ass_v2_krea2_loraholic.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/ass_v2_krea2_loraholic.safetensors"
  fi

  # PornMaster_Age_Slider_Krea2_V1.safetensors (28.6 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/PornMaster_Age_Slider_Krea2_V1.safetensors" ]; then
    echo "[+] Downloading PornMaster_Age_Slider_Krea2_V1.safetensors (28.6 MB)..."
    URL="https://civitai.com/api/download/models/3121449"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/PornMaster_Age_Slider_Krea2_V1.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/PornMaster_Age_Slider_Krea2_V1.safetensors"
  fi

  # Detailer-KREA2_from -3 to 6.safetensors (11.5 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/Detailer-KREA2_from -3 to 6.safetensors" ]; then
    echo "[+] Downloading Detailer-KREA2_from -3 to 6.safetensors (11.5 MB)..."
    URL="https://civitai.com/api/download/models/3068874"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/Detailer-KREA2_from -3 to 6.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/Detailer-KREA2_from -3 to 6.safetensors"
  fi

  # krea2_nose_slider_v1.safetensors (3.8 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/krea2_nose_slider_v1.safetensors" ]; then
    echo "[+] Downloading krea2_nose_slider_v1.safetensors (3.8 MB)..."
    URL="https://civitai.com/api/download/models/3254961"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/krea2_nose_slider_v1.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/krea2_nose_slider_v1.safetensors"
  fi

  # snofs_krea_v1_4.safetensors (1.56 GB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/snofs_krea_v1_4.safetensors" ]; then
    echo "[+] Downloading snofs_krea_v1_4.safetensors (1.56 GB)..."
    URL="https://civitai.com/api/download/models/3290120"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/snofs_krea_v1_4.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/snofs_krea_v1_4.safetensors"
  fi

  # candid_krea2_loraholic_Recommended range 3.0 to 9.0.safetensors (14.3 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/candid_krea2_loraholic_Recommended range 3.0 to 9.0.safetensors" ]; then
    echo "[+] Downloading candid_krea2_loraholic_Recommended range 3.0 to 9.0.safetensors (14.3 MB)..."
    URL="https://civitai.com/api/download/models/3123867"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/candid_krea2_loraholic_Recommended range 3.0 to 9.0.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/candid_krea2_loraholic_Recommended range 3.0 to 9.0.safetensors"
  fi

  # nicegirls_krea2_0.6-0.8.safetensors (114 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/nicegirls_krea2_0.6-0.8.safetensors" ]; then
    echo "[+] Downloading nicegirls_krea2_0.6-0.8.safetensors (114 MB)..."
    URL="https://civitai.com/api/download/models/3075498"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/nicegirls_krea2_0.6-0.8.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/nicegirls_krea2_0.6-0.8.safetensors"
  fi

  # krea2-bloomgirls-realism-step00004000.safetensors (469 MB) -> models/loras/
  if [ ! -f "${COMFY_DIR}/models/loras/krea2-bloomgirls-realism-step00004000.safetensors" ]; then
    echo "[+] Downloading krea2-bloomgirls-realism-step00004000.safetensors (469 MB)..."
    URL="https://civitai.com/api/download/models/3191538"
    if [ -n "$CIVITAI_TOKEN" ]; then
      if [[ "$URL" == *"?"* ]]; then
        URL="${URL}&token=${CIVITAI_TOKEN}"
      else
        URL="${URL}?token=${CIVITAI_TOKEN}"
      fi
    fi
    curl -C - -L -f --retry 3 --progress-bar "$URL" -o "${COMFY_DIR}/models/loras/krea2-bloomgirls-realism-step00004000.safetensors"
  else
    echo "[OK] Found ${COMFY_DIR}/models/loras/krea2-bloomgirls-realism-step00004000.safetensors"
  fi

echo ""
echo "===================================================================="
echo "[SUCCESS] All recipe models and workflow have been synced!"
echo "Open ComfyUI, press 'Load' and select 'civitai-pink-knit-bedroom-krea2.json' to run."
echo "===================================================================="
