X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/890a5921fe12b21fbc65d88a0e59080dc8cc9a5b..32851f8a26bc6a015c5ea215330cc1ea0c743608:/fa-rip diff --git a/fa-rip b/fa-rip index 55b2fb2..4755822 100755 --- a/fa-rip +++ b/fa-rip @@ -3,12 +3,15 @@ # $Id$ set -e -setopt NULL_GLOB -get_cddev () { - local raw +function get_cddev { + typeset raw raw=$(sysctl -n kern.rawpartition > /dev/null | awk '{printf "%c",97+$0}') + if [[ -n ${ZSH_VERSION} ]]; then + setopt NULL_GLOB + fi + for CDDEV in /dev/{cdroms/cdrom*,cdrom*,rcd*${raw},{a,}cd*c}; do [[ -e ${CDDEV} ]] && return 0 done @@ -16,21 +19,42 @@ get_cddev () { return 1 } +trackcount= +while getopts 'd:t:' ch; do + case ${ch} in + d) + CDDEV=${OPTARG} + export CDDEV + ;; + t) + trackcount=${OPTARG} + ;; + ?) + echo 'fa-rip [-t track-count]' >&2 + exit 2 + ;; + esac +done +shift $((${OPTIND} - 1)) + if [[ -z ${CDDEV} ]]; then if ! get_cddev; then - echo 'CDDEV environment variable not set, defaults did not work' + echo 'CDDEV environment variable not set, defaults did not work' >&2 exit 2 fi + export CDDEV fi -discid=($(cd-discid ${CDDEV})) +dir=$(mktemp -d flac-archive.XXXXXXXXXX) +cd ${dir} -[[ -d $discid[1] ]] || mkdir $discid[1] -cd $discid[1] - -eval fa-tags $discid & +if [[ -z ${trackcount} ]]; then + mkcue ${CDDEV} > cue + trackcount=$(grep -c 'TRACK.*AUDIO' cue) +else + mkcue -t ${trackcount} ${CDDEV} > cue +fi -cdrdao read-toc --device ${CDDEV} --driver generic-mmc toc -toc2cue toc cue & +fa-tags ${trackcount} -exec cdparanoia -d ${CDDEV} 1-$discid[2] wav +exec cdparanoia -d ${CDDEV} 1-${trackcount} wav