#!/bin/sh
SRC=collections/_aulas
# SCRIPT=script/
SCRIPT=/var/www/src/aliceclass/script/
# TMP=tmp
TMP=$(mktemp -d)
ASSETS="$TMP/assets"
PARAM="scale=1920:1080: force_original_aspect_ratio=decrease: eval=frame,pad=1920:1080: -1:-1:color=black"

VIDEOS_PATH=/var/www/html/aliceclass_videos


create_thumb () {
	THUMB_PATH=$1
	SRC_FILE=$2

	if test ! -f "${THUMB_PATH}" ; then
		ffmpeg -y -i "${SRC_FILE}" -vframes 1 -an -s 400x222 -ss 30 "${THUMB_PATH}"
	fi
}

create_intro_clip () {
	AUTHOR=$1
	VIDEO_TITLE=$2

	# sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/intro.svg | sed "s/curso/${VIDEO_TITLE}/g" > ${TMP}/tmp-intro.svg
	sed "s/nomenome/$AUTHOR/g; s/curso/${VIDEO_TITLE}/g" ${SCRIPT}/intro.svg > ${TMP}/tmp-intro.svg
	ffmpeg  -y -loop 1 -i ${TMP}/tmp-intro.svg -i ${SCRIPT}/intro.wav -shortest ${TMP}/tmp-intro.mkv

}

process_video () {

	# VIDEO_TITLE=$1
	# USERNAME=$2
	# SRC_FILE=$3
	# AULA=$4
	# DEST_FILE=$5

	VIDEO_TITLE=$1
	AUTHOR=$2
	SRC_FILE=$3
	AULA=$4
	DEST_FILE=$5

	# no output path
	if [ -z "$DEST_FILE" ]; then
		DEST_FILE="$ASSETS/videos/${VIDEO_TITLE}.mp4"
	fi

	THUMB_PATH="${VIDEOS_PATH}/$AUTHOR/thumbs/${VIDEO_TITLE}.jpg"
	# THUMB_PATH=$(dirname $(dirname $DEST_FILE))/thumbs/${VIDEO_TITLE}.jpg

	echo "########################################"
	echo "# Aula: ${AULA}"
	echo "# Thumb Path: $THUMB_PATH"
	echo "# Author: ${AUTHOR}"
	echo "# Input: ${SRC_FILE}"
	echo "# Src: ${SRC}"
	echo "# Dest: ${DEST_FILE}"
	echo "# Name: ${VIDEO_TITLE}"
	echo "# Script Path: ${SCRIPT}"
	echo "########################################"
	# exit


	# ####################################
	# Creating the thumbnail if does not exist
	# ####################################
	create_thumb "${THUMB_PATH}" "${SRC_FILE}"

	# ####################################
	# if output exist, continue
	# ####################################
	if test -f "$ASSETS/videos/${VIDEO_TITLE}.mp4" ; then
		continue
	fi

	# ####################################
	# Creating the intro clip
	# ####################################
	create_intro_clip "${AUTHOR}" "${VIDEO_TITLE}"

	# ###################################################
	# Audio adjustment
	# ###################################################
	# Some possible options
	# -af loudnorm 
	# -af dynaudnorm=p=1
	# -af speechnorm=e=12.5:r=0.0001:l=1 
	# -af acompressor=threshold=0.089:ratio=9:attack=200:release=1000:makeup=2 
	ffmpeg -y -i "${SRC_FILE}" -af dynaudnorm=p=1  ${TMP}/tmp-normalized.mkv

	# ####################################################
	# Wartermarking the video file
	# ####################################################
	sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/watermark.svg | sed "s/curso/${VIDEO_TITLE}/g" > ${TMP}/tmp-watermark.svg
	# add watermark to video
	ffmpeg -y -i ${TMP}/tmp-normalized.mkv -i ${TMP}/tmp-watermark.svg -i ${SCRIPT}/logo.png \
	    -filter_complex "[0][1]overlay=5:H-h-5:format=auto[bg];[bg][2]overlay=W-w-5:5:format=auto" -c:a copy ${TMP}/tmp-video.mkv

	# ####################################################
	# Concatenating videos
	# ####################################################

	echo "Concatenando videos..."			
	ffmpeg -y \
		-i ${TMP}/tmp-intro.mkv \
		-i ${TMP}/tmp-video.mkv \
		-i ${TMP}/tmp-credits.mkv \
		-filter_complex \
		"[0:v]$PARAM[v0]; [1:v]$PARAM[v1]; [2:v]$PARAM[v2]; [v0][0:a][v1][1:a][v2][2:a] concat=n=3:v=1:a=1 [v] [a]" \
		-map [v] -map [a] \
		-s hd720 \
		-vcodec libx264 \
		-pix_fmt yuv420p \
		-vsync 2 \
		"$DEST_FILE"
}


# mkdir -p ./${TMP}

# ####################################
# Creating the credits clip
# ####################################
#if test ${TMP}/tmp-credits.mkv -ot ${SCRIPT}/credits.svg ; then
 	echo "########################################"
 	echo "# Gerando o tmp-credits.mkv"
 	echo "########################################"
 	ffmpeg -y -loop 1 -i ${SCRIPT}/credits.svg -i ${SCRIPT}/credits.wav -shortest ${TMP}/tmp-credits.mkv
#fi

# ####################################
# Creating dest dir
# ####################################
mkdir -p $ASSETS/thumbs
mkdir -p $ASSETS/videos


if [ $# -gt 1 ]; then
	VIDEO_TITLE=$1
	AUTHOR=$2
	SRC_FILE=$3
	AULA=$4
	DEST_FILE=$5
	process_video "$VIDEO_TITLE" "$AUTHOR" "$SRC_FILE" "$AULA" "$DEST_FILE"
	exit
fi

# for aula in ./${SRC}/*.md; do 
# 	# ####################################
# 	# Getting parameters from aulas
# 	# ####################################
#     VIDEO_TITLE="$(basename "${aula}" .md)"
# 	AUTHOR=$(grep "^author: " "${aula}" | sed -e 's/author: //g')
# 	SRC_FILE="${SRC}/${VIDEO_TITLE}.mkv"
#
# 	process_video "$VIDEO_TITLE" "$AUTHOR" "$SRC_FILE"
# done

# rm -f ${TMP}