Обновление кодека и метаинформации для FLAC-файлов: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
Скрипт для обновления версии кодека и метатегов в FLAC-файлах (к примеру, надо обновить кодек с v.1.1.0 до v.1.2.1 либо создать seektable для файлов, если, к примеру, есть проблемы с проматыванием трека в Amarok). Указываем каталог, где лежат FLAC-файлы либо указываем нужные файлы как параметры скрипта, для каждого из них скрипт декодирует и одновременно кодирует получившийся поток в файл с расширением '''new''', | Скрипт для обновления версии кодека и метатегов в FLAC-файлах (к примеру, надо обновить кодек с v.1.1.0 до v.1.2.1 либо создать seektable для файлов, если, к примеру, есть проблемы с проматыванием трека в Amarok). Указываем каталог, где лежат FLAC-файлы либо указываем нужные файлы как параметры скрипта, для каждого из них скрипт декодирует и одновременно кодирует получившийся поток в файл с расширением '''new''', считывает теги из старого и записывает в новый файл, потом перемещает новый файл на место старого. | ||
---- | ---- |
Версия 18:25, 29 сентября 2009
Скрипт для обновления версии кодека и метатегов в FLAC-файлах (к примеру, надо обновить кодек с v.1.1.0 до v.1.2.1 либо создать seektable для файлов, если, к примеру, есть проблемы с проматыванием трека в Amarok). Указываем каталог, где лежат FLAC-файлы либо указываем нужные файлы как параметры скрипта, для каждого из них скрипт декодирует и одновременно кодирует получившийся поток в файл с расширением new, считывает теги из старого и записывает в новый файл, потом перемещает новый файл на место старого.
#!/bin/bash
# By Rain ;)
updatefile() {
echo -e "\n\e[35mWorking on file \e[36m${1}\e[0m"
flac -sdc "${1}" | flac --best - -Vo "${1}.new" &&\
metaflac --export-tags-to=- "${1}" | metaflac --import-tags-from=- "${1}.new" &&\
mv "${1}.new" "${1}"
}
if [ -z "${1}" ]
then
find ./ -iname '*.flac' |
while read file
do
updatefile "${file}"
done
else
for file in "${@}"
do
updatefile "${file}"
done
fi