| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- ### (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
|