#!/bin/bash
#
### Get Lists


abspath=$(cd ${0%/*} && echo $PWD/${0##*/})

# to get the path only - not the script name - add
RUNDIRECTORY=$(/usr/bin/dirname "$abspath")
APPDIRECTORY=${RUNDIRECTORY}

#display the paths to prove it works
SCRIPTPATH="${abspath}"

VERSION="mkmp4s.bash 1.8 (2012-04-04)"
SUMMARY="mkmp4s.bash - A simple script to convert and tag video files for iTunes
http://eduo.info/apps/mkmp4s - Please donate if you find this useful."
CREDIT="Mashed together by @eduo - 1st version Dec. 2007"
LICENSE="Can be distributed freely but try to:
-Include all necessary files
-Let me know via twitter if you find it useful and/or redistribute it
-Share your changes so I can improve it."

#Default values
# 0 - NO / 1 - YES
C=0 #Convert MP4s to MP4s
H=0 #Show Help and exit
V=0 #Show Version and exit
M=0 #Process files from command line, not text files
D=0 #Debug Mode. Spam the console.
N=0 #Don't add to iTunes. 0=Add, 1=Don't add
K=0 #Keep final MP4 files
F="iPhone4" #Default preset for conversion.
G=0 #Make GUI questions

while getopts ":chDGVnkm:f:" opt 
do
	case ${opt} in
		h) H=1;;
		c) echo "ENABLED: Will Convert to MP4 even if file already is MP4/M4V"
		C=1;;
		m) echo "ENABLED: Manual files mode."
		M=1
		T=1
		#${OPTARG}
		if [[ "TM" == *"${OPTARG}"* ]]
			then
			TYPE=${OPTARG}
			echo "TYPE: Type of manual files is ${TYPE}. Will not check TXT listings."
		else
			TYPE=""
			echo "TYPE: Parameter 'TYPE' is missing..."
			#H=1
		fi
		;;
		D) echo "Debug Mode Enabled..."
		D=1;;
		G) echo "Triggering Graphical prompts..."
		RUNDIRECTORY2=$(/usr/bin/mktemp -dt mkmp4s)
		if [[ ${#RUNDIRECTORY} -gt 0 ]]
			then
			RUNDIRECTORY=${RUNDIRECTORY2}
		fi
		G=1
		M=1
		T=1;;
		n) N=1
		K=1;;
		k) K=1;;
		V) V=1;;
		f) F="${OPTARG}"
		echo "Conversion will be made with preset ${F}";;
		\?) echo "Unknown option: -	${OPTARG}" >&2
		H=1;;
	esac
done

echo "Temporary directory will be ${RUNDIRECTORY}"
cd ${RUNDIRECTORY}

trim() { echo $1; }
d() {
	if [[ ${D} -eq 1 ]]
		then
		echo "DEBUG: ${1}"
	fi
}

d "Script running from ${APPDIRECTORY}"

if [[ ${TYPE} == "M" ]]
	then
	TYPE=Movie
else
	TYPE=TV-Show
fi

d "Type is $TYPE"

if [[ ${D} -eq 1 ]]
	then
	d "h (help)             - $H"
	d "c (convert mp4)      - $C"
	d "V (show Version)     - $V"
	d "m (manual files)     - $M"
	d "f (Output preset)    - $F"
	d "n (No iTunes add)    - $N"
	d "k (Keep final files) - $K"
	d "G (Prompt for GUI)   - $G"
	d "  (Type of videos)   - $TYPE"
fi

