Доброго времени суток.
Накачал я тут себе однажды гору музыки, не разбираясь, в каком она формате, во flac или же в mp3. Думал «ну а что, есть же куча утилит, которые все это конвертируют, потом разберусь». Скачал, поискал в сети, чем можно конвертировать, нашел программку All2mp3 (сижу на маке)… Какого же было моё удивление, когда я узнал, что не могу в неё закинуть просто папку Music и ждать, пока она пробежится по всем подпапкам, найдет все файлы flac и конвертирует их в mp3! Начал гуглить, но никакого вменяемого решения так и не нашел.
Написал небольшой скрипт на shell, который пробегается по папкам, ищет flac, конвертирует их в mp3, и может удалить .flac если вы попросите. Скрипт был написан на коленке, по-этому новые файлы называются *.flac.mp3. Также для его работы нужны установленные программы flac
и lame.
Вот сам скрипт:
#!/bin/sh
#flac2mp3
error(){
echo $@ 1>&2;
exit 1;
}
r=0
rem(){
if [ $r -eq 1 ]; then
rm "$1"
fi
}
flac2mp3(){
data=$1
echo " -----------------------Working on $data"
if [ -d "$data" ]; then
for file in "$data"*; do
if [ -d "$file" ]; then
file="$file"/
fi
flac2mp3 "$file"
wait
done
elif [[ "$data" == *.flac ]]; then
flac -d --stdout "$data" > temp.wav
wait
echo " ---------------------------------$data to wav done"
lame temp.wav "$data".mp3
wait
echo " ---------------------------------$data to $data.mp3 done"
rm temp.wav
rem "$data"
fi
}
if [ $# -eq 0 ]; then
error "Wrong arguments"
fi
echo ============================================================
if [ $# -eq 1 ]; then
flac2mp3 "$1"
elif [ $# -eq 2 ] && [ $1 == "-r" ]; then
r=1
flac2mp3 "$2"
else
error "Wrong arguments!"
fi
Как его использовать:
- Для конвертации БЕЗ удаления файлов .flac:
flac2mp3 yourMusicFolder/
- Для конвертации C удалением файлов .flac:
flac2mp3 -r yourMusicFolder/
Проверил у себя — все работает. По крайней мере mp3 файлы есть и ничего лишнего не удалено, что уже неплохо, я считаю. Надеюсь, кому-нибудь пригодится.
P.S. Буду рад замечаниям по коду, так как на shell пишу очень редко.
Автор: Mgrin