1### (c)2000-2011 Robert Hegemann 2### 3### /<path>/<artist>/<year>-<album>/<track-no> <title> 4### 5### SRC_ROOT : where the CD are located 6### DST_ROOT : where newly encoded tracks should go 7### DONE_ROOT : where verified encoded tracks are located 8### LAME_EXE : points to program 9### LAME_OPT : what options to use 10################################################################ 11_V=2 12SRC_ROOT=/windows/W/CD 13DST_ROOT=/windows/Z/mp3v${_V}wg 14DONE_ROOT=/windows/Z/mp3v${_V}wg 15LAME_EXE=lame-399 16LAME_OPT="-V${_V} --quiet --noreplaygain --id3v2-only" 17 18SKIP_DONE_FOLDER_EXISTS=1 19SKIP_DEST_FOLDER_EXISTS=1 20SCAN_ALBUM_GAIN_ONLY=0 21 22case "$0" in 23 mk_album_gain.sh) SCAN_ALBUM_GAIN_ONLY=1;; 24esac 25case "$1" in 26 --scan-gain-only) SCAN_ALBUM_GAIN_ONLY=1;; 27esac 28if [ $SCAN_ALBUM_GAIN_ONLY = 1 ] 29then 30 SKIP_DONE_FOLDER_EXISTS=0 31 SKIP_DEST_FOLDER_EXISTS=0 32fi 33 34if (test -e "${SRC_ROOT}") 35then 36 if test -e "${DST_ROOT}" 37 then 38 : 39 else 40 mkdir "${DST_ROOT}" 41 fi 42 43 for _artist in "${SRC_ROOT}"/* 44 do 45 _ARTIST=$(basename "${_artist}") 46 DST_ARTIST=${DST_ROOT}/${_ARTIST} 47 DS2_ARTIST=${DONE_ROOT}/${_ARTIST} 48 echo "${_ARTIST}" 49 50 VARIOUS_ARTISTS_MODE=0 51 case "${_ARTIST}" in 52 "Various" | "Various Artists" ) 53 VARIOUS_ARTISTS_MODE=1 54 ID3_ALBUM_ARTIST="Various Artists" 55 ;; 56 "Musik Express" ) 57 VARIOUS_ARTISTS_MODE=2 58 ID3_ALBUM_ARTIST="Various (ME)" 59 ;; 60 *) 61 VARIOUS_ARTISTS_MODE=0 62 ID3_ALBUM_ARTIST=${_ARTIST} 63 ;; 64 esac 65 66 for _cd in "${_artist}"/* 67 do 68 _CD=$(basename "${_cd}") 69 DST_CD=${DST_ARTIST}/${_CD} 70 DS2_CD=${DS2_ARTIST}/${_CD} 71 ID3_YR=`echo "${_CD}"|cut -b 1-4` 72 ID3_CD=`echo "${_CD}"|cut -b 6-` 73 if [ $SKIP_DONE_FOLDER_EXISTS = 1 ] 74 then 75 if test -e "${DS2_CD}" 76 then 77 continue 78 fi 79 fi 80 if [ $SKIP_DEST_FOLDER_EXISTS = 1 ] 81 then 82 if test -e "${DST_CD}" 83 then 84 continue 85 fi 86 fi 87 echo "${_ARTIST} / ${_CD}" 88 89 ALBUM_GAIN="1.0" 90 if test -e "${_cd}/album_gain_scale.txt" 91 then 92 ALBUM_GAIN=`cat "${_cd}/album_gain_scale.txt"` 93 elif test -e "${DS2_CD}/album_gain_scale.txt" 94 then 95 ALBUM_GAIN=`cat "${DS2_CD}/album_gain_scale.txt"` 96 elif test -e "${DST_CD}/album_gain_scale.txt" 97 then 98 ALBUM_GAIN=`cat "${DST_CD}/album_gain_scale.txt"` 99 else 100 unset ALBUM_GAIN 101 fi 102 if [ "${ALBUM_GAIN}" = "" ] 103 then 104 if test -e "${DST_ARTIST}" 105 then 106 : 107 else 108 mkdir "${DST_ARTIST}" 109 fi 110 if test -e "${DST_CD}" 111 then 112 : 113 else 114 mkdir "${DST_CD}" 115 fi 116 ALBUM_GAIN=`wavegain -x -a "${_cd}"/ 2>/dev/null` 117 echo ${ALBUM_GAIN} > "${DST_CD}/album_gain_scale.txt" 118 fi 119 if [ $SCAN_ALBUM_GAIN_ONLY = 1 ] 120 then 121 continue 122 fi 123 124 for _song in "${_cd}"/*.wav 125 do 126 _SONG=$(basename "${_song}" .wav) 127 DST_SONG=${DST_CD}/$(basename "${_song}" .wav).mp3 128 if test -e "${DST_SONG}" 129 then 130 : 131 else 132 if test -e "${DST_ARTIST}" 133 then 134 : 135 else 136 mkdir "${DST_ARTIST}" 137 fi 138 if test -e "${DST_CD}" 139 then 140 : 141 else 142 mkdir "${DST_CD}" 143 fi 144 ID3_TRACK=`echo "${_SONG}"|cut -b 1-2` 145 if [ $VARIOUS_ARTISTS_MODE = 0 ] 146 then 147 ID3_TITLE=`echo "${_SONG}"|cut -b 4-` 148 ID3_TRACK_ARTIST=${_ARTIST} 149 else 150 ID3_TITLE=`echo "${_SONG% - *}"|cut -b 4-` 151 ID3_TRACK_ARTIST=`echo "${_SONG#* - }"` 152 fi 153 ${LAME_EXE} ${LAME_OPT} \ 154 --scale ${ALBUM_GAIN} \ 155 --ta "${ID3_TRACK_ARTIST}" \ 156 --tl "${ID3_CD}" \ 157 --ty "${ID3_YR}" \ 158 --tt "${ID3_TITLE}" \ 159 --tn "${ID3_TRACK}" \ 160 --tv "TXXX=ALBUM ARTIST=${ID3_ALBUM_ARTIST}" \ 161 --tv "TXXX=LAME SCALE=${ALBUM_GAIN}" \ 162 "${_song}" "${DST_SONG}" & 163 fi 164 done 165 wait 166 done 167 done 168else 169 echo Quellverzeichnis ${SRC_ROOT} existiert nicht. 170fi 171