#!/usr/bin/env bash
# Copyright Ken Fallon - Released into the public domain. http://creativecommons.org/publicdomain/ 
#============================================================
PATH=$PATH:/home/ken/sourcecode/hpr/hpr_hub/bin/
source /home/ken/tmp/pip3.9/bin/activate

TEMP_DIR="/var/tmp/"
CHANNELS="1"
FIXAUDIO="1"
ARTIST="EMPTY"
TITLE="EMPTY"
YEAR="EMPTY"
SLOT="EMPTY"
basedir="/var/IA"
upload_dir="${basedir}/uploads"
theme="${basedir}/theme.wav"
outro="${basedir}/2022-03-07-outro.wav"
ttsserver="http://localhost:5500"
processing_dir="/home/ken/tmp/hpr/processing"
git_image_dir="/home/ken/sourcecode/hpr/HPR_Public_Code/www/images/hosts"
acceptable_duration_difference="2" # Seconds
thedate=$(/usr/bin/date -u +%Y-%m-%d_%H-%M-%SZ_%A)
echo "Processing the next HPR Show in the queue"


if [ $( curl -s -o /dev/null -w "%{http_code}" -X 'GET' "${ttsserver}/api/voices" -H 'accept: */*' ) != "200" ]
then
  echo "Please start the tts-server \"podman run -it -p 5500:5500 synesthesiam/opentts:en\""
  exit
fi

function abs_diff {
  echo $(($1 >= $2 ? $1 - $2 : $2 - $1))
}

function create_tts_summary {
  HPR_summary="$( cat "hpr${ep_num}_summary.txt" )"
  echo "INFO: Converting text \"${HPR_summary}\" to speech."
  curl -X 'GET' -G --data-urlencode "voice=coqui-tts:en_ljspeech" --data-urlencode "text=${HPR_summary}" --data-urlencode "vocoder=high" --data-urlencode "denoiserStrength=0.03" --data-urlencode "cache=false" ${ttsserver}/api/tts -H 'accept: */*' --output ~hpr${ep_num}_summary.wav
}

###################
# Locate media directory
#
# 
show_type=""
if [[ -f "${1}" && -n "${2}" ]]
then
  echo "DEBUG: Show type is local" 1>&2
  show_type="local"
  mediafile="${1}"
  media_dir="$( dirname "${mediafile}" )"
  ep_num="${2}"
  echo "The duration is \"$( \date -ud "1970-01-01 $( ffprobe -i "${mediafile}" 2>&1| awk -F ': |, ' '/Duration:/ { print $2 }' )" +%s )\"."
else
  echo "DEBUG: Show type is remote" 1>&2
  show_type="remote"
  response=$( curl --silent --netrc-file ${HOME}/.netrc "https://hub.hackerpublicradio.org/cms/status.php" | \
  grep 'SHOW_POSTED' | \
  head -1 | \
  sed 's/,/ /g' )

  echo "DEBUG: Getting server response" 1>&2
  if [ -z "${response}" ]
  then
    echo "INFO: There appear to be no more shows with the status \"SHOW_POSTED\"."
    echo "Getting a list of all the reservations."
    curl --silent --netrc-file ${HOME}/.netrc "https://hub.hackerpublicradio.org/cms/status.php"
    exit 3
  fi

  timestamp_epoc="$( echo ${response} | awk '{print $1}' )"
  ep_num="$( echo ${response} | awk '{print $2}' )"
  ep_date="$( echo ${response} | awk '{print $3}' )"
  key="$( echo ${response} | awk '{print $4}' )"
  status="$( echo ${response} | awk '{print $5}' )"
  email="$( echo ${response} | awk '{print $6}' )"

  #source_dir="hpr:/home/hpr/upload/${timestamp_epoc}_${ep_num}_${ep_date}_${key}"
  dest_dir="${timestamp_epoc}_${ep_num}_${ep_date}_${key}"
  media_dir="${processing_dir}/${timestamp_epoc}_${ep_num}_${ep_date}_${key}"
fi

