Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Requered tools: cuetools, shntool, id3v2, vorbis-tools, lame
  4. #
  5.  
  6. LAMEOPTS="-b 320 --quiet"
  7. OGGOPTS="-b 320 --quiet"
  8.  
  9. while getopts ":s:f:e:" opt; do
  10. case $opt in
  11. f)
  12. FILE="$OPTARG"
  13. ;;
  14. s)
  15. SPLIT="$OPTARG"
  16. ;;
  17. e)
  18. FMT="$OPTARG"
  19. ;;
  20. \?)
  21. echo "Invalid option: -$OPTARG" >&2
  22. exit 1
  23. ;;
  24. :)
  25. echo "Option -$OPTARG requires an argument." >&2
  26. exit 1
  27. ;;
  28. esac
  29. done
  30.  
  31. # Set default format to mp3
  32. case ${FMT:="mp3"} in
  33. mp3|MP3|ogg|OGG)
  34. ;;
  35. *)
  36. echo "Unknown format $FMT" >&2
  37. exit 1
  38. ;;
  39. esac
  40.  
  41. # Check both files
  42. if [ ! -f "$FILE" -o ! -f "$SPLIT" ]
  43. then
  44. echo "You must specify correct flac file and CUE/TOC file." >&2
  45. exit 1
  46. fi
  47.  
  48. #Get number of tracks
  49. NUMTRACKS=`cueprint -d '%N' "${SPLIT}"`
  50.  
  51. for i in `seq 1 $NUMTRACKS`
  52. do
  53. # Clear previous obtained variables
  54. unset PERFORMER
  55. unset ALBUM
  56. unset TITLE
  57.  
  58. # Set performer, album, track title
  59. PERFORMER=`cueprint -n $i -t '%p' "${SPLIT}"`
  60. ALBUM=`cueprint -d '%T' "${SPLIT}"`
  61. TITLE=`cueprint -n $i -t '%t' "${SPLIT}"`
  62.  
  63. ## Check perfomer, album and track title
  64. if [ -z "$PERFORMER" ]
  65. then
  66. echo "Track $i: Can not obtain performer from cue, set it to 'Unknown Artist'" >&2
  67. PERFORMER="Unknown Artist"
  68. fi
  69.  
  70. if [ -z "$ALBUM" ]
  71. then
  72. echo "Track $i: Can not obtain album from cue, set it to 'Unknown Album'" >&2
  73. ALBUM="Unknown Album"
  74. fi
  75.  
  76. if [ -z "$TITLE" ]
  77. then
  78. echo "Track $i: Can not obtain track from cue, set it to 'Track $i'" >&2
  79. TITLE="Track $i"
  80. fi
  81.  
  82. ## End
  83.  
  84. # Split and encoding files
  85. echo "Encoding track $i/$NUMTRACKS."
  86. if [ "$FMT" = "mp3" -o "$FMT" = "MP3" ]
  87. then
  88. cuebreakpoints "$SPLIT"| shnsplit -q -o "cust ext=mp3 lame $LAMEOPTS - %f" \
  89. -x $i -O always -a "" -z " - $TITLE" "$FILE"
  90. OUTPUT=`printf "%.2d - ${TITLE}.mp3" $i`
  91. id3v2 -T $i -a "$PERFORMER" -A "$ALBUM" -t "$TITLE" "$OUTPUT"
  92. fi
  93.  
  94. if [ "$FMT" = "ogg" -o "$FMT" = "OGG" ]
  95. then
  96. cuebreakpoints "$SPLIT"|shnsplit -q -o "cust ext=ogg oggenc $OGGOPTS -o %f -" \
  97. -x $i -O always -a "" -z " - $TITLE" "$FILE"
  98. OUTPUT=`printf "%.2d - ${TITLE}.ogg" $i`
  99. echo -e "TRACKNUMBER=${i}\nARTIST=${PERFORMER}\nPERFORMER=${PERFORMER}" \
  100. "\nALBUM=${ALBUM}\nTITLE=${TITLE}\n"|vorbiscomment "$OUTPUT"
  101. fi
  102.  
  103. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement