Скрипт для создания спектров для CMCS: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
(Создана новая страница размером Скрипт ниже создает спектры для треков согласно Common Music Collection Structure. Для п...)
 
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
Скрипт ниже создает спектры для треков согласно [[Common Music Collection Structure]]. Для построения спектров используется утилита '''sndfile-spectrogram''' из пакета '''sndfile-tools''' (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей).
Скрипт ниже создает спектры для треков согласно [[Common Music Collection Structure]]. Для построения спектров используется утилита '''sndfile-spectrogram''' из пакета '''sndfile-tools''' (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей).
{{ToDo|Добавить сжатие файлов, рассмотреть переход на sox file -n spectrogram}}


----
----


<source lang=bash>
<source lang=bash>
find /media/storage/share/music/flac/ -maxdepth 3 -name *.flac |
find "${@}" -maxdepth 3 -name *.flac |
while read file
while read file
do
do
Строка 14: Строка 16:
then
then
mkdir -p "${dirname}"
mkdir -p "${dirname}"
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png")
sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
echo $file done
echo $file complete
fi
fi
done
done
</source>
</source>


[[Category:Скрипт]][[Category:Аудио]]
----
Либо как отдельная функция, работает как с альбомом, так и с дискографией:
----
 
<source lang=bash>
makespectrums() {
find "${@}" -maxdepth 3 -name "*.flac" |
while read file
do
file="$(readlink -f "${file}")"
dirname="$(dirname "${file}")/_album_info/spectrums/"
basename="$(basename "${file}")"
[ ! -e "${dirname}${basename%.flac}.png" ] && (mkdir -p "${dirname}" ; sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png")
echo $file complete
done
}
</source>
 
----
 
Тестовый вариант со сжатием (с использованием '''advpng''' из пакета '''advancecomp'''):
 
<source lang=bash>
makespectrums() {
    find "${@}" -maxdepth 3 -name "*.flac" |
    while read file
        do
            file="$(readlink -f "${file}")"
            dirname="$(dirname "${file}")/_album_info/spectrums/"
            basename="$(basename "${file}")"
            [ ! -e "${dirname}${basename%.flac}.png" ] && (
                mkdir -p "${dirname}"
                sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
                [ -e `which convert` ] && (
                    convert -quality 90 -colors 256 "${dirname}${basename%.flac}.png" "${dirname}${basename%.flac}-conv.png"
                    mv "${dirname}${basename%.flac}-conv.png" "${dirname}${basename%.flac}.png"
                    [ -e `which advpng` ] && (
                        advpng -z4 "${dirname}${basename%.flac}.png"
                        )
                    )&:
            )
            echo $file complete
        done
}
</source>
 
 
[[Category:Скрипт]][[Category:Аудио]][[Category:CMCS]]

Текущая версия на 18:59, 3 сентября 2012

Скрипт ниже создает спектры для треков согласно Common Music Collection Structure. Для построения спектров используется утилита sndfile-spectrogram из пакета sndfile-tools (в Debian). В качестве параметра find'у передается путь к корню музыкальной коллекции (каталог, содержащий подкаталоги исполнителей).

ToDo: Добавить сжатие файлов, рассмотреть переход на sox file -n spectrogram

find "${@}" -maxdepth 3 -name *.flac |
while read file
	do
	file="$(readlink -f "${file}")"
	dirname="$(dirname "${file}")/_album_info/spectrums/"
	basename="$(basename "${file}")"

	if [ ! -e "${dirname}${basename%.flac}.png" ]
		then
		mkdir -p "${dirname}"
		sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
		echo $file complete
	fi
done

Либо как отдельная функция, работает как с альбомом, так и с дискографией:


makespectrums() {
find "${@}" -maxdepth 3 -name "*.flac" |
while read file
do
file="$(readlink -f "${file}")"
dirname="$(dirname "${file}")/_album_info/spectrums/"
basename="$(basename "${file}")"
[ ! -e "${dirname}${basename%.flac}.png" ] && (mkdir -p "${dirname}" ; sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png")
echo $file complete
done
}

Тестовый вариант со сжатием (с использованием advpng из пакета advancecomp):

makespectrums() {
    find "${@}" -maxdepth 3 -name "*.flac" |
    while read file
        do
            file="$(readlink -f "${file}")"
            dirname="$(dirname "${file}")/_album_info/spectrums/"
            basename="$(basename "${file}")"
            [ ! -e "${dirname}${basename%.flac}.png" ] && (
                mkdir -p "${dirname}"
                sndfile-spectrogram --dyn-range=100 "${file}" 800 480 "${dirname}${basename%.flac}.png"
                [ -e `which convert` ] && (
                    convert -quality 90 -colors 256 "${dirname}${basename%.flac}.png" "${dirname}${basename%.flac}-conv.png"
                    mv "${dirname}${basename%.flac}-conv.png" "${dirname}${basename%.flac}.png"
                    [ -e `which advpng` ] && (
                        advpng -z4 "${dirname}${basename%.flac}.png"
                        )
                    )&:
            )
            echo $file complete
        done
}