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

prolinux

Опубликован:  2023-08-28T04:34:08.349852Z
Отредактирован:  2023-08-28T04:34:08.349852Z
Статус:  публичный
13
0
0

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

О задаче

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

  1. Текстовый файл с разметкой cuesheet, обычно имеет расширение .cue;

  2. Медиа файл одного из lossless форматов: FLAC, WavPack, Monkey's Audio etc.

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

EPQ7rLmAwa.png

Как видно, оба файла имеют совпадающие до знака имена и отличаются только расширениями. Третий файл, в данном случае это folder.jpg, - изображение обложки диска, он может отсутствовать или иметь любое другое имя. Как правило к рипу прикладывается ещё один текстовый файл, в котором хранится лог извлечения программой EAC, но он обязателен только для раздачи на торрент-трекерах, как доказательство подлинности рипа, и в обычной хомячковой жизни не требуется.

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

Необходимые инструменты

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

Установить flacpack на Debian очень легко, для этого нужно скачать исходный код flacpack.

$ wget https://github.com/jazz4web/flacpack/archive/refs/heads/main.zip

У flacpack есть две зависимости, их предварительно необходимо установить в систему.

$ sudo apt install python3-chardet python3-mutagen

Распаковать полученный c github.com архив в системный каталог /opt можно прямо в терминале.

$ sudo unzip -d /opt main.zip 
Archive:  main.zip
4afb104d49a4638eeaa92bbf1e18dd1d49904772
   creating: /opt/flacpack-main/
  inflating: /opt/flacpack-main/.gitignore  
  inflating: /opt/flacpack-main/README.md  
  inflating: /opt/flacpack-main/flacpack.py  
   creating: /opt/flacpack-main/flacpack/
 extracting: /opt/flacpack-main/flacpack/__init__.py  
  inflating: /opt/flacpack-main/flacpack/checker.py  
  inflating: /opt/flacpack-main/flacpack/main.py  
  inflating: /opt/flacpack-main/flacpack/parser.py  
  inflating: /opt/flacpack-main/flacpack/system.py

Из выхлопа unzip видно, что в каталоге /opt появился вложенный каталог с именем flacpack-main, его нужно переменовать.

$ sudo mv /opt/flacpack-main/ /opt/flacpack

После этого достаточно положить символическую ссылку на исполняемый файл flacpack.py в один из каталогов переменной окружения PATH.

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

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

0GgTOa4a2I.png

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

Программа flacpack тоже имеет интерфейс командной строки, но воспользоваться ей очень просто. Захожу в терминале внутрь каталога, в котором хранится CDDA-рип, и выполняю очень простую команду.

flacpack sample.flac

Давайте посмотрим на содержимое метаданных файла sample.flac после выполнения этой команды.

bRrSeUsgFn.png

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

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

Как видно на одном из снимков экрана выше, у моего CDDA-рипа есть обложка - файл изображения с именем folder.jpg. Программа flacpack позволяет упаковать внутрь FLAC файла одно изображение, команда в этом случае будет выглядеть следующим образом.

$ flacpack -p folder.jpg sample.flac

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

Если после выполнения этой команды взглянуть на рип в файловом менеджере, можно увидеть, что у файла sample.flac изменилась иконка, потому что в метаданных FLAC файла теперь хранится изображение.

FsiHBosSPn.png

Восстанавливаем cuesheet из метаданных FLAC

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

0dpw9yfiId.png

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

$ flacpack sample.flac

30Eoyoi7eu.png

Жму enter, и смотрю в окно файлового менеджера.

dF87rhuL2I.png

Файлы восстановлены.

Выводы

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

Вопросы автору программы можно задать на электронную почту, адрес указан в исполняемом файле программы. Уважаемый читатель, если вам понравилась и пригодилась программа flacpack, отблагодарить автора можно любой приемлемой для вас денежной суммой на электронный кошелёк, при этом следует помнить, что перевод на 5 рублей лучше, чем никакого перевода... :-) Автор благодарен вам - всем откликнувшимся за добровольное и безвозмездное пожертвование.