пятница, 6 апреля 2007 г.

Музыкальная коллекция

Скопировал тут от друга себе музыки, заглянул внутрь и ужас, там в кучу wma mp3 и тд...
Требуется навести порядок, а именно пройтись по всему дереву каталогов, и перекодировать все в нормальный ogg.
Понадобится bash, mplayer, vorbis-tools

Итак 1. Перекодировка wma->ogg в текущей папке wma2ogg.sh, заодно заменим пробелы на подчеркивание и выровняем регистр.
#!/bin/bash
for i in *.wma; do mv "$i" `echo $i | tr ' ' '_'`; done
for i in *.[Ww][Mm][Aa]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
for i in *.wma ; do
mplayer -vo null -vc null -af resample=44100 -ao pcm:waveheader $i && oggenc -q 6 audiodump.wav -o "`basename "$i" .wma`.ogg";
done
rm audiodump.wav

2. Перекодировка mp3->ogg mp32ogg.sh
#!/bin/bash
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
for i in *.mp3 ; do
mplayer -vo null -vc null -af resample=44100 -ao pcm:waveheader $i && oggenc -q 6 audiodump.wav -o "`basename "$i" .mp3`.ogg"
rm "$i"
done
rm audiodump.wav

Ну и 3. Обход дерева каталогов и дергания этих скриптов. encode.sh
#!/bin/bash
for d in `find -type d`; do
cd $d;
~/scripts/wma2ogg.sh
~/scripts/mp32ogg.sh
done;


Ну собственно все, делаем cd /mnt/Music_stuff и запускаем ~/scripts/encode.sh
само все перекодирует.
И кстати совершенно спокойно можно прерывать скрипт по cntl-c и запускать на продолжение в любое другое время т.к. быстро пробежавшись по уже сделанным каталогам он продолжит работу с места где закончил.