Музыка → Разбиваем .cue
Вам наверняка знакома ситуация, когда ваш любимый плеер не поддерживает .cue, а послушать что-нибудь в Lossless хочется…
Раньше я писал это в комментах, а теперь решил написать топиком, вдруг кому-нибудь понадобится?
Для этого мною был написан скрипт, который разрежет .flac на части в соответствии с .cue. Для .ape скрипт лежит немного ниже. Что бы не гемориться можно добавить скрипт в ваш файловый менеджер
Подробности в комментариях к коду.
Flac:
Ape:
Раньше я писал это в комментах, а теперь решил написать топиком, вдруг кому-нибудь понадобится?
Для этого мною был написан скрипт, который разрежет .flac на части в соответствии с .cue. Для .ape скрипт лежит немного ниже. Что бы не гемориться можно добавить скрипт в ваш файловый менеджер
Подробности в комментариях к коду.
Flac:
#!/bin/bash
# ********************************************
# Скрипт для разбития целого .flac по трекам с помощью .cue
# Внимание, сносит исходные файлы (см. последние строчки)!
# Юсэйдж : cuesplit [.flac] [.cue] [исходная кодировка .cue]
# Файлы должны быть записаны в виде In\ Flames\ -\ Come\ Clarity
# Т.е. перед пробелом ставить бэкслэш
# Если ничего не указано, то будет использоваться первые попавшиеся .cue и .flac в папке и кодировка cp1251.
# Нужны пакеты flac, recode, shntool и cuetools
# ********************************************
# ********************************************
# Задаём переменные
# ********************************************
varfile=$1;
varcue=$2;
codepage=$3;
# ********************************************
# Если аргумент $1 и $2 не указан, то выбирается первый .cue и .flac в папке
# ********************************************
if [ -z "$varfile" ] ; then varfile="*.flac"; fi
if [ -z "$varcue" ] ; then varcue="*.cue"; fi
# ********************************************
# Если аргумент $3 не указан, то кодировка cp1251
# ********************************************
if [ -z "$codepage" ] ; then codepage="cp1251"; fi
# ********************************************
# Удаляем .wav.cue
# ********************************************
# rm -rf *.wav.cue
# ********************************************
# Переименовываем файлы в temp.flac и temp.cue
# ********************************************
mv ${varfile} temp.flac
mv ${varcue} temp.cue
# ********************************************
# Разбиваем флак
# ********************************************
cuebreakpoints "temp.cue" | shnsplit -o flac "temp.flac";
cuetag "temp.cue" split-track*.flac;
# rename 's/\ /_/g' temp.{flac,cue};
# ********************************************
# Меняем кодировку
# ********************************************
recode ${codepage}..utf-8 temp.cue;
# ********************************************
# Вставляем теги
# ********************************************
cuetag temp.cue split*.flac;
# ********************************************
# Переименовываем файлы
# ********************************************
recode utf-8..${LANG#ru_RU.} temp.cue;
let a=1;
for b in split*.flac; do
mv "$b" "$(printf '%.2d - %s\n' "$(cueprint -t %n -n $a temp.cue )" \
"$(cueprint -t %t -n $a temp.cue)").flac";
let a=$a+1;
done;
# ********************************************
# Сносим цельный .flac и .cue нафиг
# ********************************************
rm -rf temp.{flac,cue};
Ape:
#!/bin/bash
# ********************************************
# Скрипт для разбития целого .ape по трекам с помощью .cue
# Внимание, сносит исходные файлы (см. последние строчки)!
# Юсэйдж : cuesplit [.ape] [.cue] [исходная кодировка .cue]
# Файлы должны быть записаны в виде In\ Flames\ -\ Come\ Clarity
# Т.е. перед пробелом ставить бэкслэш
# Если ничего не указано, то будет использоваться первые попавшиеся .cue и .ape в папке и кодировка cp1251.
# Нужны пакеты mac, recode, shntool и cuetools
# ********************************************
# ********************************************
# Задаём переменные
# ********************************************
varfile=$1;
varcue=$2;
codepage=$3;
# ********************************************
# Если аргумент $1 и $2 не указан, то выбирается первый .cue и .ape в папке
# ********************************************
if [ -z "$varfile" ] ; then varfile="*.ape"; fi
if [ -z "$varcue" ] ; then varcue="*.cue"; fi
# ********************************************
# Если аргумент $3 не указан, то кодировка cp1251
# ********************************************
if [ -z "$codepage" ] ; then codepage="cp1251"; fi
# ********************************************
# Удаляем .wav.cue
# ********************************************
# rm -rf *.wav.cue
# ********************************************
# Переименовываем файлы в temp.ape и temp.cue
# ********************************************
mv ${varfile} temp.ape
mv ${varcue} temp.cue
# ********************************************
# Разбиваем ape
# ********************************************
cuebreakpoints "temp.cue" | shnsplit -o ape "temp.ape";
cuetag "temp.cue" split-track*.ape;
# rename 's/\ /_/g' temp.{ape,cue};
# ********************************************
# Меняем кодировку
# ********************************************
recode ${codepage}..utf-8 temp.cue;
# ********************************************
# Вставляем теги
# ********************************************
cuetag temp.cue split*.ape;
# ********************************************
# Переименовываем файлы
# ********************************************
recode utf-8..${LANG#ru_RU.} temp.cue;
let a=1;
for b in split*.ape; do
mv "$b" "$(printf '%.2d - %s\n' "$(cueprint -t %n -n $a temp.cue )" \
"$(cueprint -t %t -n $a temp.cue)").ape";
let a=$a+1;
done;
# ********************************************
# Сносим цельный .ape и .cue нафиг
# ********************************************
rm -rf temp.{ape,cue};
- +10
- freeman85
- 11 июня 2009, 16:43
В скрипте freeman85 точно так же происходит повторное пересжатие, но внутри shnsplit. Да и сходу не очевидно, что для shnsplit требуется все тот же mac, который не имеет адекватной лицензии.
Конечно, никто не запрещает скачать исходники и собрать. В некоторых дистрибутивах mac даже включен в репозиторий… Но все это как-то не тру.
Хотя, зачем пытаться резать ape без mac, если его все равно играть нечем… :)
// Как раз решил добавить на страницу примерный фичлист :)
выберет не первый, а все файлы. Иногда попадаются раздачи, в которых, например, в одном альбоме 2 диска и оба лежат (2 CUE и 2 APE) в одном каталоге.
Для этого после этих строк я прописал строку удаления одного такого файла, потом закоментировал, что бы в глаза не бросалось
# rm -rf *.wav.cue
1) файл (ape/flac) распаковывается обратно в wav
2) cue правится, чтобы указывал на wav-файл (иногда этого не требуется)
3) cue монтируется в виртуальный оптический привод
4) с привода аудиодороги рипаются тривиально (CDex)
Но вообще, правильно сказал.
P.S. Какие тэги Фубар выставляет при конверсии?
К сожалению, фубар настолько проприетарный, что автор даже некоторые части sdk не хочет опубликовать. В плагине ASIO есть одна очень раздражающая недоработка, и, сколько не просили ее исправить, воз и ныне там… а новый написать невозможно, т.к. нет sdk на эту тему.
Из 111.ape в 111.flac
ffmpeg -i 111.ape -acodec flac 111.flac
Разбивка 111.flac, используя инфу из 111.cue
cuebreakpoints 111.cue | shnsplit -o flac 111.flac
Перенос инфы из 111.cue в тэги flac
cuetag 111.cue split-track*.flac
Ибо «обезьянкин» формат в Linux'е ИМХО скоро совсем загнётся…