if [[ ${G} -eq 1 && ${M} -ne 0 ]]
	then
	d "Graphical mode requested: G= $G"
	USERDIR=$(dirname ~/Desktop)
	d echo "USERDIR is ${USERDIR}"
	PREFSDIR=${USERDIR}/Library/Application\ Support/mkmp4s
	d 'PREFSDIR=${USERDIR}/Library/Application\ Support/mkmp4s'
	d "PREFSDIR=${USERDIR}/Library/Application\ Support/mkmp4s"
	PREFS=${PREFSDIR}/mkmp4s\ Preferences.txt

	d "Prefs should be at ${PREFSDIR} and ${PREFS}"

	if [[ -f "${PREFS}"  ]]
		then
		d "Preferences file is present. Reading..."
		. "${PREFS}"
	else
		d "Preferences file not present."
	fi

	FORMATTYPES='iPad iPhone4 iPhone Universal Classic Normal'

	d "Comparing ${F} against ${FORMATTYPES}"
	#echo "FORMATTYPES=${FORMATTYPES}"
	#echo 'FORMATTYPES=$(echo "${F} "$(echo ${FORMATTYPES}|sed -e "s/${F}//g"))'
	FORMATTYPES2=$(echo "${F} "$(echo ${FORMATTYPES}|sed -e "s/${F}//g"))
	# d "Formattypes2 are $FORMATTYPES2"
	FORMATTYPES=${FORMATTYPES2}
	# d "Formattypes are $FORMATTYPES"

	F=$("${APPDIRECTORY}"/apps/cocoaDialog.app/Contents/MacOS/cocoaDialog dropdown \
		--title "Select conversion encoding" \
		--text "What encoding should we use?" \
		--items ${FORMATTYPES} \
		--timeout 15 \
		--string-output \
		--button1 "Select" \
		--button2 "Cancel" | tail -n1)

	if [[ ${F} == "Cancel" ]]
		then
		d "Cancelled dialog. Exiting..."
		exit
	else
		d "Selected ${F}"
	fi

	SHOWTYPES='TV-Show Movie'
	SHOWTYPES=$(echo $TYPE $(echo ${SHOWTYPES}|sed -e "s/${TYPE}//g"))

	TYPE=$("${APPDIRECTORY}"/apps/cocoaDialog.app/Contents/MacOS/cocoaDialog dropdown \
		--title "Select video type" \
		--text "What type of video will you convert?" \
		--items ${SHOWTYPES} \
		--timeout 15 \
		--string-output \
		--button1 "Select" \
		--button2 "Cancel" | tail -n1)

	if [[ ${TYPE} == "Cancel" ]]
		then
		d "Cancelled dialog. Exiting..."
		exit
	fi

	WRITE=$("${APPDIRECTORY}"/apps/cocoaDialog.app/Contents/MacOS/cocoaDialog yesno-msgbox \
		--title "Save as default values?" \
		--text "Do you want to save these values as default for your system?" \
		--informative-text "Your selected Video format is ${TYPE} and your preferred conversion preset is ${F}" \
		--icon "Document" \
		--timeout 15 \
		--string-output \
		--button2 "No" \
		--button3 "Cancel" | tail -n1)

	if [[ ${WRITE} == "Cancel" ]]
		then
		d "Cancelled dialog. Exiting..."
		exit
	elif [[ ${WRITE} == "No" ]]
		then
		d "Selected ${WRITE}"
		d "Won't Save"
	else
		d "Selected ${WRITE}"
		d "Will save to ${PREFSDIR}"
		#echo mkdir -p "$(dirname "${PREFS}")"
		#echo 'echo "" > "'${PREFS}'"'
		#echo 'echo "TYPE=\"'${TYPE}'\"" > "'${PREFS}'"'
		#echo 'echo "F=\"'${F}'\"" > "'${PREFS}'"'

		mkdir -p "$(dirname "${PREFS}")" 
		echo "" > "${PREFS}"
		echo "TYPE=\"${TYPE}\"" > "${PREFS}"
		echo "F=\"${F}\"" >> "${PREFS}"
	fi
	#exit
fi

if [[ "${TYPE}" == "TV-Show" ]]
	then
	TYPE="TV Show"
else
	d "Selected ${TYPE}"
fi

if [[ ${V} -eq 1 ]]
	then
	echo ${VERSION}
	exit
fi

echo "${SUMMARY}"
echo "${VERSION}"

