#!/usr/bin/env bash

TODAY=$(date -u +%Y%m%d)

MODEL_NAME="NASNet Mobile"
MODEL_URL="https://dl.photoprism.app/tensorflow/nasnet.zip?$TODAY"
MODELS_PATH="assets/models"
MODEL_PATH="$MODELS_PATH/nasnet"
MODEL_ZIP="/tmp/photoprism/nasnet.zip"
MODEL_HASH="f18b801354e95cade497b4f12e8d2537d04c04f6  $MODEL_ZIP"
MODEL_VERSION="$MODEL_PATH/version.txt"
MODEL_BACKUP="storage/backup/nasnet-$TODAY"
MODEL_21K_LABELS_URL="https://dl.photoprism.app/tensorflow/vision/labels-imagenet21k.txt"

echo "Installing $MODEL_NAME model for TensorFlow..."

# Create directories
mkdir -p /tmp/photoprism
mkdir -p storage/backup

# Check for update
if [[ -f ${MODEL_ZIP} ]] && [[ $(sha1sum ${MODEL_ZIP}) == "${MODEL_HASH}" ]]; then
  if [[ -f ${MODEL_VERSION} ]]; then
    echo "Already up to date."
    exit
  fi
else
  # Download model
  echo "Downloading latest model from $MODEL_URL..."
  wget --inet4-only -c "${MODEL_URL}" -O ${MODEL_ZIP}

  TMP_HASH=$(sha1sum ${MODEL_ZIP})

  echo "${TMP_HASH}"
fi

# Create backup
if [[ -e ${MODEL_PATH} ]]; then
  echo "Creating backup of existing directory: $MODEL_BACKUP"
  rm -rf "${MODEL_BACKUP}"
  mv ${MODEL_PATH} "${MODEL_BACKUP}"
fi

# Unzip model
unzip ${MODEL_ZIP} -d "$MODELS_PATH"
echo "$MODEL_NAME $TODAY $MODEL_HASH" > ${MODEL_VERSION}
wget --inet4-only -c "${MODEL_21K_LABELS_URL}" -O ${MODEL_PATH}/labels21k.txt

echo "Latest $MODEL_NAME installed."
