Arquivos 2016

24
novembro 2016

Scripts txt2php

Escrito por Mario Medeiros não comentários

Talvez uma situação muito comum, mas pouco mostrada, seja a de encontrar algo que atenda a necessidade o mais próximo possível de cem por cento.

Como isso é muito pouco provavel de acontecer, quando encontramos algo que consiga atender ao menos metade dessa necessidade, já ficamos muito contentes.

A situação que quero demonstrar tem essas características de atender um pouco mais da metade da minha necessidade.

Você está procurando por um template ou layout para utilizar em seu site.
Aí encontra um que tem um visual leve, disposição dos objetos bem colocados e com os css bem diversificados.
Mas como disse anteriormente, a solução atende em parte o que eu precisava, mesmo sendo uma grande parte.

O nome do template utilizado é Willamette, do site Types&Grids e os arquivos estão neste link.

Após baixar e dar uma estudada rápida no template, fiz algumas alterações e ficou como eu queria.

Até aí, nada de mais.
A coisa fica complexa quando eu comecei a adicionar o conteúdo.
Por ser páginas estáticas não utilizando CMS (Sistema Gerenciador de Conteúdo como por exemplo, wordpress, joomla, pluxml, etc) foi necessário adicionar página a página e incluir no arquivo index o seu respectivo link e título.

Obs. 0: esse template foi criado para ser utilizado juntamente com o Statamic CMS, e sendo uma solução paga, optei por não utilizar esse CMS. Utilizei somente o template free.
Esse template tem a versão free e paga também. Na versão free deve-se manter no rodapé da página as referências ao site do desenvolvedor. Mais detalhes no próprio site.

Como normalmente sou meio desligado a detalhes, não percebi que eu tinha separado uns 250 textos para serem inclusos de modo separado.
Foi aí que percebi que seria um trabalho bem manual, senão braçal.

E ficou uma pergunta:
Será que é possível automatizar a inclusão desses arquivos textos nesse template?
Mesmo que seja ao menos em parte essa automação?

Eis que surge para nortear todo o trabalho e a mim mesmo, a soberana Preguiça com a resposta:
Sim, claro que sim. Em Linux, possibilidades tendem ao infinito.

Após vários testes, erros e acertos, idéias exdrúxulas, algoritmos alienígenas em loop infinito, o resultado final ficou até que utilizável. Ao menos para esse template sim.
Mas pode ser alterado para outros templates, modelos de páginas html ou até mesmo para outras finalidades onde seja necessário incluir blocos de texto em outros arquivos, com o mínimo de trabalho manual possível.

Abaixo, no final do post tem os links para os arquivos, contendo os scripts, arquivos modelos e uma documentação simples e objetiva dessa pequeníssima automação.

Alguém pode até estar se perguntando: por que eu não optei por um CMS, ou não modelei o template para CMS, uma vez que minha opção pelo template estático foi mais trabalhoso.

Simples teimosia.
Teimei em usar esse template porque me agradou o visual e a forma como está organizado.

Para o que eu queria, atendeu muito bem, mesmo sendo um pouco trabalhoso.

Algumas referências iniciais sobre essa automação estão no post Inserindo Texto Em Arquivo HTML, que escrevi em 22 de novembro de 2016, poucos dias atrás.

Este post vem complementar um detalhe que eu não havia dado importância, mas que depois me atentei.
Sobre a questão do arquivo index.php, onde tem a lista dos arquivos dos textos e seus respectivos links.

Os scripts que montei para este post são mais completos e elimina, ou tenta diminuir, a edição manual do arquivo index.php.

O resultado final de todo o trabalho feito está no site LowCypher Augur

Segue os arquivos com as instruções, scripts e modelos do template que modifiquei,
deixando prontos para serem processados.
Coloquei também nos pacotes os textos e arquivos do post anterior para que tenha a documentação mais completa possivel.
É importante que leia os shell-scripts e os arquivos de instruções em txt para ter um melhor aproveitamento dos arquivos.

 

Link para os documentos da Versão 00 - gera somente o arquivo php

 

