
#!/bin/sh
# File	: upd_link-page.sh
# By	: MaartenDeBoer.nl, 180904
# Subject	: Script to update link-pages (like netapp.link / netapp.agrarix.com)
#(0.2)	: From upd_netapp-link.sh
#(0.3)	: Update --config & CONFIG(FILE), etc/ -> data/
#(0.4),181017	: Mod's
#(0.5),181019	: Added "watch_videos?video_ids="
#(0.6),181103	: Added MATE NAME "up-date"
#(0.7),181103	: Add IMG at table3
#(0.8),181107	: Added R_PIC_SIZE
#(0.9),181208	: Mod grep -v ^#
#(0.10),190102	: Add DATADIR, removed RCFILE (not used anymore)
#(0.11),190102	: Added -l | --linksdir. For using dir's in stead of links (INDEXDIR, LINKSDIR)
#(0.12),190416	: Mod LINK_TEXT 1+2
#(0.13),190921	: Upd -y without (
PGM=`basename $0|cut -d\. -f1`
VER="0.13"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
DATI=`date +%Y%m%d-%H%M%S`
UP_DATE=`date +%Y-%m-%d-%H-%M-%S`
DATADIR="${HOME}/data/link-page"
USE_LD=""

CONFIG="${PGM}.conf"
WWWURL="${CONFIG}.agrarix.com"
INDEXDIR="/var/www/vhosts/${WWWURL}/html"
INDEXFILE="${INDEXDIR}/index.html"
LINKSDIR="${INDEXDIR}"
INITBGCOLOR="white"
INITCOLOR="black"
HEADFILE="${DATADIR}/${CONFIG}.head"
LINKSFILE="${DATADIR}/${CONFIG}.links"
MENUFILE="${DATADIR}/${CONFIG}.menu"
R_PICTURE=""
R_PIC_HEIGHT=""
BORDER1=0
BORDER2=0
BORDER3=0
BORDER4=0
COL1WIDTH="30%"
LINK_PICTURE=""
LINK_HEIGHT=""
LINK_TEXT1="Link:"
LINK_TEXT2="Is about:"
LINK_BGCOLOR="white"
# --YouTubeList
YTL="" 

USAGE()
{
  echo "Usage: ${PGM} [<options>]"
  echo "  Version: ${VER}"
  echo "  options              :"
  echo "    -c | --config      : change Config (${CONFIG}) in etc/ "
  echo "    -h | --help        : this help"
  echo "    -l | --linksdir    : use LINKSDIR (${LINKSDIR}) in stead of links-file (${LINKSFILE})"
  echo "    -y | --youtubelist : YouTubeList"
  echo "    -V                 : Version"
  echo "    -x                 : set -x"
}
while [ ${#} -ge 1 ]
  do
  case ${1} in
    -c | --config) CONFIG=${2}; shift ;;
    -h | --help) USAGE; exit 1 ;;
    -l | --linksdir) USE_LD=1 ;;
    -y | --youtubelist) YTL=1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

#CONFIGFILE="${HOME}/etc/${PGM}.${CONFIG}"
CONFIGFILE="${DATADIR}/${PGM}.${CONFIG}"

if [ -f ${CONFIGFILE} ]; then
  echo "  Reading CONFIGfile (${CONFIGFILE}) ..."|tee -a ${LOG}
  . ${CONFIGFILE}
else
  echo "  NO CONFIGfile ($CONFIGFILE}) found. Exiting ..."|tee -a ${LOG}
  exit 2
fi  # CONFIGFILE

BGCOLOR="${INITBGCOLOR}"
COLOR="${INITCOLOR}"
HEADFILE="${DATADIR}/${CONFIG}.head"
LINKSFILE="${DATADIR}/${CONFIG}.links"
MENUFILE="${DATADIR}/${CONFIG}.menu"
#LOOPFILE="`echo ${INDEXFILE}|cut -d\/ -f1-6`/loop.html"

echo "`date` ${PGM} started."|tee -a ${LOG}
touch ${TMP} ${TMP}.ld

echo "BGCOLOR=${BGCOLOR}"
echo "BORDER1=${BORDER1}"
echo "BORDER2=${BORDER2}"
echo "BORDER3=${BORDER3}"
echo "BORDER4=${BORDER4}"
echo "CONFIG=${CONFIG}"
echo "DATADIR=${DATADIR}"
echo "HEADFILE=${HEADFILE}"
echo "BGCOLOR=${BGCOLOR}"
echo "COLOR=${COLOR}"
echo "INDEXFILE=${INDEXFILE}"
echo "LINKSFILE=${LINKSFILE}"
echo "LINKSDIR=${LINKSDIR}"
#echo "LOOPFILE=${LOOPFILE}"
echo "MENUFILE=${MENUFILE}"
echo "R_PICTURE=${R_PICTURE}"
echo "R_PIC_HEIGHT=${R_PIC_HEIGHT}"
echo "COL1WIDTH=${COL1WIDTH}"
echo "LINK_PICTURE=${LINK_PICTURE}"
echo "LINK_HEIGHT=${LINK_HEIGHT}"
echo "LINK_TEXT1=${LINK_TEXT1}"
echo "LINK_TEXT2=${LINK_TEXT2}"
echo "USE_LD=${USE_LD}"
echo "WWWURL=${WWWURL}"
sleep 1

