На торрент-трекерах часто выкладывают очень хорошую музыку в lossless, причем именно в виде APE + CUE. Все бы ничего, но
В итоге появилась необходимость преобразовать APE+CUE во что-то более удобоиграемое с сохранением метаинформации. Как ни странно, но в гугле быстро найтись нужного не удалось: скрипт то просто не работает, то некорректно обрабатывает апострофы «'» в тегах. В итоге пришлось написать два скрипта для преобразования в vorbis и во FLAC.
Для работы необходимы: mac, shntool, cuetools, vorbis-tools или flac.
Первый скрипт преобразует APE+CUE в ворбис треки с копированием метаинформации из cue-файла. Преобразование происходит в текущей директории с созданием промежуточных wav-файлов, которые удаляются по мере конвертации.
Вариация на тему FLAC tracks (без промежуточных wav, спасибо shntool):
Использование:
или
P. S. cueprint в моем дистрибутиве почему-то некорректно обрабатывает GENRE, поэтому его пришлось выдирать sed'ом.
- lossless в плеере — это перебор; к тому же плеер с поддердкой lossless еще надо купить
- с проигрыванием CUE в линуксе у многих плееров имеются проблемы
В итоге появилась необходимость преобразовать APE+CUE во что-то более удобоиграемое с сохранением метаинформации. Как ни странно, но в гугле быстро найтись нужного не удалось: скрипт то просто не работает, то некорректно обрабатывает апострофы «'» в тегах. В итоге пришлось написать два скрипта для преобразования в vorbis и во FLAC.
Для работы необходимы: mac, shntool, cuetools, vorbis-tools или flac.
Vorbis
Первый скрипт преобразует APE+CUE в ворбис треки с копированием метаинформации из cue-файла. Преобразование происходит в текущей директории с созданием промежуточных wav-файлов, которые удаляются по мере конвертации.
#! /bin/bash
APE="$1"
CUE="$2"
QUALITY=6
cuebreakpoints "${CUE}" | shnsplit -o wav "${APE}" || exit 1
GENRE="$(sed -nre 's/^REM GENRE ([^\r]*)$/\1/p' "${CUE}")"
for i in `seq -f %02g $(cueprint -d '%N' "${CUE}")`;
do
in="split-track$i.wav"
out="$i - $(cueprint -t "%t" -n$i "${CUE}" | sed -e 's:/: :g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//').ogg"
oggenc -q$QUALITY "${in}" -o "${out}"
cueprint -t "ALBUM=%T\nARTIST=%p\nDATE=1999\nGENRE=${GENRE}\nTOTALTRACKS=%N\nTRACKNUMBER=%n\nTITLE=%t\n" -n$i "${CUE}" \
| vorbiscomment -w -c /dev/stdin "${out}"
rm -f "${in}"
done
FLAC
Вариация на тему FLAC tracks (без промежуточных wav, спасибо shntool):
#! /bin/bash
APE="$1"
CUE="$2"
cuebreakpoints "${CUE}" | shnsplit -o flac "${APE}" || exit 1
GENRE="$(sed -nre 's/^REM GENRE ([^\r]*)$/\1/p' "${CUE}")"
for i in `seq -f %02g $(cueprint -d '%N' "${CUE}")`;
do
in="split-track$i.flac"
out="$i - $(cueprint -t "%t" -n$i "${CUE}" | sed -e 's:/: :g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//').flac"
cueprint -t "ALBUM=%T\nARTIST=%p\nDATE=1999\nGENRE=${GENRE}\nTOTALTRACKS=%N\nTRACKNUMBER=%n\nTITLE=%t\n" -n$i "${CUE}" \
| metaflac --remove-all-tags --import-tags-from=- "${in}"
mv -f "${in}" "${out}"
done
Использование:
ape2vorbis file.ape file.cue
или
ape2flac file.ape file.cue
P. S. cueprint в моем дистрибутиве почему-то некорректно обрабатывает GENRE, поэтому его пришлось выдирать sed'ом.