#!/usr/bin/env bash
scriptVersion="1.3"
scriptName="Recyclarr"

#### Import Settings
source /config/extended.conf

log () {
  m_time=`date "+%F %T"`
  echo $m_time" :: $scriptName :: $scriptVersion :: "$1
}

if [ "$enableRecyclarr" != "true" ]; then
	log "Script is not enabled, enable by setting enableRecyclarr to \"true\" by modifying the \"/config/extended.conf\" config file..."
	log "Sleeping (infinity)"
	sleep infinity
fi

getArrAppInfo () {
  # Get Arr App information
  if [ -z "$arrUrl" ] || [ -z "$arrApiKey" ]; then
    arrUrlBase="$(cat /config/config.xml | xq | jq -r .Config.UrlBase)"
    if [ "$arrUrlBase" == "null" ]; then
      arrUrlBase=""
    else
      arrUrlBase="/$(echo "$arrUrlBase" | sed "s/\///g")"
    fi
    arrName="$(cat /config/config.xml | xq | jq -r .Config.InstanceName)"
    arrApiKey="$(cat /config/config.xml | xq | jq -r .Config.ApiKey)"
    arrPort="$(cat /config/config.xml | xq | jq -r .Config.Port)"
    arrUrl="http://127.0.0.1:${arrPort}${arrUrlBase}"
  fi
  if [ "$arrName" == "Radarr" ]; then
    recylcarrApp="radarr"
  fi
  if [ "$arrName" == "Sonarr" ]; then
    recylcarrApp="sonarr"
  fi
}

verifyApiAccess () {
  until false
  do
    arrApiTest=""
    arrApiVersion=""
    if [ "$arrName" == "Sonarr" ] || [ "$arrName" == "Radarr" ]; then
      arrApiVersion="v3"
    elif [ "$arrName" == "Lidarr" ] || [ "$arrName" == "Readarr" ]; then
      arrApiVersion="v1"
    fi
    arrApiTest=$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r .instanceName)
    if [ "$arrApiTest" == "$arrName" ]; then
      break
    else
      log "$arrName is not ready, sleeping until valid response..."
      sleep 1
    fi
  done
}
RecyclarrProcess () {
  # auto-clean up log file to reduce space usage
  if [ -f "/config/logs/Recyclarr.txt" ]; then
  	find /config/logs -type f -name "Recyclarr.txt" -size +1024k -delete
  fi
  
  if [ ! -f "/config/logs/Recyclarr.txt" ]; then
      touch "/config/logs/Recyclarr.txt"
      chmod 666 "/config/logs/Recyclarr.txt"
  fi
  exec &> >(tee -a "/config/logs/Recyclarr.txt")
  
  # Configure Yaml with URL and API Key
  sed -i "s%arrUrl%$arrUrl%g" "/config/extended/recyclarr.yaml"
  sed -i "s%arrApi%$arrApiKey%g" "/config/extended/recyclarr.yaml"   
  
  # update arr app
  log "Updating Sonarr via Recyclarr"
  if [ ! -d /config/extended/recyclarr-data ]; then
    mkdir -p /config/extended/recyclarr-data
    chmod 777 /config/extended/recyclarr-data
  fi
  /recyclarr/recyclarr sync $recylcarrApp -c $recyclarrConfig --app-data /config/extended/recyclarr-data
  log "Complete"
}

echo "Starting Script...."
for (( ; ; )); do
	let i++
	getArrAppInfo
	verifyApiAccess
	RecyclarrProcess
	echo "Script sleeping for 4 hours..."
	sleep 4h
done

exit