echo "DEBUG: Checking variables" 1>&2
if [ -z "${show_type}" ]
then
  echo "sorry, variable \"show_type\" is not set."
  exit
fi

if [ -z "${media_dir}" ]
then
  echo "sorry, variable \"media_dir\" is not set."
  exit
fi

if [ ! -d "${media_dir}" ]
then
  echo "sorry, directory \"media_dir: ${media_dir}\" does not exist"
  exit 1
fi

echo detox -v "${media_dir}/"
detox -vr "${media_dir}/"

if [[ "$( find "${media_dir}" \( -iname "hpr${ep_num}.wav" -o -iname "hpr${ep_num}.mp3" -o -iname "hpr${ep_num}.ogg" -o -iname "hpr${ep_num}.spx" -o -iname "hpr${ep_num}_summary.txt" -o -iname "hpr${ep_num}_summary.wav" -o -iname "hpr${ep_num}.wav" -o -iname "*_mez.wav" -o -iname "*_sox_norm.wav" -o -iname "*_mezzanine.wav" -o -iname "*_tmp.pcm" -o -iname "hpr${ep_num}_intro.wav" -o -iname "~hpr${ep_num}_summary.wav" -o -iname "~~hpr${ep_num}_summary.wav" -o -iname "*_tmp.log" -o -iname "silence.wav" -o -iname "hpr${ep_num}_norm.wav" \) | wc -l )" -ne 0 ]] 
then
  echo "Files for this episode already exist."
  find "${media_dir}" \( -iname "hpr${ep_num}.wav" -o -iname "hpr${ep_num}.mp3" -o -iname "hpr${ep_num}.ogg" -o -iname "hpr${ep_num}.spx" -o -iname "hpr${ep_num}_summary.txt" -o -iname "hpr${ep_num}_summary.wav" -o -iname "hpr${ep_num}.wav" -o -iname "*_mez.wav" -o -iname "*_sox_norm.wav" -o -iname "*_mezzanine.wav" -o -iname "*_tmp.pcm" -o -iname "hpr${ep_num}_intro.wav" -o -iname "~hpr${ep_num}_summary.wav" -o -iname "~~hpr${ep_num}_summary.wav" -o -iname "*_tmp.log" -o -iname "silence.wav" -o -iname "hpr${ep_num}_norm.wav" \)
  read -p "Shall I remove them ? (N|y) ? " -n 1 -r
  echo    # (optional) move to a new line
  if [[ ! $REPLY =~ ^[yY]$ ]]
  then
    echo "skipping...."
    exit
  else
    echo "Removing old files ...."
    find "${media_dir}" \( -iname "hpr${ep_num}.wav" -o -iname "hpr${ep_num}.mp3" -o -iname "hpr${ep_num}.ogg" -o -iname "hpr${ep_num}.spx" -o -iname "hpr${ep_num}_summary.txt" -o -iname "hpr${ep_num}_summary.wav" -o -iname "hpr${ep_num}.wav" -o -iname "*_mez.wav" -o -iname "*_sox_norm.wav" -o -iname "*_mezzanine.wav" -o -iname "*_tmp.pcm" -o -iname "hpr${ep_num}_intro.wav" -o -iname "~hpr${ep_num}_summary.wav" -o -iname "~~hpr${ep_num}_summary.wav" -o -iname "*_tmp.log" -o -iname "silence.wav" -o -iname "hpr${ep_num}_norm.wav" \) -delete -print
  fi
fi


#####################################################
# Process media

media=$( find "${media_dir}" -type f -exec file {} \; | grep -Ei 'audio|mpeg|video|MP4' | awk -F ': ' '{print $1}' )
if [ -z "${media}" ]
then
  echo "ERROR: Can't find any media in \"${media_dir}/\""
  find "${media_dir}/" -type f
  exit 1
fi

mediafile=""

echo "Found more than one media file. Please select which one to use ?"
if [ "$( echo "${media}" | wc -l )" -ne 1 ]
then
  select this_media in $( echo "${media}" )
  do 
    echo "INFO: You selected \"${this_media}\"."
    ls -al "${this_media}"
    mediafile="${this_media}"
    break
  done
else
  echo "INFO: Selecting media as \"${media}\"."
  mediafile="${media}"
fi

# extract file name and extension
fname="$( basename "${mediafile%.*}" )"
ext="${mediafile/*./}"

cd "${media_dir}/"
pwd

echo "INFO: Processing hpr${ep_num} from ${email}"
echo "INFO: Working directory is \"${media_dir}/\""
echo ""


if [ -z "${mediafile}" ]
then
  echo "sorry, variable \"mediafile\" is not set."
  exit
fi

if [ -z "${fname}" ]
then
  echo "sorry, variable \"fname\" is not set."
  exit
fi

if [ -z "${ext}" ]
then
  echo "sorry, variable \"ext\" is not set."
  exit
fi

if [ ! -f "${mediafile}" ]
then
  echo "sorry, media file \"${mediafile}\" does not exist"
  exit
fi

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "File information for \"${mediafile}\"" | tee -a ${fname}_tmp.log
ffprobe ${mediafile} 2>&1 | grep Audio:
mediainfo ${mediafile}
audio2image.bash ${mediafile}
xdg-open ${mediafile%.*}.png >/dev/null 2>&1 &
unset REPLY
until [[ $REPLY =~ ^[yYnN]$ ]]
do
  read -p "Source Waveform look ok ? (N|y) ? " -n 1 -r
  echo ""
done

if [[ ! $REPLY =~ ^[yY]$ ]]
then
  echo "skipping.... $REPLY"
  exit
fi


re='^[0-9]+$'
if ! [[ $ep_num =~ $re ]] 
then
   echo "error: episode \"${ep_num}\" is not a number"
   exit 1
fi

if [ ! -f "${outro}" ]
then
  echo "sorry, file \"${outro}\" does not exist"
  exit 1
fi

if [ ! -f "${theme}" ]
then
  echo "sorry, file \"${theme}\" does not exist"
  exit 1
fi

if [ ! -r "${mediafile}" ]
then
  echo "sorry, media file \"${mediafile}\" is not readable"
  exit
fi

if [ $(ffprobe "${mediafile}" 2>&1 | grep "Audio:" | wc -l ) -eq 0 ]
then
  echo "sorry, media file \"${mediafile}\" has no audio track"
  exit
fi

xdg-open "https://hackerpublicradio.org/eps/hpr${ep_num}/index.html" >/dev/null 2>&1 &

mpv -vo=null "${mediafile}"

unset REPLY
until [[ $REPLY =~ ^[yYnN]$ ]]
do
  read -p "Is the audio ok (n|Y) ? " -n 1 -r 
  echo ""
done

if [[ ! $REPLY =~ ^[yY]$ ]]
then
  echo "skipping.... $REPLY"
  exit
fi

echo "--------------------------------------------------------------------------------"
echo "Geting metadata for hpr${ep_num}"

while read -r line
do
  field=$(echo $line | awk -F ':' '{print $1}')
  case $field in
  "HPR_summary")
      HPR_summary=$(echo $line | grep "HPR_summary: " | cut -c 14- )
      continue
      ;;
  "HPR_album")
     HPR_album=$(echo $line | grep "HPR_album: " | cut -c 12- )
      continue
      ;;
  "HPR_artist")
    HPR_artist=$(echo $line | grep "HPR_artist: "  | cut -c 13- )
      continue
      ;;
  "HPR_comment")
    HPR_comment=$(echo $line | grep "HPR_comment: " | cut -c 14- )
      continue
      ;;
  "HPR_genre")
    HPR_genre=$(echo $line | grep "HPR_genre: " | cut -c 12- )
      continue
      ;;
  "HPR_title")
    HPR_title=$(echo $line | grep "HPR_title: " | cut -c 12- )
      continue
      ;;
  "HPR_track")
    HPR_track=$(echo $line | grep "HPR_track: " | cut -c 12- )
      continue
      ;;
  "HPR_year")
    HPR_year=$(echo $line | grep "HPR_year: " | cut -c 11- )
      continue
      ;;
  "HPR_duration")
    HPR_duration=$(echo $line | grep "HPR_duration: " | cut -c 15- )
      continue
      ;;
  "HPR_explicit")
    HPR_explicit=$(echo $line | grep "HPR_explicit: " | cut -c 15- )
      continue
      ;;
  "HPR_license")
    HPR_license=$(echo $line | grep "HPR_license: " | cut -c 14- )
      continue
      ;;
  esac