if [[ ${H} -eq 1 ]]
	then
	#echo ${VERSION}
	#echo ${SUMMARY}
	echo ""
	echo "usage: ${0} [-c] [-h] [-V] [-n] [-f Normal|iPad|iPhone4|iPhone|Universal|Classic] [-m T|M file1 file2 file3] "
	echo "     -c  Convert even MP4/M4V files to custom MP4. Disabled by default."
	echo "         When disabled, the script will use MP4 files as-is."
	echo "     -h  Display this Help"
	echo "     -V  Show version"
	echo "     -m  Manual file mode. Either 'T' for TV-Shows or 'M' for Movies. Followed by one or more video files to process."
	echo "         Disabled by default."
	echo "     -f  Format for conversion, if executed. Default is 'iPad'"
	echo "         See all at: http://trac.handbrake.fr/wiki/BuiltInPresets "
	echo "     -n  Don't add to iTunes automatically. Default is to add to iTunes. Implies '-k'"
	echo "     -k  Keep final files. Default is to delete final .m4v files. Enabled if '-n'"
	echo "     -G  Graphical mode prompts: Select parameters and optionally save them as defaults."
	echo "         Requires '-m'. If no files are listed will only modify default values"
	echo ""
	echo ""
	echo "SAMPLE USE"
	echo ""
	echo "--> Mass-processing of files"
	echo "${0}"
	echo "   |"
	echo "   Without parameters script will read movies.txt and/or episodes.txt from the same directory."
	echo "   TXT files are a simple listing of files to process."
	echo ""
	echo "--> Processing individual files manually:"
	echo "${0} -m T \"TV Episode 1x02.avi\" TV\\ Episode 1x03.mp4"
	echo "               | |  |                        |"
	echo "               | |  |                        Escaped unquoted filename"
	echo "               | |  Quoted filename"
	echo "               | Parameter 'T' sets the type as 'TV Episodes'"
	echo "               Option 'm' instructs the script to take files from the command line"

	echo ""
	echo ${CREDIT}
	echo ${LICENSE}
	exit
fi

