суббота, 28 апреля 2012 г.

Cygwin: Лучше, чем у Лекса Кравецкого

Во время оно lex-kravetski был не только коммунистом, но ещё и программистом. Например, написал большой пост о том, как конвертировать wav в mp3 консольным конвертером и 2 BAT-файлами.

При всем нашем уважении к пакетным файлам, то же самое на cygwin выглядит не в пример лучше, лаконичней и помещается в 1 скрипт:

#!/bin/sh
LameDir="C:/lame"
if ([ $1 ]) then
 Artist="$1"
else
 echo -n "Artist="
 read Artist
fi
if ([ $2 ]) then
 Genre="$2"
else
 echo -n "Genre="
 read Genre
fi
CurrentDir=`dirs`
ParamAlbum=`echo $CurrentDir | sed 's!^\(/\?.*\)*/\(\([0-9]\{4\}\)[ -]\+\)\?\(.*\)$!--ty "\3" --tl "\4"!g'` #RegExp: ^(/.*)*/(([0-9]{4})[ -]+)?(.*)$
for filename in *.wav
do
  FileShortName=`echo $filename | sed 's!\^(.*\).wav$!\1!g'` #RegExp: ^(.*).wav$
  ParamTrack=`echo $FileShortName | sed 's!^\([0-9]\{2\}\)[ -.]\+\(.*\)!--tn "\1" --tt "\2"!g'` #RegExp: ^([0-9]{2})[ -.]+(.*)
  echo "$LameDir/lame.exe -V2 \"$CurrentDir/$FileShortName.wav\" \"$CurrentDir/$FileShortName.mp3\" --pad-id3v2 --ta=\"$Artist\" $ParamAlbum $ParamTrack --tg=\"$Genre\""
done

Как использовать?
  1. Сохраняем скрипт в нашу директорию со скриптами под именем tomp3 (или ещё каким-нибудь). Во второй строке указываем директорию, куда мы распаковали Lame.
  2. Копируем файлы с CD в wav в таком виде:

    2009 - Album / 01 - Song.wav

    Или в другом:

    Album/01 - Song with a long-ling name.wav

    (год может быть и пустым)

  3.  Открываем cygwin И переходим в папку с Wav-ками
  4. Набираем SH ~/tomp3 "Artist" "Genre". Если без них - скрипт сам спросит.
  5. После завершения кодирования: rm *.wav
  6. И quit
К сожалению, скрипта с подсветкой синтаксиса для bash-скриптов у меня нет. Поэтому я подсветил как brush:perl. Получилось ярко и доступно.

Комментариев нет:

Отправить комментарий