#!/bin/bash
########################################################
#                                                      #
#  Search for cover art in mediafile or the internet   #
#  Depends on: ffmpeg, sacad, convert                  #
#                                                      #
#  Scripted by Koentje  (remon@cobrasoft.nl)           #
#                                                      #
#                                        version 2.6   #
########################################################

if [ "$1" != "gocoverart" ]; then
   echo -e "\n\e[31mERROR:\e[m Cover_art can not start outside of conky!\n"
   exit 1
fi

sleep 1

source "./player.ini"
source "./themes/$theme.ini"
source "./tempfiles/nowplaying"
source "./tempfiles/covercheck"


# Check if dependencies are installed
  if [ "$(which ffmpeg)" = "" ]; then echo -e "\e[31mERROR\e[m 'ffmpeg' not installed!\n"; exit 1; fi
  if [ "$(which sacad)" = "" ]; then echo -e "\e[31mERROR\e[m 'sacad' not installed!  (See README.TXT)\n"; exit 1; fi
  if [ "$(which convert)" = "" ]; then echo -e "\e[31mERROR\e[m 'convert' not installed!  (imagemick package)\n"; exit 1; fi


# If special default coverart, then add dash to the beginning
  if [ "$coverartdefault" != "" ]; then
     coverartdefault="-$coverartdefault"
  else
     coverartdefault=""
  fi

# Check if player is running
  playerctl -s -p ${player,,} status >/dev/null ; err=$?
  if [ "$err" = "1" ]; then
     cp -f "./images/.coverart/default-coverart$coverartdefault.png" "./coverart/coverart.png"
     exit 1
  fi


  # If a new song is played, check for art
  if [ "$title" != "$checktitle" ]; then

     # Show loading picture  (almost never visible for some reason)
     cp -f "./images/.coverart/loading-coverart.png" "./coverart/coverart.png"

     # Get art from media file with ffmpeg
     cp -f "$(cat ./tempfiles/mediafilename)" "./tempfiles/coverart.tmp"
     $(which ffmpeg) -loglevel quiet -y -i "./tempfiles/coverart.tmp" -an -c:v copy ./coverart/coverart.jpg; err=$?
       if [ "$err" = "0" ]; then
          convert ./coverart/coverart.jpg ./coverart/coverart.png
          rm -f ./coverart/coverart.jpg
          rm -f ./tempfiles/coverart.tmp
          echo -e "\e[32mINFO  \e[m[ffmepg::cover extracted]" >/dev/stderr
          echo "checkartist=\"$artist\"" > "./tempfiles/covercheck"
          echo "checktitle=\"$title\"" >> "./tempfiles/covercheck"
          exit 0
       elif [ "$err" = "234" ]; then
          rm -f ./coverart/coverart.jpg
          rm -f ./tempfiles/coverart.tmp
          echo -e "\e[33mWARN\e[m  [ffmpeg] No cover art in mediafile" >/dev/stderr
       else
          rm -f ./coverart/coverart.jpg
          rm -f ./tempfiles/coverart.tmp
          echo -e "\e[31mERROR\e[m [ffmpeg::error $err]" >/dev/stderr
       fi

     # Get art from internet if ffmpeg fails
     if [ "${icoverart^^}" = "YES" ]; then
       $(which sacad) "$artist" "$title" "600" "./coverart/coverart.png"; err=$?
         if [ "$err" = "0" ]; then
            echo "checkartist=\"$artist\"" > "./tempfiles/covercheck"
            echo "checktitle=\"$title\"" >> "./tempfiles/covercheck"
            exit 0
         else
            cp -f "./images/.coverart/default-coverart$coverartdefault.png" "./coverart/coverart.png"
            echo "checkartist=\"$artist\"" > "./tempfiles/covercheck"
            echo "checktitle=\"$title\"" >> "./tempfiles/covercheck"
            #echo -e "\e[31mERROR\e[m [sacad::error $err]" >/dev/stderr
            exit 1
         fi
     elif [ "${icoverart^^}" = "NO" ]; then
          cp -f "./images/.coverart/default-coverart$coverartdefault.png" "./coverart/coverart.png"
          echo "checkartist=\"$artist\"" > "./tempfiles/covercheck"
          echo "checktitle=\"$title\"" >> "./tempfiles/covercheck"
          echo -e "\e[32mINFO  \e[m[coverart search is turned off]" >/dev/stderr
          exit 0
     else
       echo -e "\e[31mERROR\e[m [player.ini] Faulty icoverart setting]" >/dev/stderr
       exit 1
     fi

  fi

exit 1
