Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Script that will convert a lot of audio formats to MP3 via the commandline.
- # Dependencies: MPlayer, mutagen and lame (It should accept every format that both mutagen and Mplayer accept).
- # mp3ify <input_dir> [<output_dir>] transforms structure <input_dir>/X/Y/.../Z into structure <output_dir>/X/Y/.../Z according to the following rules:
- # * flac, ogg, m4a, ape, aac, mpc files will be encoded to mp3 preserving tags.
- # * Everything else will be copied without modification.
- # Default output_dir is /tmp/mp3ify.
- # lame settings fine-tunning is done editing the configuration variables here below.
- DEFAULT_OUTPUT_DIR=/tmp/mp3ify
- QUALITY=2
- VBR_QUALITY=4
- MIN_BITRATE=64
- MAX_BITRATE=256
- SAMPLE_FREQ=44.1
- function any_to_mp3 {
- PIPE=`mktemp -u -t mp3ify.pipe.XXXXXX`
- mkfifo "$PIPE"
- mplayer -nocorrect-pts -vo null -vc null -ao pcm:fast:file="$PIPE" "$INPUT_FILE" -noconsolecontrols > /dev/null 2>&1 &
- lame -m j -q $QUALITY -v -V $VBR_QUALITY -b $MIN_BITRATE \
- -B $MAX_BITRATE -s $SAMPLE_FREQ "$PIPE" "$OUTPUT_FILE" > /dev/null 2>&1
- rm "$PIPE"
- python -c "
- import mutagen
- input = mutagen.File(\"$INPUT_FILE\", easy = True)
- output = mutagen.File(\"$OUTPUT_FILE\", easy = True)
- for tag in [ 'artist', 'album', 'tracknumber', 'date', 'genre', 'title', 'comment' ]:
- value = input.get(tag)
- if value: output[tag] = value[0]
- output.save(v1=2)"
- }
- function usage {
- echo "mp3ify <input_dir> [<output_dir>]
- Transforms structure <input_dir>/X/Y/.../Z into structure <output_dir>/X/Y/.../Z
- according to the following rules:
- flac, ogg, m4a, ape, aac, mpc files will be encoded to mp3 preserving tags.
- Everything else will be copied without modification.
- Requires: mplayer, lame, mutagen.
- "
- exit 1
- }
- INPUT_DIR="$1"
- [ -d "$INPUT_DIR" ] || usage
- OUTPUT_DIR="${2:-$DEFAULT_OUTPUT_DIR}"
- find "$INPUT_DIR" -name '*.*' | while read INPUT_FILE
- do
- INPUT_EXTENSION="${INPUT_FILE##*.}"
- INPUT_EXTENSION_LOWERCASE=`echo $INPUT_EXTENSION | tr "[A-Z]" "[a-z]"`
- OUTPUT_FILE="$OUTPUT_DIR/${INPUT_FILE#$INPUT_DIR}"
- mkdir -p "`dirname "$OUTPUT_FILE"`"
- case $INPUT_EXTENSION_LOWERCASE in
- flv|flac|m4a|ogg|ape|aac|mpc|mp4|wav)
- OUTPUT_FILE="${OUTPUT_FILE%.$INPUT_EXTENSION}.mp3"
- echo -n "Converting ${INPUT_FILE##*/}... "
- any_to_mp3
- ;;
- *)
- echo -n "Copying ${INPUT_FILE##*/}... "
- cp "$INPUT_FILE" "$OUTPUT_FILE"
- ;;
- esac
- echo "done."
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement