Якщо ви качаєте музику з інтернету та ще й у форматі lossless (flac, ape, wv тощо), тоді мабудь неодноразово стикалися з таким явищем як нероздільні музичні образи дисків з доданим .cue файлом. Чим вони кращі чи гірші від окремих файлів на кожну композицію - це питання дискусійне, але особисто мене такий варіант завжди напружував. І якщо у вінді прослухати такий файл досить просто за допомогою того ж foobar2000, або легко розбити на окремі файла за допомогою купи утиліт, то у лінуксі з цим свої маленькі заморочки.
ГІК-утиліт (*графічний інтерфейс користувача, GUI) я поки так і не знайшов, але ІКР-утиліти (*інтерфейс командного рядка, CLI) до ваших послуг. Сам процес складається з трьох кроків:
- скачати і встановити всі необхідні кодери-декодери (flac, ape, wavpack тощо);
- скачати і встановити пакети “shntool” та “cuetools”;
- створити і запустити в папці з музичним образом і .cue-файлом файл-сценарій (*script) з наступним вмістом.
#!/bin/bash
# split image file (flac, ape, wav, etc.) according to cue-file
if [ -f "$1" ]; then
i=0
for cuefile in *.cue; do
i=$(($i + 1))
done
if [ $i -eq 1 ]; then
# precies 1 cuesheet gevonden
if grep -q "INDEX 01 00:00:00" *.cue ; then
nice shntool split -t "%n %t" -f *.cue "$1"
else
echo "The first track has a pre-gap. Shntool will cut that off and put it in a seperate file."
echo "You don't want that. Please modify the cuesheet from:"
grep -m1 "INDEX 00" *.cue
grep -m1 "INDEX 01" *.cue
echo "to:"
echo " INDEX 01 00:00:00"
exit 1
fi
elif [ $i -eq 0 ]; then
echo "No cuesheet found in the current directory."
exit 1
elif [ $i -gt 1 ]; then
echo "$i cuesheets found in the current directory. Please remove the superfluous cuesheets."
exit 1
fi
else
echo "Split image file (flac, ape, wav, etc.) according to cue-file."
echo "Output files are in FLAC."
echo "Usage: `basename $0` "
exit 1
fi
echo
album=`grep -m 1 TITLE *.cue | cut -d\" -f2`
artist=`grep -m 1 PERFORMER *.cue | cut -d\" -f2`
for file in [0-9]*.wav; do
echo "Encoding $file"
if [[ ${file:0:1} == 0 ]] ; then
tracknr=${file:1:1}
else
tracknr=${file:0:2}
fi
title=`echo ${file:2} | sed -e "s/.wav$//"`
nice flac -s -T "artist=$artist" -T "album=$album" -T "title=$title" \
-T "tracknumber=$tracknr" "$file" && rm "$file"
done
Звісно, запускати його треба в консолі, давши перед тим права на запуск. В принципі, нічого складного у цьому немає, але й надто дружнім для лінукс-початківців такі танці з бубном не назвеш. Ну, але що поробиш...
Кому цікаво почитати ще на цю тему, і особливо зрозуміти як це діло працює - читайте
тут. Сам код сценарію почерпнуто
ось тут. Насолоджуйтеся.