#!/bin/bash

#- Wav Aiff nach Flac wandeln, Zusatz-Informationen(Interpret Titel)Tags schreiben. -#

. output_format
. dir_exists
. basedir_name_basen
. checkfor
. remove_in_files
. leadet_zero
. find_all_processing_files
. analyze_audio_dir_filename
. flac_replay_gain_check

flac_app="flac";
metaflac_app="metaflac";
media_file_ext="[fwa][lai][avf]";
wav_ext="wav";
feldtrenner=" - "
tmpdir="tmp1"

clear;

dir_exists "${1}"
checkfor "${flac_app}" "sox"

replace_signs_dir_file_name(){
	echo -e "${red_bg}Dir${ende1}${red} mit ${2} ${ende1}bereinigen"
	find "${1}" -depth -type d -iname "*${2}*" | while read audio_file; do
		clean_dir=`echo "${audio_file}" | sed "s/${2}/${3}/g"`
		echo "${audio_file}"
		echo "${clean_dir}"
		mv "${audio_file}" "${clean_dir}"
	done

	echo -e "${red_bg}Dateien${ende1}${red} mit ${2} ${ende1}bereinigen"
	find "${1}" -depth -type f -iname "*${2}*" | while read audio_file; do
		clean_file=`echo "${audio_file}" | sed "s/${2}/${3}/g"`
		echo "${audio_file}"
		echo "${clean_file}"
		mv "${audio_file}" "${clean_file}"
	done
}

edit_file_numbers(){
	find_all_processing_files "${1}" "${2}"

	find "${1}" -type f -iname "*${2}*" | while read audio_file; do
		basedir_name_basen "${audio_file}"
		file_number=`echo "${basen}" | awk '{ print $1 }'`
		leadet_zero "${file_number}"
		basen_new=`echo "${basen}" | sed  's/^[0-9]\+[[:blank:]]//'`
		basen_new="${leadet_zero_99} - ${basen_new}"
	
		find_all_processing_files

		! [ "`echo "${name}" | sed -n '/^[0-9]\+[[:blank:]]-[[:blank:]]/p'`" ] && \
			echo -e "${red_bg}edit${ende1} filename: ${string_lenght_zero} ${red}${basedir}${basen_new}.${ext}${ende1}" && \
			mv "${audio_file}" "${basedir}${basen_new}.${ext}"
			#echo "karl" && exit
	done
	echo -e "----------------------------------------\n" 
}


delete_compressed_files(){
	find "${1}" -type f -iname "*${2}" | while read audio_file; do 
		ls -l "${audio_file}" && rm "${audio_file}"
	done
	find "${1}" -depth -type d -exec rmdir {} \; 2>/dev/null
}

delete_little_point_files(){
	find "${1}" -type f -size -30k -name ".*" | while read audio_file; do
		ls -l "${audio_file}" && rm "${audio_file}"
	done
}

