Vamos criar scripts úteis aqui!?

Iniciado por Alyscom, 11 de Dezembro de 2009, 10:32

tópico anterior - próximo tópico

niquelnausea

Esse é meu primeiro script  :P, quem puder melhorar ou colocar novas funções eu agradeço.

Ele converte todos os arquivos mp3 de um diretório para mp3, alterando o tipo de codificação (cbr, abr ou vbr), bitrate (de 32 ate 320kbps) e a frequência (32, 44.1 e 48KHz). Fiz ele por que baixo algumas musicas, e na maioria das vezes elas vem em mp3 192~320kbps, como esculto mp3 apenas no computador, prefiro converte-las para mp3 128kbps (abr) 44.1KHz (boa qualidade com tamanho bem menor).

Exemplo: um mp3 de 3:12min, 320kbps cbr, 44,1KHz estéreo com 7,3mb, apos a conversão para 128kbps abr o tamanho foi para 2,8mb.

#!/bin/bash

###################################################################################
##
## nome: converter_mp3.sh
##
## descrição: script para converter todos os arquivos em mp3 de um diretório
## para mp3 com outra qualidade, escolhendo entre cbr, abr e vbr e a frequência,
## trocando o nome de "musica.mp3" para "nova-musica.mp3" na mesma pasta
##
## modo de usar: coloque na pasta que estão os arquivos a serem convertidos,
## digite ./converter_mp3.sh e responda as perguntas
##
## dependências: lame
##
## data: 17/01/2010
##
## versão: 0.1
##
###################################################################################

codificacao=$(zenity --entry --text "Digite o tipo de codificação:\ndigite -b para cbr (taxa de bits constante)\ndigite --abr para abr (taxa de bits media)\ndigite -V para vbr (taxa de bits variavel)\n"); echo $codificacao
bitrate=$(zenity --entry --text "Digite o valor do bitratre:\ndigite 32, 64, 128, 160, 192, 224 ou 320 para cbr ou abr\ne de 0 a 9 para vbr, 0 melhor e 9 pior\n"); echo $bitrate
freq=$(zenity --entry --text "Digite o valor da frequencia:\n32, 44.1 ou 48\npadrão 44.1\n"); echo $freq

for musica in *.{mp3,MP3}
do lame $codificacao $bitrate -q 0 -c -p -m a --resample $freq --strictly-enforce-ISO "$musica" "nova-$musica"
done

danpos

@All

Pensando em criar uma pequena GUI que fosse acessada através do menu de contexto no Nautilus, comecei a pesquisar em como usar o zenity com o nautilus-actions. Lá vi um artigo sobre o autoglade [1,2], achei-o interessante e fui atrás do tutorial (infelizmente o SF apagou o wiki do developer; no entanto, há uma versão PDF disponível no Google Docs - disponível aqui).

Em um super resumo, o que o autoglade faz é carregar uma GUI criada com o Glade3 (importante - o Glade 2 é bem limitado e 'chato' para desenhar a GUI de interesse) dentro de um script bash, com a vantagem de carregar dentro do script os valores atribuídos a determinados widgets automagicamente. Dessa forma, se o script necessitar de uma GUI que tenha mais features do que as fornecidas pelo zenity, vale a pena usar o autoglade [1,2] para carregar a GUI criada no Glade3 e então usá-la no teu script bash. Abaixo eu mostro umas screenshots de um script bash bem simples que eu uso no terminal, que é para impressão em lote (batch print) de documentos criados no OpenOffice. Eu criei o script porque eu precisava às vezes imprimir uma via em uma impressora (ink jet) e a outra via em outra (laser jet). E a idéia de criar uma ação no nautilus foi porque como o script é bem 'tosco' (i.e. sem as configurações de opções - algo do tipo --print impressora, --copias N, como também ter uma rotina com shift para acessar todas as opções, blahblah, sem contar ter que mudar o diretório para a pasta contendo os arquivos, etc), o uso do nautilus-actions tornou-se conveniente para que o próprio aplicativo suprisse essas deficiências, de forma que eu escolho os arquivos, a GUI é então carregada, eu faço as escolhas e pronto, o script processa o desejado (reparem na segunda imagem que as opções dos botões já representam os valores requeridos, que são carregados pelo autoglade automagicamente (logo eu não preciso fazer testes com if para escolher os valores, eu os uso diretamente!).

1 - Ação tornada visível após a seleção dos arquivos


2 - Carregamento da GUI com as opções a serem escolhidas


Por fim o processamento ocorre sem maiores problemas (nota - como disse, no presente exemplo eu uso um script 'tosco', sem qualquer tratamento de erro, mas isso pode ser feito e até usado o autoglade para gerar uma GUI contendo a mensagem de erro, há previsão na aplicação :) )

Fica aí a dica. ;)

Danpos.

douglassilva

Pessoal,

preciso da ajuda de vocês para algo que tenho certeza que é extremamente simples, mas que, por minha total ignorância no assunto, está impossível de resolver. Achei esse site http://www.vivaolinux.com.br/dica/Como-imprimir-um-documento-no-formato-de-livro-de-4-paginas-por-folha/ que ensina como, com o psbook, se cria livretos. O autor apresenta um script:

echo "psbook $1 -s4 | psnup -2 > $2"
psbook $1 | psnup -2 > $2


Tentei entender (repito, sou absolutamente leigo) a partir dos comentários e dos scripts que vocês apresentaram nesse tópico, mas foi inútil. Parece que são dois comandos e que só a primeira linha me interessa (-s4, 4 paginas por folha). $1 e $2 são variáveis de diretório? e é preciso iniciar o script com um "#! /bin/bash" ou algo que o valha?

Queria também saber se é possível o Nautilus-scripts para rodar esse tipo de script e, se sim, qual seria o código que deveria ser salvo no arquivo .sh. Consigo rodar o psbook via terminal, mas esse esquema do Nautilus-scripts facilitaria muito o meu trabalho.

Muitíssimo obrigado!