Link para os documentos da Versão 01 - gera os documentos e edita o index.php

Categorizado em : Linux Tags : sem tags


22
novembro 2016

Inserindo texto em arquivo html

Escrito por Mario Medeiros não comentários

Existem várias ferramentas para converter txt em html.
Não foi bem o que eu precisava, mas foi quase isso.
No meu caso, precisei inserir textos de arquivo txt em páginas php pré-formatadas com layouts prontos.

No real, são páginas html5 com laytous em css3, mas eu prefiro usar extensão php.

Adicionar o texto nas páginas e depois colocar tag por tag nas linhas, não é algo muito saudável de ser fazer manualmente.

Depois de deixar os dois neurônios em pânico, consegui até que um bom resultado.

Obs: os dois neurônios são força e inteligência (ou quase, hahahaha).
Quando a inteligência viu que era complicado, falou pra força: se vira ai, que vou tomar uma tequila e num sei de nada.
Aí imagina a beleza de solução dada para a questão.

Utilizei o sed para fazer a substituição no texto original e a inserção do resultado ajustado no arquivo php final.

Para o que eu precisava, que era colocar os textos dentro da pagina php e em um bloco a partir de uma linha específica do arquivo, atendeu bem.

O script lê o arquivo txt, adiciona nas linhas em branco a tag <br>
Depois adiciona no incio da linhas a tag <p align="justify">
Feito isso, adiciona </p> no final das linhas, fechando a tag <p>

Detalhe: Na posição onde fica o título do texto, entre as tags <h1></h1> eu adicionei o titulo manualmente. Não entendi como necessário a criação de um script ou adicionar ao script já existente, um algoritmo para incluir na linha e coluna específicos o texto do título. 

Uma vez que todo esse processo adiciona o <p align> nas linhas em branco, junto com o <br>, o último comando do sed substitui a linha acima por <br> novamente.

Tentei outras formas para simplificar o processo/algoritmo mas devido a minha limitação mental, não obtive êxito.
Então mantive esse algoritmo mesmo. Uma quase lógica.

Usei um padrão de nome de arquivo para ser processado no início e no final do algoritmo.
Ex:
arquivo de entrada se chama 001;
arquivo de saída se chamará 001.php.

Se for utilizado 001.txt na entrada, a saída ficará 001.txt.php
Para não precisar fazer um script que remova a extensão txt desnecessária, optei em utilizar os arquivo txt sem extensão.
Sendo Linux, a extensão é irrelevante, o que facilitou muito.

Lembrando de um detalhe: para cada processo do sed, precisei gerar um arquivo novo para evitar escrever no arquivo original e por algum descuido meu mesmo, truncar esse arquivo e perder seu conteúdo.

Então com o processo do sed, para um arquivo de entrada de nome 001, foram gerados os arquivos 001-1, 001-2, 001-3 e 001+final, sendo que este 001+final, lê o o arquivo modelo.php e gera por fim 001.php, com o todo o conteúdo já pronto.

Como sugerido, o arquivo com sufixo +final é o arquivo final antes de gerar o php.
Aí eu pergunto: para que eu vou precisar desse quatro arquivos gerado pelo sed?
Para deixar tudo desorganizado, claro. Já não chega a minha desorganização natural, e ainda crio um script para automatizar e acelerar essa minha desorganização.

Aí depois de muito pensar (demorou muito mesmo), decidi adicionar ao script, uns rm para poder remover os arquivos desnecessários.
Ficou assim o fim do script:

rm -rf *-1 &&
rm -rf *-2 &&
rm -rf *-3 &&
rm -rf *+final

Funcionou como esperado.

Segue abaixo o conteúdo do shell script que faz toda a bruxaria.

##########################################

#!/bin/bash

echo "Escolha o arquivo"
read arquivo

cat $arquivo |

#remove linhas em branco
#caso queira mudar o layout de saída e não quiser deixar linhas em branco
#para inserção do <br>
#se não for essa a intenção, é só comentar a linha abaixo, e descomentar
#a linha da tag br, que o script inicia da linha onde adiciona o br nas linhas
#em branco. lembre-se de deixar uma linha ou outra ativa, evite as duas juntas.
#não testei, mas as duas linhas geram o mesmo arquivo, podendo truncar o mesmo.
sed '/^$/d' $arquivo > $arquivo-1 &&