parse_episode() {

	#echo "" 

	JUSTNAME=${1}
	NAME=$(echo ${JUSTNAME} | sed -e's|\.| |g' -e's|-| |g' -e's|_| |g'| tr -s " ")

	#echo " --> Testing for -${NAME}-"

	# Episodios Dobles Formato SxxExx-Exx - EpiDouble
	if [ -n "$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\) E\([0-9][0-9]*\).*|\1\|\2\|\3|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\) E\([0-9][0-9]*\).*|\1\|\2\|\3|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) S\([0-9][0-9]*\)E\([0-9][0-9]*\) E\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* S[0-9][0-9]*E[0-9][0-9]* E[0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EP2|${DATA}|${SHOW}||${TITLE}"
		#echo "Format is SxxExx-Exx"

		# Episodios Dobles Formato SxxExxExx - EpiDouble
	elif [ -n "$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1\|\2\|\3|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1\|\2\|\3|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) S\([0-9][0-9]*\)E\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* S[0-9][0-9]*E[0-9][0-9]*E[0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EP2|${DATA}|${SHOW}||${TITLE}"
		#echo "Format is SxxExxExx"

		# Episodios Dobles Formato #x##-## - EpiDouble
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)x\([0-9][0-9]*\) \([0-9][0-9]*\).*|\1\|\2\|\3|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)x\([0-9][0-9]*\) \([0-9][0-9]*\).*|\1\|\2\|\3|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \([0-9][0-9]*\)x\([0-9][0-9]*\) \([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* [0-9][0-9]*x[0-9][0-9]* [0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EP2|${DATA}|${SHOW}||${TITLE}"
		#echo "Format is #x##-##"

		# Episodios Simples Formato SxxExx - EpiNormal
	elif [ -n "$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1\|\2|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* S\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1\|\2|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) S\([0-9][0-9]*\)E\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* S[0-9][0-9]*E[0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EPI|${DATA}||${SHOW}||${TITLE}"
		#echo "Format is SxxExx"

		# Episodios Simples Formato #x## - EpiNormal
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)x\([0-9][0-9]*\).*|\1\|\2|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)x\([0-9][0-9]*\).*|\1\|\2|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \([0-9][0-9]*\)x\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* [0-9][0-9]*x[0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EPI|${DATA}||${SHOW}||${TITLE}"
		#echo "Format is #x##"

		# Episodios Simples Formato SEE - EpiNormal
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \([0-9]\)\([0-9][0-9]\) .*|\1\|\2|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \([0-9]\)\([0-9][0-9]\) .*|\1\|\2|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \([0-9]\)\([0-9][0-9]\) .*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* [0-9][0-9][0-9] \(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|EPI|${DATA}||${SHOW}||${TITLE}"
		#echo "Format is ### (SEE)"

		# Episodios Formato Fecha yyyy mm dd - EpiDate
	elif [ -n "$(echo ${NAME} | sed -n 's/.* \([0-9]\{4\}\) \([0-9]\{2\}\) \([0-9]\{2\}\).*/\1\2\3/p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's/.* \([0-9]\{4\}\) \([0-9]\{2\}\) \([0-9]\{2\}\).*/\1\2\3/p')
		SHOW=$(echo ${NAME} | sed -n 's/\(.*\) \([0-9]\{4\}\) \([0-9]\{2\}\) \([0-9]\{2\}\).*/\1/p')
		TITLE=$(echo ${NAME} | sed -n 's/.* [0-9]\{4\} [0-9]\{2\} [0-9]\{2\}\(.*\)/\1/p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|DAY||||${SHOW}|${DATA}|${TITLE}"
		#echo "Format is yyyy mm dd"

		# Episodios Formato Fecha mm dd yyyy - EpiDate
	elif [ -n "$(echo ${NAME} | sed -n 's/.* \(0[0-9]\|1[0-2]\) \([0-2][0-9]\|3[0-1]\) \(19[0-9]\{2\}\|20[0-1][0-9]\) .*/\3\1\2/p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's/.* \(0[0-9]\|1[0-2]\) \([0-2][0-9]\|3[0-1]\) \(19[0-9]\{2\}\|20[0-1][0-9]\) .*/\3\1\2/p')
		SHOW=$(echo ${NAME} | sed -n 's/\(.*\) \(0[0-9]\|1[0-2]\) \([0-2][0-9]\|3[0-1]\) \(19[0-9]\{2\}\|20[0-1][0-9]\) .*/\1/p')
		TITLE=$(echo ${NAME} | sed -n 's/.* 0[0-9]\|1[0-2] [0-2][0-9]\|3[0-1] 19[0-9]\{2\}\|20[0-1][0-9] \(.*\)/\1/p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|DAY||||${SHOW}|${DATA}|${TITLE}"
		#echo "Format is mm dd yyyy"

		# Episodios Especiales Formato Sxx - Special
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \(S[0-9][0-9]* \).*|\1|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \(S[0-9][0-9]* \).*|\1|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \(S[0-9][0-9]* \).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* S[0-9][0-9]* \(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|SPC||${DATA}||${SHOW}||${TITLE}"
		#echo "Format is Special Sxx"

		# Episodios Especiales Formato Exx - Special
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \(E[0-9][0-9]* \).*|\1|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \(E[0-9][0-9]* \).*|\1|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \(E[0-9][0-9]* \).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* E[0-9][0-9]* \(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|SPC||${DATA}||${SHOW}|${TITLE}"
		#echo "Format is Special Exx"

		# Episodios Simples Formato Part #of# - Multipart
	elif [ -n "$(echo ${NAME} | sed -n 's|.* Part \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1\-\2|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* Part \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1-\2|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) Part \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* Part [0-9][0-9]*[ ]*[Oo][Ff][ ]*[0-9][0-9]*\(*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|PRT||${DATA}||${SHOW}||${TITLE}"
		#echo "Format is Multi-Part Part #of#"

		# Episodios Simples Formato #of# - Multipart
	elif [ -n "$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1\-\2|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1-\2|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) \([0-9][0-9]*\)[ ]*[Oo][Ff][ ]*\([0-9][0-9]*\).*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* [0-9][0-9]*[ ]*[Oo][Ff][ ]*[0-9][0-9]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|PRT||${DATA}||${SHOW}||${TITLE}"
		#echo "Format is Multi-Part #of#"

		# Episodios Simples Formato Part # - Unipart
	elif [ -n "$(echo ${NAME} | sed -n 's|.* Part[ ]*\([0-9][0-9]*\)[ ]*.*|\1|p')" ]
		then
		DATA=$(echo ${NAME} | sed -n 's|.* Part[ ]*\([0-9][0-9]*\)[ ]*.*|\1|p')
		SHOW=$(echo ${NAME} | sed -n 's|\(.*\) Part[ ]*\([0-9][0-9]*\)[ ]*.*|\1|p')
		TITLE=$(echo ${NAME} | sed -n 's|.* Part[ ]*[0-9][0-9]*[ ]*\(.*\)|\1|p')
		TITLE=$(trim "${TITLE}")

		line1="${JUSTNAME}|PRT||${DATA}||${SHOW}||${TITLE}"
		#echo "Format is UniPart Part #"

	else
		DATA=$(echo ${NAME})
		line1="${JUSTNAME}|UNK||||${NAME}|"
		#echo "Format is unknown, man"
	fi

	echo "${line1}"

}

process_file() {
	d "Will parse ${1}"
	MYFILE=${1}
	### Get filename
	FILENAME=${MYFILE##*/}
	### Get File Name
	NOEXT=${FILENAME%\.*}
	### Define New Filename
	NEWFILE=${NOEXT}".m4v"
	### Get Extension
	FILEEXT=$(echo ${FILENAME##*\.}| tr '[:lower:]' '[:upper:]')
	### Get file Path
	FILEPATH=${MYFILE%/*}
	### Find subs
	rm "${NOEXT}.subs" 2>/dev/null
	touch "${NOEXT}.subs"

	ls "${FILEPATH}/${NOEXT}"*{srt,sub} 2>/dev/null | while read sub 
	do 
	d "Processing sub ${sub}"
	THESUB=${sub##*/}
	SUBEXT=$(echo ${THESUB##*\.})
	NOEXTSUB=$(echo ${THESUB%\.*} | sed -e's/,/-/g')
	LANGSUB=${NOEXTSUB##*\.}
	LANGUAGE="eng"
	tempfile=$$
	### Find whether sub has language. Match against table. Get Language Full Name
	if [ ${#LANGSUB} -eq 2 ]
		then
		LANGUAGE=$(cat ${APPDIRECTORY}/apps/langs-3 | tr '\t' '\|' | grep \|${LANGSUB}\| | cut -f1 -d\|)
	else
		LANGUAGE="eng"
	fi
	d "Language is ${LANGUAGE}"
	### If Subtitle is of type "SUB" then convert to SRT
	if [ "${SUBEXT}" = "sub" ]
		then
		if [ ! -e "${FILEPATH}/${NOEXT}".idx ]
			then
			d "Subtitle is of type SUB. Will try to convert."
			cp "$sub" ./"${THESUB}"
			cp ./"${THESUB}" "$$-${THESUB}"
			### Get bitrate (for Subs)
			FPS=$(${APPDIRECTORY}/apps/mplayer -vo null -ao null -frames 0 -identify "${MYFILE}" 2>/dev/null | grep ID_VIDEO_FPS | cut -f2 -d=)
			d "FPS for ${FILENAME}: ${FPS}"
			echo "Converting $$-${THESUB} to ${NOEXTSUB}.srt with fps ${FPS}"
			${APPDIRECTORY}/apps/sub2srt -f="${FPS}" "./$$-${THESUB}" > ./"${NOEXTSUB}".srt
			echo "${LANGUAGE}|${NOEXTSUB}.srt" >> "${NOEXT}".subs
			rm "$$-${THESUB}"
		fi
	elif [ "${SUBEXT}" = "srt" ]
		then 
		cp "$sub" ./"${THESUB}"
		cp ./"${THESUB}" "$$-${THESUB}"
		cp ./"$$-${THESUB}" ./"${NOEXTSUB}".srt
		#echo     cp ./\"$$-${THESUB}\" ./\"${NOEXTSUB}\".srt
		echo "${LANGUAGE}|${NOEXTSUB}.srt" >> "${NOEXT}".subs
		rm "$$-${THESUB}"
	fi
	### Finish Processing Subs
done

COPY=0
#	echo "C is ${C}"
if [[ ${C} -eq 0 ]]
	then
	d "Will not convert MP4s:"
	if [[ ${FILEEXT} == "MP4" || ${FILEEXT} == "M4V" ]]
		then
		d "It's MP4"
		COPY=1
	else
		d "It's not MP4"
	fi
fi

TOTALSUBS=$(cat "${NOEXT}.subs" | wc -l)
if [[ "${TOTALSUBS}" -gt 0 ]]
	then
	d "There are subs. Will include them."
	THESELANGS=$(cat "${NOEXT}.subs"|cut -d\| -f1| tr '\n' ',')
	THESESUBS=$(cat "${NOEXT}.subs"|sed -e's/,/\\,/g'|cut -d\| -f2| tr '\n' ',')
	LANGSALL=${THESELANGS%\,}
	SUBSALL=${THESESUBS%\,}

	d "COPY is ${COPY}"

	if [[ ${COPY} -eq 0 ]]
		then
		d "Will convert ${MYFILE} to ${NEWFILE}"
		echo ""
		echo "Converting:"
		echo "--> FROM: ${MYFILE}"
		echo "--> TO:   $(pwd)/${NEWFILE}"
		echo "SUBS: YES"
		echo ""
		#echo \
			echo "---> START ENCODING"
		echo "" | ${APPDIRECTORY}/apps/HandBrakeCLI -i "${MYFILE}" -o "${NEWFILE}" --srt-file "${SUBSALL}" --srt-lang "${LANGSALL}" -Z "${F}" 2>/dev/null
		echo "<--- END ENCODING"
	else
		d "Will copy ${MYFILE} to ${NEWFILE}"
		echo ""
		echo "Copying:"
		echo "--> FROM: ${MYFILE}"
		echo "--> TO:   $(pwd)/${NEWFILE}"
		echo "SUBS: YES"			
		#cp "${MYFILE}" "${NEWFILE}"
		cat "${NOEXT}.subs" | while read thisLangSub
		do
			thisISO3=$(echo ${thisLangSub}|cut -f1 -d \|)
			thisSubFile=$(echo ${thisLangSub}|cut -f2 -d \|)
			thisFullLang=$(grep "^${thisISO3}[[:blank:]]" ${APPDIRECTORY}/apps/langs-2|cut -f3)
			if [[ ${#thisFullLang} -eq 0 ]]
				then
				thisFullLang="English"
			fi
			echo "   --> ADDING SUB ${thisSubFile} ($thisFullLang)"
			${APPDIRECTORY}/apps/sublerCLI -o "${NEWFILE}" -i "${thisSubFile}" -l "${thisFullLang}" -n "${thisFullLang}"
		done
		echo "---"
	fi

	d "Deleting temporary subs for ${NEWFILE}"
	rm "${NOEXT}".subs 2>/dev/null
	rm "${NOEXT}".*.srt 2>/dev/null
	rm "${NOEXT}".*.sub 2>/dev/null

else 
	d "There are no subs. Will not include any."
	d "COPY is ${COPY}"

	if [[ ${COPY} -eq 0 ]]
		then
		d "Will convert ${MYFILE} to ${NEWFILE}"
		echo ""
		echo "Converting:"
		echo "--> FROM: ${MYFILE}"
		echo "--> TO:   $(pwd)/${NEWFILE}"
		echo "SUBS: NO"
		#echo \
			echo "---> START ENCODING"
		echo "" | ${APPDIRECTORY}/apps/HandBrakeCLI -i "${MYFILE}" -o "${NEWFILE}" -Z "${F}" 2>/dev/null
		#		apps/HandBrakeCLI -i "${MYFILE}" -o "${NEWFILE}" -Z "${F}" </dev/null
		echo "<--- END ENCODING"
	else
		d "Will copy ${MYFILE} to ${NEWFILE}"
		echo ""
		echo "Copying:"
		echo "--> FROM: ${MYFILE}"
		echo "--> TO:  $(pwd)/${NEWFILE}"
		echo "SUBS: NO"
		#echo \
			cp -v "${MYFILE}" "${NEWFILE}"
		echo "  --> COPIED ${NEWFILE}"
	fi
	rm "${NOEXT}".subs 2>/dev/null
fi

### Define new file name
FILENAME=${NEWFILE%%\.*}

#TYPE="T"
if [[ ${M} -eq 0 ]]
	then
	d "LIST: ${LIST}"
	if  [[ ${LIST} == "episodes.txt" ]]
		then
		d "Checking episodes.txt, setting TYPE to 'T'"
		TYPE="TV Show"
	elif  [[ ${LIST} == "movies.txt" ]]
		then
		d "Checking movies.txt, setting TYPE to 'M'"
		TYPE="Movie"
	fi
fi


if  [[ ${#TYPE} -eq 0 ]]
	then
	d "No setting for TYPE. Setting as 'T'"
	TYPE="TV Show"
fi

if  [[ ${TYPE} == "TV Show" ]]
	then
	d "File is a TV Show. Will parse metadata."
	RESULT=$(parse_episode "${NOEXT}")
	d "Metadata is ${RESULT}"
	MYNAME=$(echo ${RESULT}|cut -f1 -d\|)
	MYTYPE=$(echo ${RESULT}|cut -f2 -d\|)
	SEASON=$(echo ${RESULT}|cut -f3 -d\|)
	EPID=$(echo ${RESULT}|cut -f4 -d\|)
	EPID2=$(echo ${RESULT}|cut -f5 -d\|)
	TVSHOW=$(echo ${RESULT}|cut -f6 -d\|)
	TVDATE=$(echo ${RESULT}|cut -f7 -d\|)
	EPISODETITLE=$(echo ${RESULT}|cut -f8 -d\|)

	d "MYNAME=${MYNAME}"
	d "MYTYPE=${MYTYPE}"
	d "SEASON=${SEASON}"
	d "EPID=${EPID}"
	d "EPID2=${EPID}"
	d "TVSHOW=${TVSHOW}"
	d "TVDATE=${TVDATE}"
	d "EPISODETITLE=${EPISODETITLE}"

	case ${MYTYPE} in

		"EPI")
		EPISODETITLE="${EPISODETITLE}"
		EPISODE="${SEASON}x${EPID}"
		;;

		"EP2")
		EPISODETITLE="${EPISODETITLE}"
		EPISODE="${SEASON}x${EPID}-${EPID2}"
		;;

		"DAY")
		EPISODETITLE="${TVDATE} ${EPISODETITLE}"
		SEASON=$(echo ${TVDATE} | cut -c1-4)
		EPID=$(echo ${TVDATE} | cut -c5-8)
		EPISODE="${TVDATE}"
		;;

		"PRT")
		if [ -n "${EPID2}" ]
			then
			EPISODETITLE="p.${EPID}-${EPID2} ${EPISODETITLE}"
			EPISODE="${EPID}"
		else
			EPISODETITLE="p.${EPID} ${EPISODETITLE}"
			EPISODE="${EPID}"
		fi
		;;

		"SPC")
		EPISODETITLE="s.${EPID} ${EPISODETITLE}"
		EPISODE="${EPID}"
		;;

	esac

	if [ -f "${NEWFILE}" ]
		then
		echo "Adding tags to ${NEWFILE}"
		#Change "-o" with "-O -o" to optimize for streaming. Tales a bit longer to process.
		d "Tagging with Subler..."
		#echo \
			${APPDIRECTORY}/apps/SublerCLI -o "${NEWFILE}" \
			-t "{Media Kind:TV Show}{Name:${EPISODETITLE}}{TV Show:${TVSHOW}}{TV Episode #:${EPID}}{TV Season:${SEASON}}{Description:Orig. ${FILENAME} - Converted and Tagged for iPod by SolEol@Eduo}{TV Episode ID:${EPISODE}}{Artist:${TVSHOW}}{Album Artist:${TVSHOW}}{Album:${TVSHOW}, Season ${SEASON}}{Disk #:${SEASON}}{Track #:${EPID}/${EPID}}{Comments:Orig. ${FILENAME} - Converted and Tagged for iPod by SolEol@Eduo}"

		#echo \
			#	apps/AtomicParsley "${NEWFILE}
		#--DeepScan iPod-uuid 1200 
		#--overWrite 
		#--stik TV Show 
		#--title ${EPISODETITLE} 
		#--TVShowName ${TVSHOW} 
		#--TVEpisode ${EPISODE} 
		#--TVSeasonNum ${SEASON} 
		#--TVEpisodeNum ${EPID} 
		#--comment Orig. ${FILENAME} - Converted and Tagged for iPod by SolEol@Eduo 
		#--description Orig. ${FILENAME} - Converted and Tagged for iPod by SolEol@Eduo 
		#--artist ${TVSHOW} 
		#--albumArtist ${TVSHOW} 
		#--album ${TVSHOW}, Season ${SEASON} 
		#--tracknum ${EPID}/${EPID} 
		#--disk ${SEASON} "
		# echo "Done adding tags to ${NEWFILE}"
	else
		echo "${NEWFILE} doesn't exist."
	fi
elif [[ ${TYPE} == "Movie" ]]
	then
	d "File is a Movie. Will parse metadata."
	d "NAME=${FILENAME}"
	### File is a movie. Simpler tagging
	if [ -f "${NEWFILE}" ]
		then
		#Change "-o" with "-O -o" to optimize for streaming
		d "Tagging with Subler..."
		#		echo \
			${APPDIRECTORY}/apps/SublerCLI -o "${NEWFILE}" \
			-t "{Media Kind:Movie}{Name:${FILENAME}}{Comments:Orig. ${FILENAME} - Converted and Tagged for iPod by SolEol@Eduo}"

		#apps/AtomicParsley "${NEWFILE}"  \
			#	--DeepScan iPod-uuid 1200 \
			#	--overWrite \
			#	--stik "Movie" \
			#	--title "${FILENAME}" \
			#	--comment "Orig. ${FILENAME} - Converted and Tagged for iPod by Eduo with SolEol@Eduo" 

	fi
fi
### Metemos el fichero en iTunes

if [[ "${N}" -eq 0 ]]
	then
	d "Will add ${NEWFILE} to iTunes"
	if [[ -f "${NEWFILE}" ]]
		then
		echo "Adding ${NEWFILE} to iTunes" 
		#	echo ""\
			${APPDIRECTORY}/apps/addmp4 "${NEWFILE}" 2>/dev/null
		#	echo ""\
		fi
	else
		d "Won't add ${NEWFILE} to iTunes"
	fi

	if [[ "${K}" -eq 0 ]]
		then
		rm "${NEWFILE}"
	else
		d "Won't delete ${NEWFILE}"
		/usr/bin/open -R "${NEWFILE}"
	fi
	### Finish Processing File}
}

if [[ "${M}" -eq 1 ]]
	then
	d "Manual files mode. Parsing files..."
	shift $(($OPTIND-1))
	if [[ "${#}" -eq 0 ]]
		then
		d "No files listed. Will exit..."
		exit
	else
		d "Files listed: $#"
	fi

	FILELIST="$@"
	for FILE in "$@"
	do
		d "Processing manual file: ${FILE}"
		process_file "${FILE}"
	done
	exit
else
	d "Automatic TXT files mode. Will parse episodes.txt/movies.txt now..."
	ls -1 {episodes,movies}.txt | while read LIST
	do
		### Go Through Lists
		d "Reading file ${LIST}..."
		cat "${LIST}" | sort | while read FILE
		do
			d "Processing automatic file from ${LIST}: ${FILE}..."
			process_file "${FILE}"
			d "Done processing ${FILE} from ${LIST}"
		done
		#cat "${LIST}" | sort
		### Finish Processing Files
		#echo "-- DONE --"
	done
	mv episodes.txt episodes.old.$$.txt;>episodes.txt
	mv movies.txt movies.old.$$.txt;>movies.txt
fi

