Files
SkinbaseNova/services/enhance-worker/scripts/download-realesrgan-ncnn.sh

71 lines
2.1 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BIN_DIR="${ROOT_DIR}/bin"
MODEL_DIR="${ROOT_DIR}/models"
TMP_DIR="${ROOT_DIR}/.tmp"
FORCE=0
RELEASE_VERSION="${REALESRGAN_RELEASE_VERSION:-v0.2.5.0}"
ASSET_NAME="${REALESRGAN_RELEASE_ASSET:-realesrgan-ncnn-vulkan-20220424-ubuntu.zip}"
while [[ $# -gt 0 ]]; do
case "$1" in
--force)
FORCE=1
shift
;;
--version)
RELEASE_VERSION="${2:?--version requires a value}"
shift 2
;;
*)
echo "Unknown argument: $1" >&2
exit 1
;;
esac
done
if [[ "${RELEASE_VERSION}" == "latest" ]]; then
RELEASE_URL="${REALESRGAN_RELEASE_URL:-https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/${ASSET_NAME}}"
else
RELEASE_URL="${REALESRGAN_RELEASE_URL:-https://github.com/xinntao/Real-ESRGAN/releases/download/${RELEASE_VERSION}/${ASSET_NAME}}"
fi
mkdir -p "${BIN_DIR}" "${MODEL_DIR}" "${TMP_DIR}"
if [[ -f "${BIN_DIR}/realesrgan-ncnn-vulkan" && "${FORCE}" -ne 1 ]]; then
echo "Binary already exists at ${BIN_DIR}/realesrgan-ncnn-vulkan. Use --force to replace it."
exit 0
fi
ARCHIVE_PATH="${TMP_DIR}/${ASSET_NAME}"
EXTRACT_DIR="${TMP_DIR}/realesrgan-extract"
rm -rf "${EXTRACT_DIR}"
mkdir -p "${EXTRACT_DIR}"
echo "Downloading ${RELEASE_URL}"
curl -L --fail --output "${ARCHIVE_PATH}" "${RELEASE_URL}"
if [[ ! -f "${ARCHIVE_PATH}" ]]; then
echo "Download failed: archive not found at ${ARCHIVE_PATH}" >&2
exit 1
fi
unzip -o "${ARCHIVE_PATH}" -d "${EXTRACT_DIR}" >/dev/null
BINARY_PATH="$(find "${EXTRACT_DIR}" -type f -name 'realesrgan-ncnn-vulkan' | head -n 1)"
if [[ -z "${BINARY_PATH}" ]]; then
echo "Could not find realesrgan-ncnn-vulkan in the downloaded archive." >&2
exit 1
fi
install -m 0755 "${BINARY_PATH}" "${BIN_DIR}/realesrgan-ncnn-vulkan"
find "${EXTRACT_DIR}" -type f \( -name '*.param' -o -name '*.bin' \) -print0 | while IFS= read -r -d '' model_file; do
install -m 0644 "${model_file}" "${MODEL_DIR}/$(basename "${model_file}")"
done
echo "Installed binary: ${BIN_DIR}/realesrgan-ncnn-vulkan"
echo "Installed models in: ${MODEL_DIR}"