Перейти к содержанию

lame mass encoding


cL0N31

Рекомендуемые сообщения

нужно сконвертировать пару тон мп3 которые лежат по разным директориям... дерево каталогов нужно сохранить... в комплекте с lame есть 3 скрипта для массового конверта, но не один из них не создаёт директории а всё валят в один каталог...

помогите отредактировать данный скрипт для моих целей чтоб всё запихалось как надо:

#!/bin/sh# # auenc -- version 0.1## A wrapper for lame to encode multiple files.  By default, a .wav# extension is removed and replaced by .mp3 .## © 1999 Gerhard Wesp <gwesp@cosy.sbg.ac.at> under the GPL.# set the variables below according to your tasteLAME=lameLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operationif [ $# -lt 1 ] ; then  exec 1>&2  cat << _EOF_usage: $0 [options] file...options:  -d --delete: delete original file after successful encoding_EOF_  exit 1fiunset DELETEcase "$1" in  -d | --delete ) DELETE=1 ; shift ;;esacfor fdo  $LAME $LAME_OPTS "$f" `basename "$f" .wav`.mp3 || {    exec 1>&2    echo "encoding of $f failed, aborting..."    exit 1  }  if [ -n "$DELETE" ] ; then    rm -f "$f"  fidone
Ссылка на комментарий
Поделиться на другие сайты

cL0N31 писал(а) Fri, 30 October 2009 06:00

нужно сконвертировать пару тон мп3 которые лежат по разным директориям... дерево каталогов нужно сохранить... в комплекте с lame есть 3 скрипта для массового конверта, но не один из них не создаёт директории а всё валят в один каталог...

помогите отредактировать данный скрипт для моих целей чтоб всё запихалось как надо:

Если новые файлы должны оказаться в тех же какалогах, то, например, так

#!/bin/sh# set the variables below according to your tasteLAME=lame#LAME=echoLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operation#LAME_OPTS=""if [ $# -lt 1 ]; then  echo "usage: $0 [options] dir  options:    -d --delete: delete original files after successful encoding"  exit 1fiunset DELETEcase "$1" in  -d | --delete ) DELETE=1 ; shift ;;esacfind $1 -type f -name "*wav" | while read f; do  dir=`dirname "$f"`  newfile=$dir`basename "$f" .wav`.mp3  $LAME $LAME_OPTS "$f" $newfile || {    echo "encoding of $f failed, aborting..."    exit 1  }  if [ -n "$DELETE" ] ; then    rm -f "$f"  fidoneexit 0

Если в новом дереве, то ещё нужно создать каталог

mkdir -p $newdir

в цикле перед запуском lame

а базовый каталог для нового дерева во втором (или третьем, если первый -d) параметре передавать.

Мне так думается

Пишите, если нужно будет, поправим. Smile

Ссылка на комментарий
Поделиться на другие сайты

gogi:

попробовал твой скрипт... короче он работает но совсем не так как мне надо...

примерно такая ботва получилась:

$ ~/auenc ~/dir1f = ~/dir1/dir2/dir3/some.wavdir = ~/dir1/dir2/dir3newfile = ~/dir1/dir2/dir3some.wav.mp3

короче там походу слеш пропущен, но мне не надо создавать файлы в тех же директориях с новыми именами... хреново объяснил, сорри... короче мне надо запихать файлы в совершенно отличный от dir1 каталог, но всю нижнюю структуру dir2, dir3 и тд нужно воссоздать под этим новым каталогом

Ссылка на комментарий
Поделиться на другие сайты

cL0N31 писал(а) Sat, 31 October 2009 04:56

попробовал твой скрипт... короче он работает но совсем не так как мне надо...

короче там походу слеш пропущен, но мне не надо создавать файлы в тех же директориях с новыми именами... хреново объяснил, сорри... короче мне надо запихать файлы в совершенно отличный от dir1 каталог, но всю нижнюю структуру dir2, dir3 и тд нужно воссоздать под этим новым каталогом

Я тебе дал направление, что нужно делать, если необходимо создать новое дерево каталогов. А ты не удосужился дописать две строки. Писать за тебя готовые скрипты - это не задача форума. Здесь принято помогать тем, кто сам пытается что-то сделать и чему-то научиться, но не получается в силу недостатка информации или опыта.

#!/bin/bashLAME=lameLAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operationif [ $# -lt 2 ]; then  echo "usage: $0 [options] dir newdir  options:    -d --delete: delete original files after successful encoding"  exit 1fiunset DELETEcase "$1" in  -d | --delete ) DELETE=1 ; shift ;;esac[ ! -d "$1" ] ||  [ "X$2" != "X" ] || {  echo "usage: $0 [options] dir newdir";  exit 1;}find $1 -type f -name "*wav" | while read f; do  file=${f#$1}  newdir=$(dirname "$2/$file")  mkdir -p $newdir  newfile="$newdir$(basename "$f" .wav).mp3"  $LAME $LAME_OPTS "$f" "$newfile" || {    echo "encoding of $f failed, aborting..."    exit 1  }  if [ -n "$DELETE" ] ; then    rm -f "$f"  fidoneexit 0

Обрати внимание на изменение в первой строке и на формат строки запуска скрипта.

Каталоги можно задавать и с абсолютными и относительными путями.

PS. Извиняюсь. Работать будет, но такой стиль самому глаз режет Smile

Вместо

mkdir -p $newdir

Стоит написать

[ -d $newdir ] || mkdir -p $newdir || {

echo "Can't create $newdir"; exit 1

}

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...