if [ ! -f ${LINKSFILE} ]; then
  echo "  Input (links-)file (${LINKSFILE}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 2
fi

if [ ! -f ${INDEXFILE} ]; then
  echo "  Output (index-)file (${INDEXFILE}) NOT found. Exiting ..."|tee -a ${LOG}
  exit 3
fi

if [ ! -d ${DATADIR} ]; then
  mkdir -p ${DATADIR}
  EC=${?}
  echo "  NO DATADIR (${DATADIR}) found. Created one (EC=${EC})."|tee -a ${LOG}
  if [ ${EC} -ne 0 ]; then
    echo "  ERROR (EC <> 0). Exiting ..."|tee -a ${LOG}
    exit 4
  fi
fi

# Creating backup of index(INDEXFILE)file
cp ${INDEXFILE} ${INDEXFILE}_${DATI}

# Creating HEAD
echo "<!DOCTYPE HTML> " > ${INDEXFILE}
echo "<HTML> " >> ${INDEXFILE}
echo "  <HEAD> " >> ${INDEXFILE}
echo "  <META NAME='generator' content='Agrarix.IT:${PGM} v${VER}' /> " >> ${INDEXFILE}
echo "  <META NAME='up-date' content='${UP_DATE}' /> " >> ${INDEXFILE}
if [ -f ${HEADFILE} ]; then
  cat ${HEADFILE} >> ${INDEXFILE}
fi
echo "  </HEAD> " >> ${INDEXFILE}
echo "<BODY aLink=red link=red vLink=red>" >> ${INDEXFILE}

# 1st TABLE
echo "<TABLE class='table2-class' border=${BORDER1} width='100%' id='table1' cellpadding='0' cellspacing='0'> " >> ${INDEXFILE}

# 1st (menu)row
if [ -f ${MENUFILE} ]; then
  echo "  Reading MENUFILE ..."|tee -a ${LOG}
  cat ${MENUFILE} >> ${INDEXFILE}
fi  # MENUFILE

# 2nd (menu)row
cat << EOT >> ${INDEXFILE}

  <tr>
    <td>
      <table class='table3-class' border=${BORDER3} width='100%' id='table3' cellspacing='0'>
        <tr>
          <td width='95%'>
            <table class='table4-class' border=${BORDER4} width='100%' id='table4' cellspacing='0'>

              <tr>
                <td bgcolor=${LINK_BGCOLOR} width="${COL1WIDTH}" >
                  <img src="${LINK_PICTURE}" alt="${LINK_PICTURE}" align="bottom" height="${LINK_HEIGHT}"> 
                  <font size='5' color=${BGCOLOR} face='Arial'> 
                    ${LINK_TEXT1}
                  </font>
                </td>
                <td bgcolor=${LINK_BGCOLOR} align='left'>
                  <font size='5' color=${BGCOLOR} face='Arial'> 
                    ${LINK_TEXT2}
                  </font>
                </td>
             </tr>

EOT

