[Ubuntu-BR] Um shellscript para a criação de audiolivros

Luciano de Souza luchyanus em gmail.com
Sexta Agosto 5 06:03:13 UTC 2011


Se faço echo $file, são listados  corretamente todos os arquivos 
existentes no diretório.

Mas se faço echo "$file.mp3", então, obtenho "/tmp/audioshelf/*.mp3". 
Este é um resultado estranho porque, em lugar de *, esperava encontrar o 
nome do arquivo. E se a cada iteração o lame encontra * em lugar do 
arquivo, não se admira que nada tenha conseguido converter.

então, se faço: "open" ou "create", as funções são processadas 
normalmente. Se faço "converte", obtenho um erro na linha do lame porque 
a cada iteração ele parece não processar adequadamente. E quando faço 
"close", ele novamente não me permite apagar os arquivos do diretório  
e, como resultado, quando se deseja apagar o próprio diretório, ele 
ainda está cheio.

Em suma, parece que o problema encontra-se na concatenação de $tmp_shelf 
com "/*".

Eis o script com a função close:

#!/bin/bash

#Audioshelf

speed=260
amplitude=140
voice="pt-br"
split=20
quality=128
tmp_shelf="/tmp/audioshelf"

open()
{
mkdir $tmp_shelf
}

create()
{
echo "Criando $1"
espeak -f "./$1" -w "$tmp_shelf/$1" -v $voice -s $speed -a $amplitude 
--split=$split
}

convert()
{
for track in "$tmp_shelf/*"
do
echo "$track.mp3"
# lame -b 128 $track "$track.mp3"
done

}

close()
{
rm "$tmp_shelf/*"
rmdir $tmp_shelf
}



Em 04-08-2011 23:06, Fabiano Barros escreveu:
> tente mudar como abaixo pra vc ver a saida da variavel file.
>
>
> convert()
> {
> for file in "$tmp_shelf/*"
> do
>           echo $file
> done
>
> }
>
>
>
>
>
>
> 2011/8/4 Luciano de Souza<luchyanus em gmail.com>
>
>> Caros,
>>
>> Desejo converter um arquivo de texto em audiolivro. Para tanto criei um
>> shellscript, mas ele dá erro na linha: for file in "$tmp_shelf/*"
>>
>> #!/bin/bash
>>
>> #Audioshelf
>>
>> speed=260
>> amplitude=140
>> voice="pt-br"
>> split=20
>> quality=128
>> tmp_shelf="/tmp/audioshelf"
>>
>> open()
>> {
>> mkdir $tmp_shelf
>> }
>>
>> create()
>> {
>> espeak -f "./$1" -w "$tmp_shelf/$1" -v $voice -s $speed -a $amplitude
>> --split=$split
>> }
>>
>> convert()
>> {
>> for file in "$tmp_shelf/*"
>> do
>> lame "$file" "$file.mp3" -b $quality
>> done
>>
>> }
>>
>> convert
>>
>> O que poderia estar errado. Não tenho dúvidas quanto à sintaxe de espeak e
>> de lame e, de qualquer modo, o Bash diz que o erro encontra-se na linha que
>> mencionei.
>>
>> Luciano
>>
>> --
>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/**comece<http://www.ubuntu-br.org/comece>
>>
>> Lista de discussão Ubuntu Brasil
>> Histórico, descadastramento e outras opções:
>> https://lists.ubuntu.com/**mailman/listinfo/ubuntu-br<https://lists.ubuntu.com/mailman/listinfo/ubuntu-br>
>>
>
>





More information about the ubuntu-br mailing list