#adiciona o br em linhas em branco
#sed 's/^$/<br>/g' $arquivo > $arquivo-1 &&

#adiciona p justify no inicio da linha
sed 's/^/<p align="justify">/' $arquivo-1 > $arquivo-2 &&

# adiciona o /p no final da linha
sed 's/$/<\/p>/' $arquivo-2 > $arquivo-3 &&

#retirar os excessos
sed 's/<p align="justify"><br><\/p>/<br>/g' $arquivo-3 > $final+final

#insere o conteúdo de todo trabalho anterior no arquivo modelo.php
#após a linha 50 e gera um arquivo final php
#alterar o nome do arquivo para o padrao do site
sed -e "50r $final+final" modelo.php > $arquivo.php &&

#linhas adicionadas para testes de remocao dos arquivos excedentes

rm -rf *-1 &&
rm -rf *-2 &&
rm -rf *-3 &&
rm -rf *+final
#############################################

Categorizado em : Linux Tags : sem tags


19
outubro 2016

Calculando IMC com Python

Escrito por Mario Medeiros não comentários

No dia 2016-10-07 publiquei um post sobre uma aplicação pequena em Java, que calcula o IMC.

Está neste link: Calculando IMC com Java

Como eu havia mencionado no post do IMC-Java, eu não programo em java e nem sou muito amigo desta linguagem. Por que? Simples, não gosto de java. Reconheço que tem sua utilidades e funcionalidades, que resolve vários tipos de problemas, e até posso utilizar para situações específicas. Mas isso não faz com que eu passe a gostar de Java.

Para não ficar com esse código somente em Java, procurei uma linguagem que eu gosto, apesar de pouquíssimo conhecimento, para reescrever o código.

Pensei em fazer em shell script/bash, mas utilizei o Python para isso.

Vi que é portável entre Linux, Mac e ruwindows. Como fiz anteriormente em Java e testei no ruwindows, pensei em fazer também em uma linguagem que pudesse ter essa particularidade. Me lembrei do Python.

Então fui lendo, lembrando, aprendendo e ficou até que razoável e super simples, básico.

Escrito em Python 2.7.6 e em Linux, rodou certinho.

Já em ruwindows ……… (hahahahahahahahaha!!!!!!!)

Tentei rodar uma vez, e o treko deu erro de sintaxe e outros erros mais escabrosos que no meu nível intelectual e paciência com a plataforma M$, me fez simplesmente desistir de tentar mais de alguns minutos. Se alguém quiser pegar o código e ajustá-lo para que funcione no ruwindows, fique a vontade. Eu não vou fazer nenhuma tentativa para tal.

Rodou no Linux então está ótimo. Não rodou no ruwindows? Azar!!!

É para funcionar, é Linux. É para ter dor de cabeça, é ruwindows!!

Para rodar a aplicação é necessário ter o python instalado. Todas as distros já possuem por padrão, mas caso não tenha, instale pelo gerenciador de pacotes da sua distro.

No final deixei o link com o código fonte para rodar a aplicação.

Baixe o arquivo, descompacte em um diretório qualquer e no terminal digite no diretório onde descompactou o arquivo:

python IMC-Py.py

Coloque os valores de peso e altura conforme solicitado e no final será mostrado o resultado.

Bem simples e básico.

Roda em moto texto, mas é possível rodar em modo gráfico com botões e janelas, mas não estudei nem pesquisei muito sobre isso. Existem bibliotecas disponíveis que trabalham com Python tranquilamente. Mas vai ficar para uma outra oportunidade. Pelo pouco que vi, é um tanto mais detalhado do que eu esperava e então requer mais estudo por parte deste Klingon Velho para isso.

Outras forma de rodar o arquivo são:

1 – deixá-lo como arquivo executável utilizando chmod +x IMC-Py.py;

