Упаковываем cuesheet внутрь FLAC с помощью flacpack

Jazz

Опубликован:
2025-01-16T02:18:38.418952Z
Отредактирован:
2025-01-16T02:18:38.418952Z
Статус:
публичный
18
0
0

Как известно, цельные lossless CDDA-рипы обычно представлены двумя обязательными файлами. Один из этих файлов является текстовым и хранит необходимую информацию о метаданных рипа и индексы разметки треков, а второй — это медиа файл одного из lossless форматов. Увы, но два файла хранить не очень удобно, нередки ситуации, когда при обмене файлами в сети текстовый файл с cuesheet теряется. В этой демонстрации я покажу, как очень легко и просто упаковать cuesheet внутрь FLAC файла, и как впоследствии эти данные из FLAC файла так же легко и просто извлечь. Все действия в этой демонстрации выполнены под управлением операционной системы с Linux, а именно — Debian sid.

Метаданные FLAC

Формат FLAC включает в себя метаданные в формате VorbisComment, и будет вполне логично упаковать сопутствующий cuesheet внутрь файла FLAC, в этом случае его можно будет без особых усилий восстановить впоследствии, в случае утери файла с расширением .cue. Потерять такой файл достаточно просто, обычно это случается при обмене файлами в различных файлообменных сетях, но, если cuesheet вшит внутри FLAC, то его без труда можно будет восстановить одной простой командой.

Для правки метаданных файлов FLAC предназначена специальная программа — metaflac, которая поставляется в составе пакета. Конечные пользователи обычно не любят и всеми возможностями избегают пользоваться ей, она имеет интерфейс командной строки, такой программой обычно не очень-то просто воспользоваться. Специально для обозначенной выше цели я придумал и разработал программу flacpack, по этой короткой ссылке можно найти её исходный код. Она и поможет мне справиться с поставленной задачей на раз-два.

Установка flacpack

Программа разработана на базе операционной системы Debian и протестирована на всех его актуальных ветках: stable, testing и sid. Её можно без труда запустить на всех deb-совместимых операционных системах, на любой операционной системе с Linux. Программа написана на современном языке программирования Python, распространяется в открытом коде и может быть использована всеми желающими в соответствии с GNU GPLv3.

Поскольку исходник flacpack можно найти только на github.com, проще всего программу можно установить с помощью Git, он должен быть установлен в систему. Если ещё нет, то установить Git в deb-совместимых системах можно при помощи пакетного менеджера apt следующей командой.

$ sudo apt install git

У flacpack есть две зависимости, обе являются модулями языка программирования Python:

  • python3-chardet — библиотека для определения кодировки текстовых файлов;

  • python3-mutagen — библиотека для управления метаданными популярных ныне audio форматов, в том числе, FLAC.

Установить обе зависимости в deb-совместимых операционных системах можно с помощью всё того же пакетного менеджера apt.

$ sudo apt install python3-chardet python3-mutagen

Установить flacpack можно в любой каталог, в том числе и в домашний каталог текущего пользователя. Обычно принято сторонние программы устанавливать в системный каталог /opt. Открываю терминал и в его окне вхожу в этот системный каталог.

$ cd /opt

Работа в системном каталоге /opt требует прав суперпользователя, поэтому следующая команда будет исполнена с использованием sudo, она скопирует исходный код flacpack в текущий рабочий каталог.

$ sudo git clone https://github.com/jazz4web/flacpack.git

pswyOTeFPe.png

На снимке экрана выше видно, что после исполнения предложенной команды внутри системного каталога /opt появился вложенный каталог с именем flacpack. Запуск программы хочется осуществлять простой и лаконичной командой, для этого достаточно создать символическую ссылку на исполняемый файл falcpack.py в системный каталог /usr/local/bin.

$ sudo ln -s -T /opt/flacpack/flacpack.py /usr/local/bin/flacpack

Сразу после этого flacpack становится доступен для использования в командной строке терминала, встроенную в программу справку можно посмотреть следующей командой.

$ flacpack -h

79J0rSuGEX.png

Программа установлена и готова к использованию по назначению.

Упаковываем cuesheet внутрь файла FLAC

В моём распоряжении есть цельный CDDA-рип в формате FLAC загруженный с одного из файлообменных ресурсов сети специально для этой демонстрации. В самом общем случае такой рип представлен двумя одноимёнными файлами, отличающимися только расширением. В составе рипа могут быть и другие файлы, но они не обязательны для прослушивания или записи рипа на CD. Вот как этот рип выглядит в окне моего файлового менеджера.

UyEFSneTxJ.png

На снимке экрана выше следует обратить внимание на значок файла с расширением .flac. В составе рипа есть картинка — файл с именем folder.jpg. Содержимое файла с расширением .cue упаковать внутрь файла FLAC с помощью flacpack можно следующей командой.

$ flacpack -p folder.jpg image.flac

Ключ -p задаёт имя файла с картинкой и не обязателен, его использование добавит в файл FLAC кроме cuesheet ещё и картинку. Внимание на следующий снимок экрана...

o9Cq6SK253.png

Как видно на снимке экрана, в результате исполнения предложенной команды значок файла с расширением .flac изменил свой внешний вид, а в метаданных этого файла появился тег cuesheet, в котором теперь хранится копия файла .cue.

Важное замечание: файл изображения folder.jpg должен лежать в одном каталоге с CDDA-рипом, в команде можно задать только имя файла, поддерживаются только изображения в формате JPEG.

Восстанавливаем cuesheet из файла FLAC

Как видно из представленных выше действий, упаковать cuesheet и картинку внутрь FLAC с помощью flacpack оказалось достаточно просто. Допустим, что по каким-то неведомым причинам я потерял файл с расширением .cue и файл с изображением, удаляю оба файла из файловой системы своего компьютера. И у меня есть хорошая новость... Катастрофы не случилось, чтобы восстановить утерянное достаточно набрать в командной строке следующую команду.

$ flacpack image.flac

dIZYq7pp0V.png

Жму enter и наблюдаю следующую картину, внимание на следующий снимок экрана.

7uKcKZ73al.png

Оба утерянных файла после исполнения предложенной самой простой команды успешно восстановлены в прежнем виде. Давайте посмотрим на кодировку файла с расширением .cue.

$ uchardet image.cue

Zj0i5z7Nbz.png

Этот файл восстановлен в кодовой странице UTF-8, хотя исходный файл CUE имел кодировку windows-1251.

Выводы

Хранить cuesheet внутри файла FLAC выгодно и удобно ещё и потому, что многие современные плееры умеют читать метаданные FLAC и, если внутри есть тег cuesheet, такой плеер разметит свой плейлист в соответствии хранящимися в этом теге данными даже без файла CUE.

Файл CUE в CDDA-рипе является его неотъемлемой частью, скромной, но вездесущей тенью. С потерей CUE становятся невозможными создание потрекового плейлиста и запись рипа на CD, поэтому копия cuesheet в метаданных файла FLAC делает хранение рипа более рациональным и защищённым.

При помощи flacpack довольно легко можно упаковать cuesheet внутрь FLAC файла, а впоследствии, если файл CUE будет утерян, его можно так же просто восстановить.

Метки: