mk_mp3.sh 5.1 KB

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