2 – como root colocá-lo em /usr/bin/ e atribuir chmod 777 IMC-Py.py e rodar de qualquer diretório. Em qualquer dos casos, pra ficar mais bunitinhu, mude o nome do arquivo para imc sem extensão, que ficará mais simples de chamar pelo terminal em qualquer diretório.

De qualquer forma acima mencionado, o arquivo vai rodar sem problemas.

Caso encontre algum bug ou erro, pode informar que tentarei corrigir. Se quiser corrigir e/ou melhorar a aplicação (sempre tem como melhorar, da mesma forma que sempre tem como piorar), fique a vontade para tal. Segue a filosofia OpenSource.

Clique aqui para baixar o arquivo IMC-Py.

Categorizado em : Linux Tags : sem tags


07
outubro 2016

Calculando IMC com Java

Escrito por Mario Medeiros não comentários

Muitas das vezes que procuramos alguma coisa, quase que invariavelmente, encontramos outra.

Numa dessas procuras, acabei por encontrar um antigo código de teste/estudo feito em java.

Esse código tem 12 anos, (foi escrito em meados de 2004), para meros fins de estudo e testes.

Não sou programador java. Talvez por considerar essa linguagem um tanto quanto estranha para as tarefas triviais que costumo fazer com outras linguagens, não me aprofundei.

E também não gostei dela na época. Talvez hoje seja diferente, mas não tentei nada.

Sobre a aplicação, é algo bem simples: calcular o IMC, que é o índice de massa corpórea.

Consiste em pegar o valor do peso e dividir pelo quadrado da altura, que é p/a² onde:

p = peso

a = altura

Com base na tabela de resultados, a aplicação retorna uma mensagem com os valores e qual a condição física.

Segue a tabela, conforme o site: http://www.calculoimc.com.br/tabela-de-imc/ com os dados de hoje.

Obs: a tabela usada em 2004 tinha valores com pequena diferença. Utilizei os dados de 2004 mesmo.

Pode-se alterar se achar necessário. A grosso modo, não muda muito no resultado. Fica a seu critério.

Abaixo de 17 Muito abaixo do peso

Entre 17 e 18,49 Abaixo do peso

Entre 18,5 e 24,99 Peso normal

Entre 25 e 29,99 Acima do peso

Entre 30 e 34,99 Obesidade I

Entre 35 e 39,99 Obesidade II (severa)

Acima de 40 Obesidade III (mórbida)

Sabe-se lá porquê, há erros de cálculo quando usado valores com ponto flutuante.

A aplicação fecha sem mostrar resultado e não tem nada nos logs.

Solução Klingon: arredonda tudo pra cima, com valor inteiro e pronto, nada de erros! Por enquanto.

Atenção:

Mesmo com a solução implementada, e possibilidade de outros bugs aparecerem, existe.

Portanto, lembre-se que este micro-código é somente para estudo e testes, nada além disso.

O resultado apresentado tem o valor bem preciso, por usar float.

Usei float, int e double e nada de funcionar. Para não perder tempo e ficar queimando os parcos pseudo-neurônios que tenho, resolvi assim, arredondando tudo.

Por hora é assim que vai ficar e se alguém souber como resolver, pode aplicar a solução!!

No final do post, segue o código fonte para poder compilar.

Fiz a compilação no Linux com java, não com o openjava.

Para mostrar a versão do java utilize no terminal: java -version

A versão utilizada foi:

java version "1.8.0_66"

Java(TM) SE Runtime Environment (build 1.8.0_66-b17)

Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

As instruções para instalação do java para Linux, você encontra numa pesquisa rápida pelo google.

Além de não ser o escopo do post a instalação do java, tem outro detalhe: fiz a instalação há uns anos e realmente não me lembro como se faz. Eu teria que procurar também.

Mas nem tudo está perdido, pois passarei os comando de como compilar e rodar a aplicação.

Crie um diretório para salvar o arquivo imc.java.

Sugestão de nome, mas pode ter qualquer nome, desde que respeite o famoso "case sensitive".

Lembre-se que Java é diferente de java, que é diferente de JAVA.

