Hallo,
Ich hab ein kleines Bash-Script in Verbindung mit mp3splt geschrieben.
Eine kleine Beschreibung, kommt, wenn das Script ohne Parameter aufgerufen wird.
Es arbeitet mit den Textmarken von Audacity zusammen.
Bash
#!/bin/bash
#-Verlustfreies Schneiden von MP3-Dateien mit Hilfe von Audacity und mp3splt.-#
#-Formatierungen fuer Console-Ausgaben-#
red="\033[31m" red_bg="\033[41m"
green="\033[32m" green_bg="\033[42m"
yellow="\033[33m" yellow_bg="\033[43m"
blue="\033[34m" blue_bg="\033[44m"
magenta="\033[35m" magenta_bg="\033[45m"
ende="\033[0m\n"
ende1="\033[0m"
withe_normal="\033[34m"
#-Wurde eine Datei als Parameter mitgegeben?-#
file_exists(){
[ -z "${1}" ] && [ -z "${2}" ] && echo -e "Anwendung: ${red}${0}${ende1} ${green}[/dir/filename]${ende1}" && exit
[ -z "${1}" ] && [ -n "${2}" ] && echo -e "${2}" && exit
[ ! -f "${1}" ] && echo -e "Datei: ${red_bg}${1}${ende1} ${red}Nicht vorhanden!!${ende1}" && exit
}
#-Pfad zerlegen in Directory-Pfad Dateiname mit Erweiterung und ohne Erweiterung-#
basedir_name_basen(){
basedir=${1%/*}
name=${1##*/}
basen=${name%????}
dirup1=${1%/*/*}
}
#-Ueberpruefe ob Programm auf dem System installiert ist.-#
function checkfor()
{
for i in $*; do
PROG=`which $i`
if [ $? != 0 ] ; then
[ $i == "mogrify" ] && i="imagemagick"
clear;
echo -e "${red}Programm${ende1} ${red_bg}${i}${ende1} ${red}fehlt, bitte ueber Paketmanager nachinstallieren bei Debian basierten Systemen ueber:
${ende1}${green}apt-get install ${i}${ende1}
Beende Programm.\n"
exit 1
fi
done
}
checkfor awk sed clear sync ls
clear
mp3ext="mp3";
txt_ext="txt";
mp3app="mp3splt";
checkfor "${mp3app}";
basedir_name_basen "${1}";
filename="${basedir}/${basen}.${txt_ext}";
file_exists "${1}" "Anwendung: ${red} ${0} ${ende1} ${green}[filename] ${ende1}
Es wird eine MP3 Datei als Parameter erwartet.
Es wird auch eine gleichnamige Textdatei(Audacity Label-Datei mit der Erweiterung 'txt')
im selben Verzeichniss erwartet.
${withe_normal}01.) MP3 Datei mit Audacity oeffnen.${ende1}
Textmarken hinzufuegen, diese sind sogleich die Schnittmarken.
Der Labelname wird als neuer Dateiname verwendet.
Nun muessen die Textspuren exportiert werden.
Die Datei jetzt unter dem selben Namen, im selben Verzeichnis wie die MP3-Datei
abspeichern nur mit der Dateierweiterung 'txt'.
${withe_normal}02.) MP3 schneiden.${ende1}
Nun Script wie anfangs erwaent aufrufen.
Die neu generierten MP3 liegen dann im selben Verzeichnis, wie die Original-Datei.
Die OriginalDatei wird nicht veraendert.
";
file_exists "${basedir}/${basen}.${mp3ext}";
file_exists "${basedir}/${basen}.${txt_ext}";
modulo () {
millisekunden=`echo "${1}" | awk -F "," '{ print $2 }'`
ganzzahl=`echo "${1}" | awk '{ printf "%0.0f\n",$1; }'`
minuten=`echo $(($ganzzahl/60))`
sekunden=`echo $(($ganzzahl%60))`
echo "${minuten}.${sekunden}.${millisekunden}"
}
while_read_datei(){
while read -r "line"
do
startzeit=`echo "${line}" | awk -F "\t" '{ printf "%0.2f\n",$1; }'`
endzeit=`echo "${line}" | awk -F "\t" '{ printf "%0.2f\n",$2; }'`
mp3dateiname=`echo "${line}" | awk -F "\t" '{ print $3 }'`
startzeit=`modulo "${startzeit}"`
endzeit=`modulo "${endzeit}"`
"${mp3app}" "${basedir}/${basen}.${2}" "${startzeit}" "${endzeit}" -d "${basedir}" -o "${mp3dateiname}.${2}"
done < "${1}"
}
while_read_datei "${filename}" "${mp3ext}"
Alles anzeigen
mfG
Karl