# If USE_LD (Use LinksDIR in stead of LinksFile, create a TMP LINKSFILE
if [ ${USE_LD} ]; then
#  ls -d ${LINKSDIR}/* |egrep -v '.jpg|index|res|slides|thumbs'|cut -d'/' -f8- | while read LINE
  ls -dF ${LINKSDIR}/* |cut -d'/' -f8- |egrep -v 'res|slides|thumbs'|grep '/'| while read LINE
  do
    echo "${LINE};//${WWWURL}/${LINE};${LINE}"|tee -a ${TMP}.ld
  done  # read LINE
  LINKSFILE="${TMP}.ld"
fi  # USE_LD

ROWCNT=0
cat ${LINKSFILE}|grep -v ^#|sort|while read LINE
do

ROWCNT=`expr ${ROWCNT} + 1`
#echo  "${LINE}"
SUBJECT=`echo "${LINE}" |awk -F\; '{print $1}'`
URL=`echo "${LINE}" |awk -F\; '{print $2}'`
DESCRIPTION=`echo "${LINE}" |awk -F\; '{print $3}'`

echo "${SUBJECT}=${URL}=${DESCRIPTION}"

if [ "${SUBJECT}" != "" ]; then

if [ $((ROWCNT%2)) -eq 0 ]; then
# Even
  BGCOLOR2="white"
else
# Odd
  BGCOLOR2="#F0F0F0"
fi


echo "              <tr>" >> ${INDEXFILE}
echo "                <td bgcolor=${BGCOLOR2}>" >> ${INDEXFILE}
echo "                  <font size='5' color=black face='Arial'> " >> ${INDEXFILE}
if [ "${URL}" != "" ]; then
  echo "                    <a href='${URL}' target="_blank">${SUBJECT} </a>" >> ${INDEXFILE}
# Check if no ^(, then not in YouTubeList
  ANSW=`echo "${SUBJECT}"|grep ^"("`
  if [ "${ANSW}" = "" ]; then
    echo "${URL}"|grep 'youtube.com'|grep 'watch'|cut -d\= -f2|cut -d\? -f1 >> ${TMP}
    echo "${URL}"|grep 'youtu.be'|cut -d\/ -f4|cut -d\? -f1 >> ${TMP}
  fi  
else
  echo "                    ${SUBJECT}" >> ${INDEXFILE}
  DESCRIPTION="NO link yet. If you know one, please <a href="mailto:${CONFIG}@agrarix.nl?subject=${CONFIG}-links">contact.</a>"
fi  # URL

echo "                  </font>" >> ${INDEXFILE}
echo "                </td>" >> ${INDEXFILE}
echo "                <td bgcolor=${BGCOLOR2}>" >> ${INDEXFILE}
echo "                  <font size='3' color=black face='Arial'> ${DESCRIPTION} " >> ${INDEXFILE}
echo "                  </font>" >> ${INDEXFILE}
echo "                </td>" >> ${INDEXFILE}
echo "              </tr>" >> ${INDEXFILE}

fi  # [ .. != "" ]

done  # while read LINE

# if --youtubelist
if [ ${YTL} ]; then
  echo "  YouTubeList:"
  cat ${TMP}|while read ID REST
  do
    echo "  ID=${ID}" 
    if [ "${IDS}" = "" ]; then
      IDS="${ID}"
    else
      IDS="${IDS},${ID}"
    fi
#    echo "https://www.youtube.com/watch_videos?video_ids=${ID_URL}" > ${INDEXFILE}.loop
    echo "${IDS}" > ${TMP}.ids
  done  # cat

URL="https://www.youtube.com/watch_videos?video_ids=`cat ${TMP}.ids` " >> ${INDEXFILE}
BGCOLOR2="lightgrey"
echo "              <tr>" >> ${INDEXFILE}
echo "                <td bgcolor=${BGCOLOR2}>" >> ${INDEXFILE}
echo "                  <font size='5' color=black face='Arial'> " >> ${INDEXFILE}
echo "                    <a href='${URL}' target="_blank">YouTube playlist, without ( </a>" >> ${INDEXFILE}

echo "                  </font>" >> ${INDEXFILE}
echo "                </td>" >> ${INDEXFILE}
echo "                <td bgcolor=${BGCOLOR2}>" >> ${INDEXFILE}
echo "                  <font size='3' color=black face='Arial'> One playlist of all YouTube videos above. NOT a loop (it stops at the end)" >> ${INDEXFILE}
echo "                  </font>" >> ${INDEXFILE}
echo "                </td>" >> ${INDEXFILE}
echo "              </tr>" >> ${INDEXFILE}


  rm ${TMP}.ids
fi  # YTL

echo "            </table>" >> ${INDEXFILE}
echo "          </td>" >> ${INDEXFILE}

echo "          <td bgcolor=white>" >> ${INDEXFILE}
if [ "${R_PICTURE}" != "" ]; then
echo "            <img src=\"${R_PICTURE}\" align=\"bottom\" height=\"${R_PIC_HEIGHT}>\" " >>  ${INDEXFILE}

fi
echo "          </td>" >> ${INDEXFILE}

echo "        </tr>" >> ${INDEXFILE}
echo "      </table>" >> ${INDEXFILE}
echo "    </td>" >> ${INDEXFILE}
echo "  </tr>" >> ${INDEXFILE}


# Last row
cat << EOT >> ${INDEXFILE}

  <tr>
    <td bgcolor=${BGCOLOR} align='center'>
      <a href='//agrarix.it' target="_blank">
        <font size='1' color=${COLOR} face='Arial'> 
Proudly presented by Agrarix IT
        </font>
      </a>
    </td>
  </tr>

EOT

# End of 1st table
echo "</TABLE>" >> ${INDEXFILE}
# table1
echo "</HTML>" >> ${INDEXFILE}

rm ${TMP} ${TMP}.ld
exit 0