done < <( curl --silent --netrc-file ${HOME}/.netrc "https://hub.hackerpublicradio.org/cms/say.php?id=${ep_num}" )

if [[ -z "$HPR_album" || -z "$HPR_artist" || -z "$HPR_comment" || -z "$HPR_genre" || -z "$HPR_title" || -z "$HPR_track" || -z "$HPR_year" || -z "$HPR_summary" || -z "$HPR_duration" || -z "$HPR_explicit" || -z "$HPR_license" ]]
then
  echo "Could not find information on ${ep_num}. Has the show been posted ?"
  exit;
fi
echo "--------------------------------------------------------------------------------"
echo "album       : $HPR_album"
echo "artist      : $HPR_artist"
echo "comment     : $HPR_comment"
echo "genre       : $HPR_genre"
echo "title       : $HPR_title"
echo "track       : $HPR_track"
echo "year        : $HPR_year"
echo "summary     : $HPR_summary"
echo "duration    : $HPR_duration"
echo "explicit    : $HPR_explicit"
echo "license     : $HPR_license"
echo "media_dir   : ${media_dir}"
echo "mediafile   : ${mediafile}"
echo "fname       : ${fname}"
echo "ext         : ${ext}"

if [[ $HPR_duration == "0" ]]
then
  echo "The duration is set to 0. Please update the show with the correct time."
  exit;
fi

#============================================================
# Preproc`s the source file

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Prepare mezzanine file" | tee -a ${fname}_tmp.log
ffmpeg -y -i ${mediafile} -ar 44100 -ac $CHANNELS ${fname}_mezzanine.wav > ${fname}_tmp.log 2>&1

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Add HPR Branding" | tee -a ${fname}_tmp.log

echo "Creating the summary" | tee -a ${fname}_tmp.log
#echo "$HPR_summary" - | text2wave -F 44100 - -o hpr${ep_num}_summary.wav #festival --tts
#echo "$HPR_summary" - | espeak -w ~hpr${ep_num}_summary.wav

echo "$HPR_summary" > "hpr${ep_num}_summary.txt"

create_tts_summary_ok="not-ok"

while [ "${create_tts_summary_ok}" != "OK" ]
do
  create_tts_summary

  xdg-open "hpr${ep_num}_summary.txt" 2>&1 &
  mpv --speed=1.8 ~hpr${ep_num}_summary.wav

  read -p "Is the text to speech correct (y|N) ? " -n 1 -r
  echo    # (optional) move to a new line
  if [[ $REPLY =~ ^[Yy]$ ]]
  then
    create_tts_summary_ok="OK"
  else
    echo "WARN: Please correct the text and try again."
    inotifywait --event modify "hpr${ep_num}_summary.txt"
  fi
done
echo "INFO: TTS complete."

ffmpeg -y -i ~hpr${ep_num}_summary.wav -ar 44100 ~~hpr${ep_num}_summary.wav >> ${fname}_tmp.log 2>&1

sox -V2 -n -r 44100 -c 1 silence.wav trim 0.0 6.0 >> ${fname}_tmp.log 2>&1

sox -V2 silence.wav ~~hpr${ep_num}_summary.wav hpr${ep_num}_summary.wav >> ${fname}_tmp.log 2>&1

echo "Adding the theme" | tee -a ${fname}_tmp.log
sox -V2 -m "hpr${ep_num}_summary.wav" "${theme}" "hpr${ep_num}_intro.wav" >> ${fname}_tmp.log 2>&1

echo "Creating the sandwitch: \"hpr${ep_num}_intro.wav\" \"${fname}_mezzanine.wav\" \"${outro}\" \"hpr${ep_num}.wav\" " | tee -a ${fname}_tmp.log

