#!/bin/bash
###########################
# Needed programs:
# mediainfo, dos2unix
###########################

# Parameter
# 1. Parameter: Quelldatei (Full path to recording => %f)
# 2. Parameter: Kanalname (Channel name => %c)
# 3. Parameter: EPG Sendungstitel (Program title => %t)
# 4. Paramater: EPG Sendungsbeschreibung (Program description => %d)
# 5. Parameter: Aufnahmezeit (Start time stamp of recording, UNIX epoch => %S)

#Parameter zuordnen
fullpath=$1
channel=${2//:}
programtitle=$3
programdesc=$4
starttime=$(($5 + 35))

#Zielpfad festlegen
#targetPath="/storage/Aufnahmen"
targetPath=${fullpath%/*}

#Dateiendung bestimmen
fileExtension=${fullpath##*.}

#EPG Sendungstitel zuweisen (Sonderzeichen entfernen und Umlaute ersetzen)
epgName=${programtitle//:} #Doppelpunkte entfernen
epgName=${epgName//\?} #Fragezeichen entfernen
epgName=${epgName//\"} #Anführungszeichen
epgName=${epgName//\|/ } #Sonderzeichen
epgName=${epgName//ü/ue} #Umlaute ersetzen
epgName=${epgName//ä/ae}
epgName=${epgName//ö/oe}
epgName=${epgName//Ü/Ue}
epgName=${epgName//Ä/Ae}
epgName=${epgName//Ö/Oe}
epgName=${epgName//ß/ss}
epgName=${epgName//\*}

#EPG Beschreibung zuweisen und auf max 65 Zeichen begrenzen
epgDescription=${programdesc:0:65}
#Sonderzeichen entfernen und Umlaute ersetzen
epgDescription=${epgDescription//:} #Doppelpunkt entfernen
epgDescription=${epgDescription//\?} #Fragezeichen
epgDescription=${epgDescription//\"} #Anführungszeichen entfernen
epgDescription=${epgDescription//\|/ } #Sonderzeichen
epgDescription=${epgDescription//ü/ue} #Umlaute ersetzen
epgDescription=${epgDescription//ä/ae}
epgDescription=${epgDescription//ö/oe}
epgDescription=${epgDescription//Ü/Ue}
epgDescription=${epgDescription//Ä/Ae}
epgDescription=${epgDescription//Ö/Oe}
epgDescription=${epgDescription//ß/ss}
#Führende Leerzeichen entfernen
epgDescription=${epgDescription#"${epgDescription%%[![:space:]]*}"}
#Nachfolgende Leerzeichen entfernen
epgDescription=${epgDescription%"${epgDescription##*[![:space:]]}"}

#Uhrzeit formatieren nach YYYY-MM-DD HH-MM
tmstmp=$(date -d @$starttime "+%Y-%m-%d %H-%M")

#Komplettes Ziel festlegen (Zielpfad\YYYY-MM-DD HH-MM Sender - Sendungstitel - EPG Beschreibung.ENDUNG)
target="$targetPath/$tmstmp $channel - $epgName - $epgDescription.$fileExtension"

#Quelle umbenennen und vorher prüfen ob Ziel schon existiert, wenn ja, Zeit anhängen
if [ -f "$target" ]
then
 target="$targetPath/$tmstmp $channel - $epgName - $epgDescription ($(date +%s)).$fileExtension"
fi
mv "$fullpath" "$target"

#1 Sekunde warten
sleep 1

#MediaInformationen
echo -e "Programmtitel:\n$programtitle\n" >"$target.txt"
echo -e "=====================\n" >>"$target.txt"
echo -e "Beschreibung:\n$programdesc\n" >>"$target.txt"
echo -e "=====================\n" >>"$target.txt"
sleep 1
mediainfo "$target" >>"$target.txt"
sleep 1
unix2dos "$target.txt"

#Syslog schreiben
logger -p local0.notice -i -t tvheadend "FileRenamer: '$fullpath' wurde umbenannt nach '$target'"
logger -p local0.notice -i -t tvheadend "FileRenamer: Parameter %f: $fullpath"
logger -p local0.notice -i -t tvheadend "FileRenamer: Parameter %c: $channel"
logger -p local0.notice -i -t tvheadend "FileRenamer: Parameter %t: $programtitle"
logger -p local0.notice -i -t tvheadend "FileRenamer: Parameter %d: $programdesc"
logger -p local0.notice -i -t tvheadend "FileRenamer: Parameter %S: $starttime"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'targetPath' => $targetPath"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'fileExtension' => $fileExtension"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'channel' => $channel"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'epgName' => $epgName"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'epgDescription' => $epgDescription"
logger -p local0.notice -i -t tvheadend "FileRenamer: Variable 'tmstmp' => $tmstmp"

#Script ordentlich beenden
exit 0