Перекодирование одиночного аудиофайла (APE, WAV, FLAC) во FLAC по CUE-таблице
Скрипт для преобразования одиночного файла, представляющего собой копию диска в отдельные FLAC-файлы с заполнением тегов и именованием файлов в соответствии с CUE-таблицой
- Работает с файлами в формате APE, WavPack, FLAC, WAV
- В случае отсутствия CUE-файла просто конвертирует входной файл во FLAC
- Конвертирует CUE с национальными символами в utf-8 с использованием enca (автоматически определяет кодировку)
- Заполняет теги в выходных файлах из CUE
- Умеет экспортировать CUE, встроенный во FLAC-файл, после чего делает нарезку/заполнение тегов по этому CUE (если принудительно не указан внешний файл)
- Автоматически определяет тип файла по MIME-type
- Может обрабатывать входной файл двумя способами – стандартными утилитами для каждого формата (опция direct=0) с последующей нарезкой и напрямую средствами shnsplit (кроме формата WavPack, он в любом случае сначала конвертируется в WAV).
Использование
anycue2flac «AUDIO FILE.ape» «TEXT FILE.cue»
Зависимости
flac, shntool, cuetools, enca, monkeys-audio, wavpack (в зависимости от того, с какими файлами надо будет работать)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #!/bin/bash # By Rain ;) # Usage: anycue2flac "AUDIO FILE.ape" "TEXT FILE.cue" # Depends on flac, if needed - shntool, cuetools, enca, monkeys-audio, wavpack outdir='output' direct='1' error() { echo -e "\e[31m${1}\e[0m" exit $2 } test $(which flac) || error "Error: FLAC convertor not found" 1 if [ ! -z "${2}" ]; then test $(which shnsplit) || error "Please, install shntool first" 1 test $(which enconv) || error "Please, install enca first" 1 test $(which cuetag) || error "Please, install cuetools first" 1 cuefile="${2}" else if [[ "$(file -b "${1}")" =~ "FLAC audio" ]]; then if [ "$(metaflac --list "${1}" | grep -qi cuesheet && echo 1)" ]; then echo "Founded build-in CUE-sheet, extracting..." metaflac "${1}" --export-tags-to=- | sed -e 's/CUESHEET=//g' -n -e '/^ *$/,//!p' > "${1%.*}.cue" cuefile="${1%.*}.cue" else echo "CUE-sheet not specified, so we simply convert ${1} to FLAC format" direct='0' fi fi fi if [[ "$(file -b "${1}")" =~ "Monkey's Audio" ]]; then test $(which mac) || error "Error: Monkey Audio convertor not found" 1 elif [ "${1##*.}" == 'wv' ]; then test $(which wvunpack) || error "Error: WavPack decompressor not found" 1 fi [ -e $outdir ] && echo "Warning: $outdir already exist" || echo "Creating output directory" mkdir -p "$outdir" tempfile="$(date +tempfile.%s)" if [ "${direct}" == '0' ]; then if [[ "$(file -b "${1}")" =~ "Monkey's Audio" ]]; then echo "Converting "$1" from APE to WAV-format" mac "$1" "${outdir}/${tempfile}.wav" -d elif [[ "$(file -b "${1}")" =~ "FLAC audio" ]]; then echo "Converting "$1" from FLAC to WAV-format" flac -d "${1}" -o "${outdir}/${tempfile}.wav" elif [[ "$(file -b "${1}")" =~ "WAVE audio" ]]; then echo "Ok, ${1} ready to splitting, linking to ${outdir}" ln "${1}" "${outdir}/${tempfile}.wav" elif [ "${1##*.}" == 'wv' ]; then echo "Converting "$1" from WavPack to WAV-format" wvunpack -m "${1}" mv "${1%.*}.wav" "${outdir}/${tempfile}.wav" else error "Can't recognize input file format" 1 fi else if [ "${1##*.}" == 'wv' ]; then echo "Converting "$1" from WavPack to WAV-format" wvunpack -m "${1}" mv "${1%.*}.wav" "${outdir}/${tempfile}.wav" else ln "${1}" "${outdir}/${tempfile}.${1##*.}" fi fi cd "${outdir}" if [ -z "${cuefile}" ]; then echo "Converting "${1}" to FLAC" flac --delete-input-file --best -V "${tempfile}.wav" -o "${1%.*}.flac" else # Converting CUE-sheet cat ../"${cuefile}" | enconv > "${cuefile}" echo "Splitting "${1}" to multiple FLAC files" cat "${cuefile}" | shnsplit -o 'flac ext=flac flac --best -V - -o %f' -t %n-%p-%a-%t "${tempfile}"* rm -f "${tempfile}"* echo "Tagging files" cuetag "${cuefile}" *.flac fi exit 0 |
Тэги: ape, bash, Console, cue, flac, music, wav
Эта запись была оставлена Пятница, июня 12, 2009 в 20:01 и относится к категориям: Console, Scripts.
Вы можете отслеживать комментарии по RSS 2.0 ленте.
Вы можете оставить комментарий или trackback с Вашего сайта.
GNU/Linux Ubuntu Funs