sox -V2 "hpr${ep_num}_intro.wav" "${fname}_mezzanine.wav" "${outro}" "hpr${ep_num}.wav" >> ${fname}_tmp.log 2>&1

echo "Normalizing the wav files" | tee -a ${fname}_tmp.log
#sox --temp "${TEMP_DIR}" --norm hpr${ep_num}.wav hpr${ep_num}_norm.wav
ffmpeg -y -i hpr${ep_num}.wav -af loudnorm=I=-16:LRA=11:TP=-1.5  hpr${ep_num}_norm.wav  >> ${fname}_tmp.log 2>&1

mv -v hpr${ep_num}_norm.wav ${upload_dir}/hpr${ep_num}.wav >> ${fname}_tmp.log 2>&1

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "File information" | tee -a ${fname}_tmp.log
ffprobe ${upload_dir}/hpr${ep_num}.wav 2>&1 | grep Audio:
mediainfo ${upload_dir}/hpr${ep_num}.wav
audio2image.bash ${upload_dir}/hpr${ep_num}.wav
xdg-open ${upload_dir}/hpr${ep_num}.png >/dev/null 2>&1 &
read -p "Processed Waveform look ok ? (N|y) ? " -n 1 -r
echo    # (optional) move to a new line
if [[ ! $REPLY =~ ^[yY]$ ]]
then
  echo "skipping...."
  exit
fi
rm -v ${upload_dir}/hpr${ep_num}.png


echo "--------------------------------------------------------------------------------"
echo "Geting transcript of hpr${ep_num}"

whisper --model tiny --language en --output_dir "${media_dir}" "${upload_dir}/hpr${ep_num}.wav" | tee -a ${fname}_tmp.log

ls -al "${media_dir}/hpr${ep_num}".*
xdg-open "${media_dir}/hpr${ep_num}".txt 2>&1 &
echo mpv --no-audio-display --audio-channels=stereo --speed="3.5" "${media_dir}/hpr${ep_num}".txt
unset REPLY
until [[ $REPLY =~ ^[yYnN]$ ]]
do
  read -p "Processed transcript look ok ? (N|y) ? " -n 1 -r
  echo ""
done

if [[ ! $REPLY =~ ^[yY]$ ]]
then
  echo "skipping.... $REPLY"
  exit
fi

mkdir "${upload_dir}/hpr${ep_num}" >/dev/null 2>&1

cp -v "${media_dir}/hpr${ep_num}".vtt "${upload_dir}/hpr${ep_num}/hpr${ep_num}.vtt" | tee -a ${fname}_tmp.log
cp -v "${media_dir}/hpr${ep_num}".srt "${upload_dir}/hpr${ep_num}/hpr${ep_num}.srt" | tee -a ${fname}_tmp.log
cp -v "${media_dir}/hpr${ep_num}".txt "${upload_dir}/hpr${ep_num}/hpr${ep_num}.txt" | tee -a ${fname}_tmp.log
cp -v "${media_dir}/hpr${ep_num}".tsv "${upload_dir}/hpr${ep_num}/hpr${ep_num}.tsv" | tee -a ${fname}_tmp.log
cp -v "${media_dir}/hpr${ep_num}".json "${upload_dir}/hpr${ep_num}/hpr${ep_num}.json" | tee -a ${fname}_tmp.log

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Convert to opus" | tee -a ${fname}_tmp.log
ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav ${upload_dir}/hpr${ep_num}.opus 2>> ${fname}_tmp.log 1>&2

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Convert to flac" | tee -a ${fname}_tmp.log
ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav ${upload_dir}/hpr${ep_num}.flac 2>> ${fname}_tmp.log 1>&2

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Convert to mp3" | tee -a ${fname}_tmp.log
ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav ${upload_dir}/hpr${ep_num}.mp3 2>> ${fname}_tmp.log 1>&2

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Convert to ogg" | tee -a ${fname}_tmp.log
#ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav ${upload_dir}/hpr${ep_num}.ogg 2>> ${fname}_tmp.log 1>&2
ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav -acodec libopus -f ogg ${upload_dir}/hpr${ep_num}.ogg 2>> ${fname}_tmp.log 1>&2

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Convert to spx" | tee -a ${fname}_tmp.log
ffmpeg -y -i ${upload_dir}/hpr${ep_num}.wav ${upload_dir}/hpr${ep_num}.spx 2>> ${fname}_tmp.log 1>&2

### End conversion

intro_duration="$( mediainfo --Output=XML --Full "hpr${ep_num}_intro.wav" | xmlstarlet sel -T -t -m '/_:MediaInfo/_:media/_:track[@type="Audio"]' -v '_:Duration' -n | awk -F '.' '{print $1}' )"
outro_duration="$( mediainfo --Output=XML --Full "${outro}" | xmlstarlet sel -T -t -m '/_:MediaInfo/_:media/_:track[@type="Audio"]' -v '_:Duration' -n | awk -F '.' '{print $1}' )"
source_duration="$( mediainfo --Output=XML --Full "${mediafile}" | xmlstarlet sel -T -t -m '/_:MediaInfo/_:media/_:track[@type="Audio"]' -v '_:Duration' -n | awk -F '.' '{print $1}' )"
expected_duration=$(( ${intro_duration} + ${HPR_duration} + ${outro_duration} ))

echo "Intro(${intro_duration}) + Show(${HPR_duration}) + Outro(${outro_duration}) = ${expected_duration}"

media_error="0"

for check_file in \
${upload_dir}/hpr${ep_num}.wav \
${upload_dir}/hpr${ep_num}.opus \
${upload_dir}/hpr${ep_num}.flac \
${upload_dir}/hpr${ep_num}.mp3 \
${upload_dir}/hpr${ep_num}.spx \
${upload_dir}/hpr${ep_num}.ogg
do
  # ${upload_dir}/hpr${ep_num}.spx
  echo "INFO: Processing the file \"${check_file}\""
  if [[ ! -s "${check_file}" ]]
  then
    echo "ERROR: Something went wrong encoding of the file \"${check_file}\""
    exit
  else
    mediainfo --Output=XML --Full "${check_file}" | xmlstarlet sel -T -t -m '/_:MediaInfo/_:media/_:track[@type="Audio"]' -v '_:Duration' -n | awk -F '.' '{print $1}'
    this_duration=$( mediainfo --Output=XML --Full "${check_file}" | xmlstarlet sel -T -t -m '/_:MediaInfo/_:media/_:track[@type="Audio"]' -v '_:Duration' -n | awk -F '.' '{print $1}' )
    if [[ $(abs_diff "${this_duration}" "${expected_duration}" ) -le "${acceptable_duration_difference}" ]]
    then
      echo "INFO: The file \"${check_file}\" duration of ${this_duration} () is close enough to ${expected_duration}"
    else
      echo "ERROR: The file \"${check_file}\" actual duration of ${this_duration} is not close enough to posted duration of ${expected_duration}."
      echo "       Fix or update the posted duration to ${source_duration}."
      media_error="1"
    fi
    #${expected_duration}
  fi
done
echo "Source: ${source_duration}"

if [[ "${media_error}" -eq "1" ]]
then
  echo "ERROR: Media is not encoded correctly"
  exit
else
  echo "INFO: Media duration is correct"
fi


if [[ ! -s ${upload_dir}/hpr${ep_num}.wav ]] || [[ ! -s ${upload_dir}/hpr${ep_num}.opus ]] || [[ ! -s ${upload_dir}/hpr${ep_num}.flac ]] || [[ ! -s ${upload_dir}/hpr${ep_num}.mp3 ]] || [[ ! -s ${upload_dir}/hpr${ep_num}.ogg ]] || [[ ! -s ${upload_dir}/hpr${ep_num}.spx ]] 
then
  echo "ERROR: Something went wrong encoding the files"
  exit 1
fi


echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Fixing Tags" | tee -a ${fname}_tmp.log

fix_tags -album="$HPR_album" -artist="$HPR_artist" -comment="${HPR_comment} The license is ${HPR_license}" -genre="$HPR_genre" -title="$HPR_title" -track="$HPR_track" -year="$HPR_year" ${upload_dir}/hpr${ep_num}* 2>> ${fname}_tmp.log 1>&2

