#!/bin/bash
###############################################################################
# Pintor de imágenes de satélite en base a los datos de EumetCast.
#
# Marcos Molina Cano - 10/04/2017
###############################################################################

# Definición de ficheros y directorios útiles.
DATA_DIR="/home/sat/from_msg/received"
DEST_DIR_ROOT="/home/sat/images"

if test ! -d ${DEST_DIR_ROOT} ; then
  mkdir ${DEST_DIR_ROOT}
fi
cd ${DEST_DIR_ROOT}/share
# Definción de fecha a usar.
unix_time=`date +%s`
resto=0
let resto=unix_time%900
let unix_time=unix_time-${resto}-900-900
YEAR=`date -u +%Y --date="@${unix_time}"`
MONTH=`date -u +%m --date="@${unix_time}"`
DAY=`date -u +%d --date="@${unix_time}"`
HOUR=`date -u +%H --date="@${unix_time}"`
MINUTES=`date -u +%M --date="@${unix_time}"`
DATE=`date -u +%y-%m-%d --date="@${unix_time}"`
DATE_NAME_FILE=`date -u +%y%m%d --date="@${unix_time}"`
TIME=`date -u +%H:%M --date="@${unix_time}"`
TIME_NAME_FILE=`date -u +%H%M --date="@${unix_time}"`
FECHA=`date -u +%Y%m%d_%H%M --date="@${unix_time}"`

# Definición del fichero de bloqueo y comprobación por si ya está funcionando.
lock_file="/home/sat/sat_painter_${FECHA}.lock"
if test -e ${lock_file} ; then
  echo "Archivo de bloqueo existente. Saliendo..."
  exit
else
  touch ${lock_file}
fi

# Definición de satélites, canales y segmentos por canal.
SAT=("MSG3") # "GOES13" "GOES15")
CHAN_MSG3=("VIS006" "VIS008" "IR_016" "IR_039" "WV_062" "WV_073" \
           "IR_087" "IR_097" "IR_108" "IR_120" "IR_134" "HRV")
PROJ=("normal" "mercator" "plate_carree" "polar_n") # "polar_s")
PROJ_TAG=("" "mc_" "pc_" "pn_") # "ps_")

# Para pintar imágenes al estilo Sat24.
for ((i=0; i<${#SAT[@]}; i++)) ; do
  for ((k=0; k<${#PROJ[@]}; k++)) ; do

    DEST_DIR="${DEST_DIR_ROOT}/${SAT[${i}]}/SAT24"
    if test ! -d ${DEST_DIR} ; then
      mkdir -p ${DEST_DIR}
    fi
    SRC_DIR="${DATA_DIR}/${FECHA}"
    name_file="H${SAT[${i}]}_SAT24Hc_${PROJ_TAG[${k}]}${DATE_NAME_FILE}_${TIME_NAME_FILE}.jpg"
    if test -s ${DEST_DIR}/${name_file} ; then
      continue
    elif test -e ${DEST_DIR}/${name_file}.tmp ; then
      /usr/local/bin/xrit2pic -nogui -jpg -src ${SRC_DIR} -dest ${DEST_DIR} \
        -date ${DATE} -time ${TIME} \
        -proj ${PROJ[${k}]} -f -ol b -lonlat -sat MSG3 \
        -compose -r [HRV,,0,310,1.] -g [HRV,,0,310,1.] -b [VIS006,,0,400,1.] -hrvlum -europe \
        -o ${name_file}.tmp -add_text @tiempo.com \
      && mv ${DEST_DIR}/${name_file}.tmp ${DEST_DIR}/${name_file}
    else
      /usr/local/bin/xrit2pic -nogui -jpg -src ${SRC_DIR} -dest ${DEST_DIR} \
        -date ${DATE} -time ${TIME} \
        -proj ${PROJ[${k}]} -f -ol b -lonlat -sat MSG3 \
        -compose -r [HRV,,0,310,1.] -g [HRV,,0,310,1.] -b [VIS006,,0,400,1.] -hrvlum -europe \
        -o ${name_file}.tmp -add_text @tiempo.com \
      && mv ${DEST_DIR}/${name_file}.tmp ${DEST_DIR}/${name_file}
    fi
  done
done

# Para pintar todos los canales del satélite.
for ((i=0; i<${#SAT[@]}; i++)) ; do
  for ((j=0; j<${#CHAN_MSG3[@]}; j++)) ; do
    for ((k=0; k<${#PROJ[@]}; k++)) ; do
      DEST_DIR="${DEST_DIR_ROOT}/${SAT[${i}]}/${CHAN_MSG3[${j}]}"
      if test ! -d ${DEST_DIR} ; then
        mkdir -p ${DEST_DIR}
      fi
      SRC_DIR="${DATA_DIR}/${FECHA}"
      name_file="H${SAT[${i}]}_${CHAN_MSG3[${j}]}_${PROJ_TAG[${k}]}${DATE_NAME_FILE}_${TIME_NAME_FILE}.jpg"
      if test -s ${DEST_DIR}/${name_file} ; then
        continue
      elif test -e ${DEST_DIR}/${name_file}.tmp ; then
        /usr/local/bin/xrit2pic -nogui -jpg -src ${SRC_DIR} -dest ${DEST_DIR} \
          -date ${DATE} -time ${TIME} \
          -proj ${PROJ[${k}]} -f -ol b -lonlat -sat MSG3 -chan ${CHAN_MSG3[${j}]} -europe \
          -o ${name_file}.tmp -add_text @tiempo.com \
        && mv ${DEST_DIR}/${name_file}.tmp ${DEST_DIR}/${name_file}
      else
        /usr/local/bin/xrit2pic -nogui -jpg -src ${SRC_DIR} -dest ${DEST_DIR} \
          -date ${DATE} -time ${TIME} \
          -proj ${PROJ[${k}]} -f -ol b -lonlat -sat MSG3 -chan ${CHAN_MSG3[${j}]} -europe \
          -o ${name_file}.tmp -add_text @tiempo.com \
        && mv ${DEST_DIR}/${name_file}.tmp ${DEST_DIR}/${name_file}
      fi
    done
  done
done

for TYPE in VIS006 VIS008 IR_016 IR_039 WV_062 WV_073 IR_087 IR_097 IR_108 IR_120 IR_134 HRV SAT24 ; do
  TMP_DIR="${DEST_DIR_ROOT}/MSG3/${TYPE}"
  for n in `ls ${TMP_DIR}` ; do
    fecha_creacion=`stat -c %Y ${TMP_DIR}/${n}`
    fecha_tope=`date -u +%s --date="28 hours ago"`
    if test ${fecha_creacion} -lt ${fecha_tope} ; then
      rm -r ${TMP_DIR}/${n}
    fi
  done
done

# Se borra el fichero de bloqueo.
rm ${lock_file}
