Поиск и исправление FLAC-файлов с некорректными метаданными

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Этот небольшой скрипт найдет все FLAC-файлы в аудиоколлекции, в которых:

  • отсутствует SEEKTABLE (из-за этого, например, в amarok может не работать перемотка на треке)
  • устаревший кодек (не соответствует указанной в скрипте версии)
  • битая строка, в которой указывается тип и версия кодека (на таких файлах, возможно, вешается easytag)
find ./ -iname \*.flac |
while read file
do
metaflac="$(metaflac --list "${file}")" && \
[[ "$(grep -q 'reference libFLAC 1.2.1' <<< $metaflac && echo 1)" == '1' && "$(grep -q 'SEEKTABLE' <<< $metaflac && echo 1)" == '1' ]] || echo ${file%/*}
done | sort -u

Скрипт выдаст список альбомов/каталогов, в которых встречаются "битые" файлы, после чего каждый альбом можно будет обработать скриптом для обновления кодека и метаданных (возможно позже я сделаю, чтобы тот скрипт мог обрабатывать отдельные файлы, тогда в этом можно будет делать вывод не целого альбома, а только нужных файлов... А пока так, для надежности :))

 | while read album ; do cd "${album}" ; flacupdate.sh ; cd - ; done