NickNill 10.06.2010 21:32
Скрипты на bash — Конвертер из flac в mp3 v 0.50a
Привет всем!Ну вообщем дело было к вечеру, делать было нечего..
Вспомнил я, что у меня музыка в основном в flac, по трекам. И иногда нужно ее в mp3 кому-то скинуть.
Чтобы не разбираться с mencoder, да плюс еще и скучно немного, решил пошаманить со скриптами.
Знаю что уже есть похожее http://welinux.ru/post/1196/, но нашел его только что, да и там только по одному файлу можно конвертить.
Если интересно что из этого получилось - под кат.
Итак сам скрипт
Знаю, много чего лишнего, но я очень старался =)
Вдруг кому-то пригодится.
Еще можно обьединить со скриптом, который разбирается с куями, и этот скрипт будет универсальным.
Не судите строго.
Спасибо dr_magnus за совет насчет тегов в своем скрипте
Спасибо за внимание.
UPD: Обновил, так как нашел кучу багов + спасибо Kaener за помощь.
UPD2:Исправил еще немного багов, теперь все должно работать хорошо. Обьявил это версией 0.50а =)
UPD3: Убрал временные файлы, добавил выборочные параметры для lame.
goblinyara 10.06.2010 21:49 #
+ 1 -
эмм... у вас голубой цвет почему-то розовый=)
Советую добавить чтобы help выводился при запуске без параметров) А то я попробовал - началось какое-то ололо)
Есть некоторые вопросы/предложения:
А у Вас точно работает скрипт, для варианта когда не указана директория «входящих» файлов?
Просто, по-моему вот эта строчка:
Если же убрать кавычки (или если был указан путь к папке), то появляется баг/фича — поиск осуществляется рекурсивно, а значит сконвертируются файлы внутри всех подкаталогов. Имхо, надо добавить параметр «-maxdepth 1», чтобы избежать этого.
Также проблема может возникнуть со строкой 137 — т.к. пользователь может указать путь к папке для вывода со слэшем в конце (что обычно бывает при автодополнении), то получится «~/%some_dir%//$mp3name» и lame выдаст ошибку. Может помочь пропускание полученного пути через sed вот так
И ещё одно: если указать параметры по умолчанию, до разбора полученной строки, т.е. после «#some colors» дописать что-то вроде
А у Вас точно работает скрипт, для варианта когда не указана директория «входящих» файлов?
Просто, по-моему вот эта строчка:
files=`find "$dir_name" -name "*.flac"`
не будет работать: из-за того что переменная $dir_name не инициализирована до этого момента в кавычках будет NULL, на что find отреагирует матом.Если же убрать кавычки (или если был указан путь к папке), то появляется баг/фича — поиск осуществляется рекурсивно, а значит сконвертируются файлы внутри всех подкаталогов. Имхо, надо добавить параметр «-maxdepth 1», чтобы избежать этого.
Также проблема может возникнуть со строкой 137 — т.к. пользователь может указать путь к папке для вывода со слэшем в конце (что обычно бывает при автодополнении), то получится «~/%some_dir%//$mp3name» и lame выдаст ошибку. Может помочь пропускание полученного пути через sed вот так
$dir_out=`echo $dir_out | sed s/'\/$'//`
Правда не знаю насколько правильно данное выражение — мой скилл творить regexp’ы совсем плохо прокачан.И ещё одно: если указать параметры по умолчанию, до разбора полученной строки, т.е. после «#some colors» дописать что-то вроде
#default settings
dir_name="./"
dir_out="~/320"
bitrate="320"
rate="cbr"
то можно будет убрать проверки в 106-116 строках, а как бонус — пользователю скрипта будет удобнее менять дефолтные настройки. =)
спасибо, не досмотрел немного. У меня сначала была эта баг\фича, но потом я добавил кавычки из-за других багов. Надо добавить проверку просто еще одну. Сейчас позанимаюсь исправлением накопившихся багов =)
Да, бывает. Кстати, спасибо за топик — пнули меня таки более-менее разобраться с sed и awk. =)
P.S. И ещё одно дополнение: по-моему, в строке 85 у Вас опечатка.
P.S. И ещё одно дополнение: по-моему, в строке 85 у Вас опечатка.
насчет начала строки.. а я как то и не подумал сделать так =) ща изменю
что интересно, если задаётся mkdir -p "~/320", то и создается ~/320, а не 320. Даже если там и кавычек нету. Не знаю что придумать =(