Outro detalhe, na linha onde se está:

public class imc - o nome a classe imc está minúsculo, portanto o nome da aplicação imc.java deve ser minúsculo.

Abra seu editor de textos preferido, copie e cole o código abaixo e salve com o nome imc.java

No diretório onde foi salvo o arquivo, acesse pelo terminal e digite os comandos.

javac imc.java

Se tudo correr bem, o java irá compilar o arquivo, gerar um outro com o nome de imc.class e retornar o prompt para a linha de baixo, sem emitir nenhuma mensagem.

Com o arquivo gerado, digite no mesmo diretório: java imc

A aplicação deverá abrir com o campo para digitar o peso, depois ao clicar em OK, será mostrado a próxima tela, que é para preencher com a altura.

Ao clicar em OK novamente será mostrado o resultado do IMC.

Obs: se o valor digitado for quebrado, por exemplo 85.7 para o peso, utilize ponto. Não utilize virgula.

Isso serve para o valor altura também.

Para cada resultado dentro da faixa da tabela acima, haverá uma mensagem indicando peso normal, sobrepeso e etc.

As telas da aplicação estão logo abaixo.

Fig. 1

Fig. 2

Fig. 3

Fig. 1: Tela para entrada de dados “peso”

Fig. 2: Tela para entrada de dados “altura”

Fig. 3: Resultado do IMC

No Linux pode-se colocar a aplicação em /usr/bin para que possa ser utilizado por qualquer usuário do sistema.

Se quiser pode também criar um atalho tanto para área de trabalho quanto para o menu.

A forma varia de distro para distro, portanto também não vou descrever nenhum método aqui.

Em Linux rodou tudo bem. Mas e no ruwindows? Será roda?

O slogan do java é:

"Write once, run anywhere" (WORA) ou algumas vezes

"write once, run everywhere" (WORE), segundo a extinta Sun Microsystems, criadora do java,

serve para ilustrar os benefícios da idéia cross-plataform.

Durante sua existência, o java teve inúmeros problemas, tanto que até o slogan virou piada.

Algo como:

"write once, debug everywhere", escreva uma vez, debug em todos os lugares.

"Write once, run away", escreva uma vez, fuja.

Estas foram algumas que me lembro.

Mas piadas a parte, tentei rodar o arquivo class no ruwindows, compilado no próprio ruwindows e curiosamente, não rodou. Que atípico hein!!!

Várias coisas podem ocorrer nesse caso.

Uma dos cenários, é a falta do java (SE, SDK, JRE) no ruwindows.

Pode ser que a codificação do arquivo texto original está em UTF-8 e o ruwindows usa o famigerado ISO-8859-15.

O padrão de EOF (end of file) dos arquivos Linux é diferente e o ruwindows nunca entende (normal).

Eu nem tentei corrigir nada para compilar e/ou rodar no ruwindows.

O post é sobre como fazer tudo no Linux, até mesmo gerar um arquivo jar, que roda tanto no Linux quanto no ruwindows. Esse funciona sim.

Então vamos criar os arquivos jar e manifest - dos aquivos java e class criados.

A compilação de um manifesto é externa, usando o -m. Nesse caso, por exemplo, os passos seriam:

javac imc.java – este comando cria o .class

Criar um arquivo manifest.mf com o seguinte conteúdo: Main-Class: imc

O comando para o nosso arquivo é:

jar cvmf manifest.mf imc.jar imc.class

Após a compilação, será criado o arquivo imc.jar.

Então, digite o comando:

java -jar imc.jar

Abrirá as mesmas telas mostradas anteriormente.

Pegue esse arquivo jar e copie para um ruwindows que tenha o java jre instalado.

No diretório onde copiou o arquivo jar, digite o último comando acima e ele abrirá exatamente como no Linux.

Como eu disse, criar atalhos, colocar em um path padrão e etc, fica por conta de cada um.

Para quem quiser criar executáveis para ruwindows do arquivo jar, tem a aplicação launch4j, também em java que gera o .exe a partir do .jar

Você pode baixar de http://launch4j.sourceforge.net

