170 lines
5.1 KiB
Bash
170 lines
5.1 KiB
Bash
### (c)2000-2011 Robert Hegemann
|
|
###
|
|
### /<path>/<artist>/<year>-<album>/<track-no> <title>
|
|
###
|
|
### SRC_ROOT : where the CD are located
|
|
### DST_ROOT : where newly encoded tracks should go
|
|
### DONE_ROOT : where verified encoded tracks are located
|
|
### LAME_EXE : points to program
|
|
### LAME_OPT : what options to use
|
|
################################################################
|
|
_V=2
|
|
SRC_ROOT=/windows/W/CD
|
|
DST_ROOT=/windows/Z/mp3v${_V}wg
|
|
DONE_ROOT=/windows/Z/mp3v${_V}wg
|
|
LAME_EXE=lame-399
|
|
LAME_OPT="-V${_V} --quiet --noreplaygain --id3v2-only"
|
|
|
|
SKIP_DONE_FOLDER_EXISTS=1
|
|
SKIP_DEST_FOLDER_EXISTS=1
|
|
SCAN_ALBUM_GAIN_ONLY=0
|
|
|
|
case "$0" in
|
|
mk_album_gain.sh) SCAN_ALBUM_GAIN_ONLY=1;;
|
|
esac
|
|
case "$1" in
|
|
--scan-gain-only) SCAN_ALBUM_GAIN_ONLY=1;;
|
|
esac
|
|
if [ $SCAN_ALBUM_GAIN_ONLY = 1 ]
|
|
then
|
|
SKIP_DONE_FOLDER_EXISTS=0
|
|
SKIP_DEST_FOLDER_EXISTS=0
|
|
fi
|
|
|
|
if (test -e "${SRC_ROOT}")
|
|
then
|
|
if test -e "${DST_ROOT}"
|
|
then
|
|
:
|
|
else
|
|
mkdir "${DST_ROOT}"
|
|
fi
|
|
|
|
for _artist in "${SRC_ROOT}"/*
|
|
do
|
|
_ARTIST=$(basename "${_artist}")
|
|
DST_ARTIST=${DST_ROOT}/${_ARTIST}
|
|
DS2_ARTIST=${DONE_ROOT}/${_ARTIST}
|
|
echo "${_ARTIST}"
|
|
|
|
VARIOUS_ARTISTS_MODE=0
|
|
case "${_ARTIST}" in
|
|
"Various" | "Various Artists" )
|
|
VARIOUS_ARTISTS_MODE=1
|
|
ID3_ALBUM_ARTIST="Various Artists"
|
|
;;
|
|
"Musik Express" )
|
|
VARIOUS_ARTISTS_MODE=2
|
|
ID3_ALBUM_ARTIST="Various (ME)"
|
|
;;
|
|
*)
|
|
VARIOUS_ARTISTS_MODE=0
|
|
ID3_ALBUM_ARTIST=${_ARTIST}
|
|
;;
|
|
esac
|
|
|
|
for _cd in "${_artist}"/*
|
|
do
|
|
_CD=$(basename "${_cd}")
|
|
DST_CD=${DST_ARTIST}/${_CD}
|
|
DS2_CD=${DS2_ARTIST}/${_CD}
|
|
ID3_YR=`echo "${_CD}"|cut -b 1-4`
|
|
ID3_CD=`echo "${_CD}"|cut -b 6-`
|
|
if [ $SKIP_DONE_FOLDER_EXISTS = 1 ]
|
|
then
|
|
if test -e "${DS2_CD}"
|
|
then
|
|
continue
|
|
fi
|
|
fi
|
|
if [ $SKIP_DEST_FOLDER_EXISTS = 1 ]
|
|
then
|
|
if test -e "${DST_CD}"
|
|
then
|
|
continue
|
|
fi
|
|
fi
|
|
echo "${_ARTIST} / ${_CD}"
|
|
|
|
ALBUM_GAIN="1.0"
|
|
if test -e "${_cd}/album_gain_scale.txt"
|
|
then
|
|
ALBUM_GAIN=`cat "${_cd}/album_gain_scale.txt"`
|
|
elif test -e "${DS2_CD}/album_gain_scale.txt"
|
|
then
|
|
ALBUM_GAIN=`cat "${DS2_CD}/album_gain_scale.txt"`
|
|
elif test -e "${DST_CD}/album_gain_scale.txt"
|
|
then
|
|
ALBUM_GAIN=`cat "${DST_CD}/album_gain_scale.txt"`
|
|
else
|
|
unset ALBUM_GAIN
|
|
fi
|
|
if [ "${ALBUM_GAIN}" = "" ]
|
|
then
|
|
if test -e "${DST_ARTIST}"
|
|
then
|
|
:
|
|
else
|
|
mkdir "${DST_ARTIST}"
|
|
fi
|
|
if test -e "${DST_CD}"
|
|
then
|
|
:
|
|
else
|
|
mkdir "${DST_CD}"
|
|
fi
|
|
ALBUM_GAIN=`wavegain -x -a "${_cd}"/ 2>/dev/null`
|
|
echo ${ALBUM_GAIN} > "${DST_CD}/album_gain_scale.txt"
|
|
fi
|
|
if [ $SCAN_ALBUM_GAIN_ONLY = 1 ]
|
|
then
|
|
continue
|
|
fi
|
|
|
|
for _song in "${_cd}"/*.wav
|
|
do
|
|
_SONG=$(basename "${_song}" .wav)
|
|
DST_SONG=${DST_CD}/$(basename "${_song}" .wav).mp3
|
|
if test -e "${DST_SONG}"
|
|
then
|
|
:
|
|
else
|
|
if test -e "${DST_ARTIST}"
|
|
then
|
|
:
|
|
else
|
|
mkdir "${DST_ARTIST}"
|
|
fi
|
|
if test -e "${DST_CD}"
|
|
then
|
|
:
|
|
else
|
|
mkdir "${DST_CD}"
|
|
fi
|
|
ID3_TRACK=`echo "${_SONG}"|cut -b 1-2`
|
|
if [ $VARIOUS_ARTISTS_MODE = 0 ]
|
|
then
|
|
ID3_TITLE=`echo "${_SONG}"|cut -b 4-`
|
|
ID3_TRACK_ARTIST=${_ARTIST}
|
|
else
|
|
ID3_TITLE=`echo "${_SONG% - *}"|cut -b 4-`
|
|
ID3_TRACK_ARTIST=`echo "${_SONG#* - }"`
|
|
fi
|
|
${LAME_EXE} ${LAME_OPT} \
|
|
--scale ${ALBUM_GAIN} \
|
|
--ta "${ID3_TRACK_ARTIST}" \
|
|
--tl "${ID3_CD}" \
|
|
--ty "${ID3_YR}" \
|
|
--tt "${ID3_TITLE}" \
|
|
--tn "${ID3_TRACK}" \
|
|
--tv "TXXX=ALBUM ARTIST=${ID3_ALBUM_ARTIST}" \
|
|
--tv "TXXX=LAME SCALE=${ALBUM_GAIN}" \
|
|
"${_song}" "${DST_SONG}" &
|
|
fi
|
|
done
|
|
wait
|
|
done
|
|
done
|
|
else
|
|
echo Quellverzeichnis ${SRC_ROOT} existiert nicht.
|
|
fi
|