fix_tags ${upload_dir}/hpr${ep_num}*

#echo "Changing the file dates to the time of upload"
touch -r ${mediafile} hpr${ep_num}*
touch -r ${mediafile} ${upload_dir}/hpr${ep_num}*

ls -al hpr${ep_num}* ${upload_dir}/hpr${ep_num}* | tee -a ${fname}_tmp.log

# # echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
# # echo "Getting info for the asset table" | tee -a ${fname}_tmp.log
# # 
# # echo "INSERT INTO assets (episode_id,filename,extension,size,sha1sum,mime_type,file_type) VALUES"
# # 
# # for asset_file in \
# # ${upload_dir}/hpr${ep_num}.wav \
# # ${upload_dir}/hpr${ep_num}.opus \
# # ${upload_dir}/hpr${ep_num}.flac \
# # ${upload_dir}/hpr${ep_num}.mp3 \
# # ${upload_dir}/hpr${ep_num}.spx \
# # ${upload_dir}/hpr${ep_num}.ogg
# # do
# #   size="$( ls -al "${asset_file}" | awk '{print $5}' )"
# #   sha1sum="$( sha1sum "${asset_file}" | awk '{print $1}' )"
# #   mime_type=$( file --dereference --brief --mime "${asset_file}" )
# #   file_type=$( file --dereference --brief "${asset_file}" )
# #   echo "(${ep_num},'${filename}','${extension}','${size}','${sha1sum}','${mime_type}','${file_type}'),"
# # done

echo "--------------------------------------------------------------------------------" | tee -a ${fname}_tmp.log
echo "Transferring files to Servers" | tee -a ${fname}_tmp.log


#rsync -ave ssh --partial --progress --ignore-existing ${upload_dir}/hpr${ep_num}.mp3 ${upload_dir}/hpr${ep_num}.ogg ${upload_dir}/hpr${ep_num}.spx hpr:www/eps/

#firefox "https://hackerpublicradio.org/local/hpr${ep_num}.mp3" >/dev/null 2>&1 &
#firefox "https://hackerpublicradio.org/local/hpr${ep_num}.ogg" >/dev/null 2>&1 &
firefox "file://${upload_dir}/hpr${ep_num}.mp3" >/dev/null 2>&1 &
firefox "file://${upload_dir}/hpr${ep_num}.ogg" >/dev/null 2>&1 &
#firefox "https://hackerpublicradio.org/eps.php?id=${ep_num}" >/dev/null 2>&1 &

#mpv "http://hackerpublicradio.org/local/hpr${ep_num}.spx" "http://hackerpublicradio.org/local/hpr${ep_num}.ogg" "http://hackerpublicradio.org/local/hpr${ep_num}.mp3" "file://${upload_dir}/hpr${ep_num}.spx" "file://${upload_dir}/hpr${ep_num}.opus" "file://${upload_dir}/hpr${ep_num}.ogg" "file://${upload_dir}/hpr${ep_num}.mp3" "file://${upload_dir}/hpr${ep_num}.flac"
mpv "file://${upload_dir}/hpr${ep_num}.spx" "file://${upload_dir}/hpr${ep_num}.opus" "file://${upload_dir}/hpr${ep_num}.ogg" "file://${upload_dir}/hpr${ep_num}.mp3" "file://${upload_dir}/hpr${ep_num}.flac"

read -p "Remove files for \"${fname}\" (y|N) ? " -n 1 -r
echo    # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
  mediafilename=$(basename "${mediafile}")
  mediaextension="${mediafilename##*.}"                                             # "