Baixe o arquivo, crie um diretório, descompacte o pacote, e nesse diretório digite o comando:

./launch4j

Uma breve pesquisa no site e terá mais detalhes de como utilizar.

Este site abaixo tem algumas instruções básicas:

http://www.geeksbr.com/2012/01/dica-transformar-um-jar-em-exe-com.html

Abaixo o código fonte da aplicação que chamo, de forma bem criativa, imc.

Aqui neste link estão os arquivos do projeto:

artigo-imc-v2-java-mario.pdf 

imc.class 

imc.jar 

imc.java 

imc-v2.exe 

imc-v2.xml 

manifest.mf

Segue o código fonte.

Com base na tabela abaixo, que a aplicação mostra as mensagens dos resultados.

/*

 

Programa em que calcula o IMC - Índice de Massa Corpórea, de uma pessoa.

Dado o seu peso e altura usando a fórmula do IMC = peso divido pelo quadrado da

altura e em seguida mostra a mensagem de acordo com tabela;

 

IMC Mensagem

------------ -------------------------

Até 19 Abaixo do peso, muito magro!

20 - 25 Peso Normal

26 - 30 Sobrepeso, um regiminho ajeita tudo

31 - 35 A coisa está ficando feia

36 - 40 Procure um SPA

Acima de 41 Procure um médico, sua saúde vai mal

 

Nome: imc

Autor: Mario Medeiros

Versão: 0.2

Data: 2016-10-07

Feito em Linux

 

Data da versão 0.1: Maio/2004.

 

*/

 

import javax.swing.*;

public class imc

 

{

public static void main(String args[])

{

float peso, altura, imc;

String entrada = new String();

 

entrada = JOptionPane.showInputDialog("Digite o peso");

peso = Float.parseFloat(entrada);

 

entrada = JOptionPane.showInputDialog("Digita a altura");

altura = Float.parseFloat(entrada);

imc = (peso)/(altura*altura);

 

if (imc <=19)

{

JOptionPane.showMessageDialog(null, "Abaixo do peso, muito magro " +imc);

}

if (imc >=20 && imc <=25)

{

JOptionPane.showMessageDialog(null, "Peso Normal " +imc);

}

if (imc >=26 && imc <=30)

{

JOptionPane.showMessageDialog(null, "Sobrepeso, um regiminho ajeita tudo " +imc);

}

if (imc >=31 && imc <=35)

{

JOptionPane.showMessageDialog(null, "A coisa está ficando feia " +imc);

}

if (imc >=36 && imc <=40)

{

JOptionPane.showMessageDialog(null, "Procure um SPA " +imc);

}

if (imc >=41)

{

JOptionPane.showMessageDialog(null, "Procure um médico, sua saúde vai mal " +imc);

}

}

}

Categorizado em : Linux Tags : sem tags


22
setembro 2016

Download de Arquivos PDFs

Escrito por Mario Medeiros não comentários

Ás vezes estamos procurando um artigo, uma revista ou um texto qualquer em pdf. Quando conseguimos encontrar, muitas vezes está colocado juntamente com outros textos, também em pdf.
Normalmente estão dispostos em links na página que encontramos o primeiro documento.

Eu acabo por tentar baixar todos os que eu encontrar que estão disponíveis.

Um exemplo: o Zine eletrônico, slackzine. Fica em www.slackzine.com.br mais precisamente em www.slackzine.com.br/repositorio.php

Você procura uma edição e acaba por encontrar todas as demais por lá. Muito legal isso.
Aí você vai pegar, clicar em cada uma delas e abrir ou baixar uma por uma. Se fosse umas 3 ou quatro edições, tudo bem, nada de mais. Mas o detalhe é que são 28 edições. Tudo bem, que até daria (não daria, muita preguiça) para baixar uma por uma, dando click nos links.

Mas aí você encontra um outro local que tem umas 80 edições e você vai ficar dando clicks em cada uma delas. Legal hein, nada massante e/ou tedioso!

Então, já que a idéia é fazer a máquina trabalhar para você e não o oposto, podemos automatizar essa tarefa de forma até que simples, como sempre, com a simplicidade do Linux.