ren_album_dir(){
	find "${1}" -type d -links 2 | grep -v "${2}" | while read audio_file; do
		basedir_name_basen "${audio_file}/"
		dirup2=`echo "${dirup2}" | sed 's/^.[[:blank:]]//'`
		newdir01="${1}${2}/${dirup3}/${dirup2} - ${dirup1}"
		! [ -d "${newdir01}" ] && mkdir -p "${newdir01}"
		mv "${audio_file}"/*.* "${newdir01}"
	done
}

encode_flac(){
	echo -e "${red_bg}enc${ende1} - ${ext} - ${red}${1}${ende1}"
	find_all_processing_files

	if [[ "${ext}" =~ "aiff" || "${ext}" =~ "wav" ]]; then
		flac -5 -f --ignore-chunk-sizes --delete-input-file --replay-gain "${1}" "${2}" "${3}" "${5}" "${6}" "${7}" -o "${4}"
		#-- Willi
		#flac -5 -f --delete-input-file --replay-gain "${1}" "${2}" "${3}" "${5}" "${6}" "${7}" -o "${4}"
		#echo "${1}" "${2}" "${3}" "${5}" "${6}" "${7}" -o "${4}"
	fi
}


set_flac_tags(){
	echo -e "${red}set${ende1}-flac - ${red}${1}${ende1}" && \
	find_all_processing_files

	metaflac --remove-tag=Artist \
	 	 --remove-tag=Title \
		 --remove-tag=Album \
		 --remove-tag=Genre \
		 --remove-tag=Tracknumber \
		"${1}"

	flac_replay_gain_check "${1}"

	metaflac "${2}" "${3}" "${5}" "${6}" "${7}" "${1}"
	metaflac --show-tag=REPLAYGAIN_TRACK_GAIN "${1}"


	#echo "${2}" "${3}" "${5}" "${6}" "${7}" "${1}"

}

replace_file_type_cue(){
	echo -e "${yellow}Replace Filetype Cue File: ${ende1}${1}" 
	cat "${1}" | sed 's/wav/flac/' | sed 's/WAVE/flac/' > "${1}_" &&\
	mv "${1}_" "${1}"
	#cat "${1}" && exit
}


wavaiff2flac(){
	find_all_processing_files "${1}" "${5}"
	find "${1}" -type f -iname "*${5}*" | while read audio_file; do 
		basedir_name_basen "${audio_file}"
		cue_file="${basedir}${basen}.cue"
		
		# -- 1. Parameter Dateiname 2. Parameter Trennzeichen --
		analyze_audio_dir_filename "${audio_file}" "${4}"

		if [[ "${ext}" =~ "wav" || "${ext}" =~ "aiff" ]]; then
			
			[ -f "${cue_file}" ] && replace_file_type_cue "${cue_file}"
		
#			[ "`echo "${dirup3}" | awk '{ if (length($0) == 1) print $0; }'`" ] && \
#			[ "`echo "${dirup2}" | awk '{ if (length($1) == 1) print $0; }'`" ] && \
#			[ -f "${audio_file}" ] && encode_flac "${audio_file}" \
#				--tag=Artist="${album_artist}" \
#				--tag=Title="${track_title}" \
#				"${basedir}/${basen}.${3}" \
#				--tag=Album="${album_title}" \
#				--tag=Genre="" \
#				--tag=Tracknumber="${track_artist}" 
#
#			[ "`echo "${name}" | awk -F "${4}" '{ if($1 !~ /^[0-9][0-9]/) print NF ? NF-1 : 1}'`" == "1" ] && \
#			[ -f "${audio_file}" ] && encode_flac "${audio_file}" \
#				--tag=Artist="${track_artist}" \
#				--tag=Title="${track_title}" \
#				"${basedir}/${track_artist}${4}${track_title}.${3}" \
#				--tag=Album="${album_title}" \
#				--tag=Genre="${album_genre}" \
#				--tag=Tracknumber=""
#
#			[ "`echo "${name}" | awk -F "${4}" '{ if($1 ~ /^[0-9][0-9]/) print NF ? NF-1 : 1}'`" == "1" ] && \
#			[ -f "${audio_file}" ] && encode_flac "${audio_file}" \
#				--tag=Artist="${album_artist}" \
#				--tag=Title="${track_title}" \
#				"${basedir}/${track_artist}${4}${track_title}.${3}" \
#				--tag=Album="${album_title}" \
#				--tag=Genre="${album_genre}" \
#				--tag=Tracknumber="${track_artist}" 
#
#			[ "`echo "${name}" | awk -F "${4}" '{ if($1 ~ /^[0-9][0-9]/) print NF ? NF-1 : 2}'`" == "2" ] && \
#			[ -f "${audio_file}" ] && encode_flac "${audio_file}" \
#				--tag=Artist="${track_title}" \
#				--tag=Title="${title}" \
#				"${basedir}/${track_artist}${4}${track_title}${4}${title}.${3}" \
#				--tag=Album="${album_title}" \
#				--tag=Genre="${album_genre}" \
#				--tag=Tracknumber="${track_artist}"

			# -- Willi

			[ -f "${audio_file}" ] && encode_flac "${audio_file}" \
				--tag=Artist="" \
				--tag=Title="${track_title}" \
				"${basedir}/${basen}.${3}" \
				--tag=Album="" \
				--tag=Genre="" \
				--tag=Tracknumber="${track_number}"
			# -- Willi ende
		fi


		if [[ "${ext}" =~ "flac" ]]; then
		



			#echo "${album_artist}-${album_title}-${track_artist}-${track_title}"


			[ -n "${album_title}" ] && \
			[ -n "${track_artist}" ] && [ "`echo "${name}" | awk -F "${4}" '{ if($1 !~ /^[0-9][0-9]/) print NF ? NF-1 : 1}'`" == "1" ] && \
			set_flac_tags "${audio_file}" \
				--set-tag=Artist="${track_artist}" \
				--set-tag=Title="${track_title}" \
				"${basedir}/${track_artist}${4}${track_title}.${3}" \
				--set-tag=Album="${album_title}" \
				--set-tag=Genre="${album_genre}" \
				--set-tag=Tracknumber=""
	
			[ -n "${album_title}" ] && \
			[ -n "${track_artist}" ] && [ "`echo "${name}" | awk -F "${4}" '{ if($1 ~ /^[0-9][0-9]/) print NF ? NF-1 : 1}'`" == "1" ] && \
			set_flac_tags "${audio_file}" \
				--set-tag=Artist="${album_artist}" \
				--set-tag=Title="${track_title}" \
				"${basedir}/${track_artist}${4}${track_title}.${3}" \
				--set-tag=Album="${album_title}" \
				--set-tag=Genre="${album_genre}" \
				--set-tag=Tracknumber="${track_artist}"

			[ -n "${album_title}" ] && \
			[ -n "${track_artist}" ] && [ "`echo "${name}" | awk -F "${4}" '{ if($1 ~ /^[0-9][0-9]/) print NF ? NF-1 : 2}'`" == "2" ] && \
			set_flac_tags "${audio_file}" \
				--set-tag=Artist="${track_title}" \
				--set-tag=Title="${title}" \
				"${basedir}/${track_artist}${4}${track_title}${4}${title}.${3}" \
				--set-tag=Album="${album_title}" \
				--set-tag=Genre="${album_genre}" \
				--set-tag=Tracknumber="${track_artist}"
		fi
	done
}

aif_c2wav(){
	find "${1}" -type f -iname "*aif" | while read audio_file; do 
		basedir_name_basen "${audio_file}"
		echo "${audio_file}" && \
		sox "${audio_file}" "${basedir}${basen}.wav" && \
		rm "${audio_file}"
	done
}

# -- Willi
#delete_little_point_files "${1}"
#delete_compressed_files "${1}" "[gjm][ip4][fga]"

#replace_signs_dir_file_name "${1}" "•" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "　" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "’" ""

	# probleme
	#replace_signs_dir_file_name "${1}" "" ""

#replace_signs_dir_file_name "${1}" "" ""
#replace_signs_dir_file_name "${1}" "\[" "("
#replace_signs_dir_file_name "${1}" "\]" ")"
#edit_file_numbers "${1}" "[faw][lia][afv]"
#aif_c2wav "${1}"

# -- End Willi


wavaiff2flac "${1}" "${wav_ext}" "${flac_app}" "${feldtrenner}" "${media_file_ext}" "${comment}"


#ren_album_dir "${1}" "${tmpdir}"


#ppss -d "${1}" -c 'flac -5 -f --replay-gain --delete-input-file "$ITEM" - "${ITEM%.wav}.flac"'
#ppss -d "${1}" -c 'flac -5 -f --replay-gain --delete-input-file "$ITEM" - "${ITEM%.aiff}.flac"'
#ppss -d "${1}" -c 'flac -5 -f --replay-gain "$ITEM" - "${ITEM%.wav}.flac"'

#find tmp/ -iname '*.flac' -exec flac -t -o $dst{} {} \;

sync