#   ssh hpr -t "mkdir /home/hpr/www/eps/hpr${ep_num}" >/dev/null 2>&1
#   rsync -ave ssh --partial --progress --ignore-existing "${mediafile}" hpr:www/eps/hpr${ep_num}/hpr${ep_num}_source.${mediaextension} | tee -a ${fname}_tmp.log
#   
#   rsync -ave ssh --partial --progress --ignore-existing "${media_dir}/hpr${ep_num}.wav".vtt hpr:www/eps/hpr${ep_num}/hpr${ep_num}.vtt | tee -a ${fname}_tmp.log
#   rsync -ave ssh --partial --progress --ignore-existing "${media_dir}/hpr${ep_num}.wav".srt hpr:www/eps/hpr${ep_num}/hpr${ep_num}.srt | tee -a ${fname}_tmp.log
#   rsync -ave ssh --partial --progress --ignore-existing "${media_dir}/hpr${ep_num}.wav".txt hpr:www/eps/hpr${ep_num}/hpr${ep_num}.txt | tee -a ${fname}_tmp.log
#   
#   ssh hpr -t "ls -al /home/hpr/www/eps/hpr${ep_num}*" 
#   cp -v "${mediafile}" "${upload_dir}/hpr${ep_num}_source.${mediaextension}"

  #echo "Remove temp files"
  rm -v ~hpr${ep_num}_summary.wav ~~hpr${ep_num}_summary.wav silence.wav 
  rm -v ${fname}_mezzanine.wav ${fname}_tmp*.pcm ${fname}_tmp.log ${fname}_mez.wav
  #mv -v ${fname}* hpr${ep_num}*  *_${ep_num}_* /var/IA/done/
  
#   wget --timeout=0 -q "http://hackerpublicradio.org/hpr_ogg_rss.php?gomax=1" -O - | xmlstarlet val --err -
#   wget --timeout=0 -q "http://hackerpublicradio.org/hpr_mp3_rss.php?gomax=1" -O - | xmlstarlet val --err -
#   wget --timeout=0 -q "http://hackerpublicradio.org/hpr_spx_rss.php?gomax=1" -O - | xmlstarlet val --err -
#   wget --timeout=0 -q "http://hackerpublicradio.org/rss-future.php" -O - | xmlstarlet val --err -

  echo "INFO: rsync -ave ssh --partial --progress ${upload_dir}/hpr${ep_num}* borg:/data/IA/uploads/"
  rsync -ave ssh --partial --progress ${upload_dir}/hpr${ep_num}* borg:/data/IA/uploads/
  echo "$( ssh borg -t "ls -al /data/IA/uploads/hpr${ep_num}*" ; ls -al ${upload_dir}/hpr${ep_num}* )" | grep "hpr${ep_num}" | awk '{print $5, $NF}' | sort
  
  if [ ${show_type} == "remote" ]
  then
    echo "INFO: Setting the status"
    # SHOW_SUBMITTED → METADATA_PROCESSED → SHOW_POSTED → MEDIA_TRANSCODED → UPLOADED_TO_IA → UPLOADED_TO_RSYNC_NET
    curl --netrc-file ${HOME}/.netrc "https://hub.hackerpublicradio.org/cms/status.php?ep_num=${ep_num}&status=MEDIA_TRANSCODED"
    curl --silent --netrc-file ${HOME}/.netrc "https://hub.hackerpublicradio.org/cms/status.php" 
  fi
else
  echo "skipping...."
  echo "cp -v \"${mediafile}\" \"${upload_dir}/hpr${ep_num}_source.${mediaextension}\""
  echo "rm -v ${fname}_mezzanine.wav ${fname}_tmp*.pcm ${fname}_tmp.log ${fname}_mez.wav"
  #echo "mv -v ${fname}* hpr${ep_num}*  *_${ep_num}_* /var/IA/done/"
  echo "wget --timeout=0 -q \"http://hackerpublicradio.org/hpr_ogg_rss.php?gomax=1\" -O - | xmlstarlet val --err -"
  echo "wget --timeout=0 -q \"http://hackerpublicradio.org/hpr_mp3_rss.php?gomax=1\" -O - | xmlstarlet val --err -"
  echo "wget --timeout=0 -q \"http://hackerpublicradio.org/hpr_spx_rss.php?gomax=1\" -O - | xmlstarlet val --err -"
  echo "rsync -ave ssh --partial --progress ${upload_dir}/ borg:/data/IA/uploads/"
fi
