Обновление

Sep 06, 2009 20:53

Что-то мне скучно. Поэтому я даже решил реанимировать ЖЖ +) И, между делом, накатал скрипт для разрезания и конвертирования FLAC в MP3/OGG.


  1. #!/bin/sh  
  2.   
  3. #flacsplit 0.1  
  4. #This script splits single flac file with cue into separate flac files  
  5. #with tags. Also ogg or mp3 encoding of flac files possible.  
  6.   
  7. #REQUIREMENTS:  
  8. # oggenc  
  9. # cuetools  
  10. # shntool  
  11. # lame  
  12.   
  13. #This program is free software; you can redistribute it and/or  
  14. #modify it under the terms of the GNU General Public License  
  15. #as published by the Free Software Foundation; either version 2  
  16. #of the License, or (at your option) any later version.  
  17.   
  18. #This program is distributed in the hope that it will be useful,  
  19. #but WITHOUT ANY WARRANTY; without even the implied warranty of  
  20. #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
  21. #GNU General Public License for more details.  
  22.   
  23. #You should have received a copy of the GNU General Public License  
  24. #along with this program; if not, write to the Free Software  
  25. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.  
  26.   
  27. PROGNAME="flacsplit"  
  28. PROGVER="0.1"  
  29. FLACDIR="flac"  
  30. OGGDIR='ogg'  
  31. MP3DIR='mp3'  
  32.   
  33. # Check input files  
  34. case "$1" in  
  35. *.[fF][lL][aA][cC])  
  36.   if [ ! -f "$1" ] ; then  
  37.     echo "$PROGNAME: error: flac file $1 doesn't exist"  
  38.     exit 1  
  39.   fi  
  40.   if [ ! -f "$2" ]; then  
  41.     echo "$PROGNAME: error: cue input file $2 doesn't exist"  
  42.     exit 1  
  43.   fi ;;  
  44. *) # No parameters - show info  
  45.   echo -e "\n$PROGNAME - tool for splitting and encoding flac files with cue files. Version $PROGVER"  
  46.   echo -e "Usage: $PROGNAME flac_file cue_file [options]\nOptions can be: -m for mp3 encoding or -o for ogg encoding.\n"  
  47.   exit ;;  
  48. esac  
  49.   
  50. # Sptitting  
  51.   
  52. if [ -d $FLACDIR ]  
  53.   then :  
  54. else  
  55.   echo "$PROGNAME: creating output directory"  
  56.   mkdir $FLACDIR  
  57. fi  
  58.   
  59. # Split flac file into separate *.flac  
  60. shnsplit -o flac -f *.cue -t "%n-%p_-_%t" -d $FLACDIR *.flac  
  61.   
  62. # Use cuetag script to write tags  
  63. cp $2 $FLACDIR  
  64. cd $FLACDIR  
  65. cuetag $2 *.flac  
  66. rm $2  
  67.   
  68. # Encoding (if needed)  
  69. case "$3" in  
  70. -o)  
  71.   # encode files  
  72.   oggenc -q10 *.flac  
  73.   
  74.   # move ogg files to $OGGDIR  
  75.   if [ -d $OGGDIR ]  
  76.     then :  
  77.   else  
  78.     mkdir $OGGDIR  
  79.   fi  
  80.   mv *.ogg $OGGDIR  
  81.   ;;  
  82. -m)  
  83.   for flac in *.flac;  
  84.   do  
  85.     #output mp3 filename  
  86.     mpeg=`echo $flac | cut -f1 -d.`.mp3  
  87.     #mp3 tags  
  88.     TITLE="`metaflac --show-tag=TITLE "$flac" | awk -F = '{printf $2}'`"  
  89.     ALBUM="`metaflac --show-tag=ALBUM "$flac" | awk -F = '{printf $2}'`"  
  90.     ARTIST="`metaflac --show-tag=ARTIST "$flac" | awk -F = '{printf $2}'`"  
  91.     TRACKNUMBER="`metaflac --show-tag=TRACKNUMBER "$flac" | awk -F = '{printf $2}'`"  
  92.     #encode  
  93.     flac -d -c "$flac" | lame --cbr -b 320 --tt "$TITLE" --tn "$TRACKNUMBER" --tl "$ALBUM" --ta "$ARTIST" --add-id3v2 - "$mpeg"  
  94.   done  
  95.     
  96.   # move mp3 files to $MP3DIR  
  97.   if [ -d $MP3DIR ]  
  98.     then :  
  99.   else  
  100.     mkdir $MP3DIR  
  101.   fi  
  102.   mv *.mp3 $MP3DIR  
  103.   ;;  
  104. *)  
  105.   ;;  
  106. esac  
  107.   
  108. echo -e "\n$PROGNAME: all jobs finished"  

computers, programming, linux

Previous post Next post
Up