МузыкаРазбиваем .cue

Вам наверняка знакома ситуация, когда ваш любимый плеер не поддерживает .cue, а послушать что-нибудь в Lossless хочется…
Раньше я писал это в комментах, а теперь решил написать топиком, вдруг кому-нибудь понадобится?
Для этого мною был написан скрипт, который разрежет .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};

Комментарии (13)

  • avatar
  • SPU
  • 11 июня 2009, 20:26
  • #
  • 1
Какой-то сомнительный заголовок :) cue то зачем разбивать? :)
Скрипт по ссылке лучше тем, что он в итоге выдает flac :)

В скрипте freeman85 точно так же происходит повторное пересжатие, но внутри shnsplit. Да и сходу не очевидно, что для shnsplit требуется все тот же mac, который не имеет адекватной лицензии.
Конечно, никто не запрещает скачать исходники и собрать. В некоторых дистрибутивах mac даже включен в репозиторий… Но все это как-то не тру.
Хотя, зачем пытаться резать ape без mac, если его все равно играть нечем… :)
У меня скрипт сначала начинался как резалка APE+CUE -> FLAC, так как APE играть можно мало чем, да и коллекция вся во FLAC'e. Сейчас он уже работает с разными форматами и оброс некоторыми дополнительными функциями.

// Как раз решил добавить на страницу примерный фичлист :)
Да, кстати, по скрипту:
# Если аргумент $1 и $2 не указан, то выбирается первый .cue и .ape в папке
# ********************************************
if [ -z "$varfile" ]  ; then varfile="*.ape"; fi
if [ -z "$varcue" ]  ; then varcue="*.cue"; fi

выберет не первый, а все файлы. Иногда попадаются раздачи, в которых, например, в одном альбоме 2 диска и оба лежат (2 CUE и 2 APE) в одном каталоге.
Это и имелось ввиду, просто с пьяни, так сказать =)
Для этого после этих строк я прописал строку удаления одного такого файла, потом закоментировал, что бы в глаза не бросалось
# rm -rf *.wav.cue
  • avatar
  • LRN
  • 12 июня 2009, 08:31
  • #
  • 1
Как это всё делается под Виндой. Без скриптов, исключительно с помощью гуёвых программ:
1) файл (ape/flac) распаковывается обратно в wav
2) cue правится, чтобы указывал на wav-файл (иногда этого не требуется)
3) cue монтируется в виртуальный оптический привод
4) с привода аудиодороги рипаются тривиально (CDex)
Ставлю плюс, но стараюсь как можно меньше для таких целей юзать гуй, зашёл в любимый файловый менеджер, настроил особые действия, кликнул правой кнопкой мыши, выбрал нужный пункт и всё готов.
Зачем такой изврат, если можно просто открыть cue в foobar2000 и конвертнуть все получившиеся треки в какой угодно формат.
Фубар — проприетарный :) И конвертит не в какой угодно формат (хотя FLAC поддерживается, да).
Но вообще, правильно сказал.

P.S. Какие тэги Фубар выставляет при конверсии?
Насколько я помню, foobar2000 прописывает каждому треку то, что содержалось в cue. Т.е. как он информацию по трекам в плейлист загрузил, так в теги ее и сохранит.
К сожалению, фубар настолько проприетарный, что автор даже некоторые части sdk не хочет опубликовать. В плагине ASIO есть одна очень раздражающая недоработка, и, сколько не просили ее исправить, воз и ныне там… а новый написать невозможно, т.к. нет sdk на эту тему.
А я перегоняю monkey во flac через ffmpeg:

Из 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'е ИМХО скоро совсем загнётся…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.