Depois de alguma pesquisa em forums, man pages e uns copy/paste da web, montei um shell script que facilita bastante essa tarefa.
Escrevi o código com base na minha necessidade, mas pode ser reescrito/reaproveitado para uma outra especificidade ou uma gama maior de opções, como baixar também arquivos zip, jpg, audio, vídeo entre outros.

Não é escopo desse script baixar arquivos que estejam "linkados" em repositórios virtuais, como Dropbox, mediafire e outros similares, uma vez que o mecanismo de apontamento e armazenamento difere e muito do que mencionei acima, ou seja, para o nosso objetivo, os arquivos estão em links diretos nos sites.

Escrevi duas versões do script. Uma simplesmente em shell, usando puramente o terminal. Outra versão eu adaptei para uso junto com o Zenity, ficando um pouco mais "bunitinhu" com janelinhas, caixas de diálogo e botões.

Em essência é o mesmo script somente com algumas entradas e saídas para o Zenity. Firulas mesmo.

O script pode ser melhorado e corrigido. Não previ todas as situações possíveis, podendo haver erros na execução do mesmo em situações diferentes demais. Os testes foram feitos nos sites do slackzine e da revista do libreoffice. Tudo correu perfeitamente.

Os links que utilizei para os testes foram:

Slackzine: www.slackzine.com.br/repositorio.php
Revista LibreOffice: http://pt-br.libreoffice.org/projetos/revista

Baixe os arquivos que estão no link no final do artigo, descompacte em um diretório, por exemplo: /home/usuario/scripts
Depois, dê as permissões de execução: chmod +x pdfs.sh ou chmod +x pdfs-zenity.sh
Não é necessário ser root para isso. Seu usuário comum é o suficiente.

Obs: Não testei, mas caso queira colocar os scripts no /usr/bin ou /usr/sbin, para que seja utilizado de qualquer diretório, vai precisar ser root para escrever nesses diretórios. Mas somente para copiá-los lá. Em princípio deve funcionar, mas como mencionei, eu não testei nesses locais.

Em seguida, no mesmo diretório, digite ./pdfs.sh (para uso em shell no terminal) ou ./pdfs-zenity.sh (para ver as janelinhas no ambiente gráfico).

O procedimento é o seguinte:

1 - Executando o arquivo pdfs.sh será pedido o caminho (o link/site/caminho onde se encontram os pdfs), que no exemplo eu utilizei o www.slackzine.com.br/repositorio.php. Este caminho é onde se encontram os arquivos pdfs com seus respectivos links. Se utilizar somente o caminho www.slackzine.com.br o lynx (a aplicação que busca os links do site) não entrará nos níveis em que se encontram os pdfs. Fique atento a isso.

2 - Digite o destino onde deverá guardar seus pdfs baixados. Por exemplo: pdfs-slackzine
Não utilize espaços nem caracteres especiais. O script se encarrega de colocar os arquivo no "/home/usuario/diretorio-escolhido", portanto deve-se somente digitar o nome da pasta.
Obs: escolha um nome de uma pasta que não exista. O script cria o diretório destino, caso o mesmo não exista. Se existir, mostra mensagem de erro, porque já existe e termina.

3 - Seguindo esses passos, é só aguardar os PDFs serem baixados e pronto.

No caso do script pdfs-zenity.sh, é o mesmo princípio. O que difere são as janelinhas, dialogos e botões, que como eu disse, é para ficar mais "bunitinhu".

Nestes testes, funcionaram adequadamente, conforme o esperado. Baixaram os arquivos pdfs nos diretórios escolhidos.

Abaixo segue o link com dois scripts com os comentários para cada função/linha do mesmo. Parece grande, mas são os comentários (uma forma de documentação do script) que o tornam longo. O código que faz toda a "bruxaria" realmente é pequeno. Talvez possa até ser reduzido, só depende de quem tiver melhor habilidade em shell script.

Shell Script PDFs-Download

Categorizado em : Linux Tags : sem tags


- página 1 de 2 seguinte