add mp3chop.sh
[cmccabe-bin] / mp3chop.sh
1 #!/usr/bin/env bash
2
3 die() {
4     echo $@
5     exit 1
6 }
7
8 usage() {
9     cat <<EOF
10 mp3chop.sh: divide up mp3s into managable pieces.
11
12 usage: mp3chop.sh: [options] <mp3 names>
13
14 options:
15 -h:           show this help message.
16 -o [dir]:     output directory to use.
17 -s [size]:    segment size to use (default: 5minutes).
18 EOF
19 }
20
21 which mp3splt &> /dev/null || die "you must have mp3splt installed"
22
23 segment_size=5.0
24 output_dir="./out"
25 while getopts  "ho:s:" flag; do
26     case $flag in
27     h)  usage; exit 0;;
28     o)  output_dir=$OPTARG;;
29     s) segment_size=$OPTARG;;
30     *)  echo "getopts error"
31         echo
32         usage
33         exit 1;;
34     esac
35     #echo "$flag" $OPTIND $OPTARG
36 done
37
38 shift $(( OPTIND-1 ))
39
40 mkdir -p "$output_dir" || die "failed to create $output_dir"
41
42 for file in "$@"; do
43     absfile="$(readlink -f "${file}")"
44     mkdir -p "${output_dir}/${file}.dir"
45     pushd "${output_dir}/${file}.dir" &>/dev/null \
46         || die "failed to pushd to ${output_dir}/file"
47     ln "$absfile" || die "failed to hardlink ${absfile}"
48     mp3splt -t "${segment_size}" "${file}" \
49         || die "mp3splt failed on file ${file}"
50     rm -f "$file"
51     mv * ..
52     cd ..
53     rmdir "${file}.dir" || die "rmdir ${file}.dir failed"
54     popd &> /dev/null || die "popd failed"
55 done
56
57 echo "*** SUCCESSFULLY SPLIT ALL ***"