tirinha-0.5.sh : Baixa as tirinhas da Ilustrada da Folha de São Paulo
Publicado por /dev/movebo 01/07/2009
[ Hits: 7.341 ]
Homepage: http://devmovebo.blogspot.com
Utilização: tirinha-0.5 [ OPÇÃO ]...
Baixa as tirinhas do site da Folha de São Paulo
-n, --name Define o nome do cartunista
-d, --date Informe o ano e o mês no formato AAAA[MM[DD]]
-t, --today Baixa as tirinhas do dia
-H, --html Cria e abre o arquivo html com as tirinhas do dia
-h, --help Exibe esta tela de ajuda
-V, --version Mostra a versão do programa
Obs.: Algumas melhorias, sobretudo na página html: ./tirinha-0.5 -H
#!/bin/bash # ########################################################################### # tirinha # # Função : Baixa as tirinhas do site da Folha de São Paulo # Autor : /dev/movebo # (C) Copyleft 2009 /dev/movebo # dev.movebo@gmail.com # http://devmovebo.blogspot.com # Versão 0.1 : Baixa em diretórios ordenados por ano # Versão 0.2 : Aceita datas no formato ANO, ANO/MES e ANO/MES/DIA # Versão 0.3 : Baixa apenas os quadrinhos de hoje ( -t ) # Versão 0.4 : Cria um arquivo html com os quadrinhos de hoje ( -H -t ) # Versão 0.5 : Melhorias na página html ########################################################################### ##################### # FLAGS e Variáveis # ##################### # URL das imagens da Folha de São Paulo URL="http://www1.folha.uol.com.br/fsp/images" DIRBASE=~/tirinha mes=0 # Inicializa mês com 0 dia=0 # Inicializa dia com 0 today=0 # Flag para baixar apenas as tirinhas do dia de hoje html=0 # Flag para produzir e abrir um arquivo html dl_a=0 # Baixar todo o ano dl_am=0 # Baixar todo o mês de um certo ano dl_amd=0 # Baixar apenas determinada data # Cartunistas válidos NOMES=" adao Adão Iturrasgarai ange Angeli caco Caco Galhardo glau Glauco niqu Níquel Náusea pira Piratas do Tietê" # Mesagem de erro padrão MSG="Utilização: $( basename $0 ) [ OPÇÃO ]... Baixa as tirinhas do site da Folha de São Paulo -n, --name Define o nome do cartunista -d, --date Informe o ano e o mês no formato AAAA[MM[DD]] -t, --today Baixa as tirinhas do dia -H, --html Cria e abre o arquivo html com as tirinhas do dia -h, --help Exibe esta tela de ajuda -V, --version Mostra a versão do programa " ########### # FUNÇÕES # ########### # Limpar function limpa() { rm -f 404.html # Apaga os arquivos de página inexistente } # Validar Data function data_valida() { # Se o ano for maior que o atual, então é inválido if [ $ano -gt `date +%Y` ] ; then echo "$(basename $0): ano inválido $ano" exit 3 # Se o ano for o atual e o mês for maior que este, é inválido elif [ $ano -eq `date +%Y` ] && [ $mes -gt `date +%m` ] ; then echo "$(basename $0): data inválida $mes/$ano" exit 3 # Se a data informada for maior que a data atual, é inválida elif [ $ano -eq `date +%Y` ] && [ $mes -eq `date +%m` ] && [ $dia -gt `date +%d` ] ; then echo "$(basename ${0}): data inválida $dia/$mes/$ano" exit 3 fi } # Pegar e verificar a data function checkdate() { # Se nenhuma data ou ano tiver sido especificado, exiba a mensagem de erro if [ -z "$date" ] ; then echo "`basename $0`: nenhuma data foi especificada" echo "Digite uma data no formato AAAA[MM[DD]]" exit 2 # Se houver uma data, verifique se seu comprimento é válido else # Serão aceitos 5, 7 ou 9 caracteres: # ANO = 4 + \n = 5 # ANO MES = 6 + \n = 7 # ANO MES DIA = 8 + \n = 9 while [ `echo $date | wc -m ` -ne 5 ] && \ [ `echo $date | wc -m ` -ne 7 ] && \ [ `echo $date | wc -m ` -ne 9 ] do echo -n "Digite uma data no formato AAAA[MM[DD]]: " read date done # Se saímos do loop é porque o tamanho é válido # Parseie o conteúdo if [ `echo $date | wc -m` -eq 5 ] ; then ano=$date dl_a=1 # Flag para baixar todo o ano echo "$( basename $0 ): baixando todo o ano de $ano" elif [ `echo $date | wc -m` -eq 7 ] ; then ano=` echo $date | cut -c 1-4 ` mes=` echo $date | cut -c 5-6 ` dl_am=1 # Flag para baixar todo um mês echo "$( basename $0 ): baixando o ano $ano e o mês $mes" elif [ `echo $date | wc -m` -eq 9 ] ; then ano=` echo $date | cut -c 1-4 ` mes=` echo $date | cut -c 5-6 ` dia=` echo $date | cut -c 7-8 ` dl_amd=1 # Flag para baixar um dia preciso echo "$( basename $0 ): baixando a data $dia/$mes/$ano" fi fi echo "$( basename $0 ): Aguarde..." } # Função baixar function baixar() { # Exiba a mensagem "Download ARQUIVO" echo -n "$( basename $0 ): download $SRC: " if [ -f "$DIR/$DEST" ] ; then echo "arquivo presente, nada a fazer" else wget -c ${URL}/$SRC -q # Baixar em silêncio com o wget # continuar se o arquivo estiver incompleto if [ -f $SRC ]; then # Vê se o arquivo existe agora echo "OK" # Se sim, diga OK mv $SRC $DIR/$DEST # e mova-o para o diretório com autor/ano else echo "NOT OK" # Do contrário diga NOT OK limpa # Em caso de erro o wget baixa um 404.html # vamos removê-lo fi fi } function checkname() { # Verifica se algum nome foi escolhido if [ -z "$name" ]; then echo "$( basename $0 ): faltando nome" echo "Use um dos nomes abaixo$NOMES" exit 1 fi # Verifica se o nome informado é um nome válido testname=$( echo "$NOMES" | awk '{ print $1 }' | grep "$name" ) if [ "$testname" != "$name" ] ; then echo "$( basename $0 ): nome $name inválido" echo "Use um dos nomes abaixo$NOMES" exit 1 fi DESC=$( echo "$NOMES" | grep "$name" | awk '{ print $2" "$3" "$4 }' ) echo "$( basename $0 ): baixando $DESC" } function getbrowser() { # Verifica o navegador presente if type "firefox" > /dev/null 2>&1 ; then BROWSER="firefox" elif type "epiphany" > /dev/null 2>&1 ; then BROWSER="epiphany" elif type "konqueror" > /dev/null 2>&1 ; then BROWSER="konqueror" elif type "opera" > /dev/null 2>&1 ; then BROWSER="opera" else echo "Navegador não encontrado."; exit 1 fi } ########################## # Command Line Interface # ########################## # Verifica se algum argumento foi digitado, do contrário exiba a mensagem de erro e saia. if [ -z "$1" ] ; then echo "$MSG" exit 1 fi # Tratamento das opções da linha de comando while [ -n "$1" ] do case "$1" in -n | --name ) shift name=$1 ;; -d | --date ) shift date=$1 ;; -t | --today ) today=1 ;; -H | --html ) today=1 html=1 ;; -h | --help ) echo "$MSG" exit 0 ;; -V | --version ) echo -n "$( basename $0 )" grep '^# Versão' "$0" | tail -n1 | cut -d: -f1 | tr -d \# exit 0 ;; * ) echo "$( basename $0 ): opção inválida $1" exit 1 ;; esac shift # O argumento atual foi processado, faça a fila andar done ######## # MAIN # ######## # Este if baixa apenas os quadrinhos do dia if [ $today -eq 1 ] ; then # Diretório onde armazenar os quadrinhos no formato ANO-MES-DIA DIR=$DIRBASE/$( date +%F ) # Se ele não existir, crie-o [ -d $DIR ] || mkdir -p $DIR ano=$( date +%Y ) mes=$( date +%m ) dia=$( date +%d ) # Formata o mês [ $mes -lt 10 ] && [ `echo $mes | wc -m` -eq 2 ] && mes="0$mes" # Formata o dia [ $dia -lt 10 ] && [ `echo $dia | wc -m` -eq 2 ] && dia="0$dia" # Se a flag html estiver ligada, vamos criar o arquivo html if [ $html -eq 1 ] ; then # Nome e localização do arquivo FILE=$DIR/index.html # Cabeçalho com tags html e css echo "<html><head><style type="text/css">body {background-image:url('http://media.bigoo.ws/content/background/paper/paper_35.jpg')} img.main {position:relative; left:50px} h3.main {text-align:left; text-indent:50px}</style><title>/dev/movebo ::. tirinhas da Ilustrada</title><meta charset=utf8><b><center><font size="7" face="Times">F<font size="6">OLHA DE <font size="7">S<font size="6">ÃO PAULO</font></ center></ b><body><br><center><font size="3">$( date +"%A," | tr [a-z] [A-Z]; date +" %d de %B de %Y")</ font></ center>" > $FILE fi for name in $( echo "$NOMES" | awk '{ print $1 }' | paste -s ) do # Monta o formato do arquivo como está no servidor da Folha SRC="$name$dia$mes$ano.gif" # Formate o arquivo racionalmente para armzenarmos localmente DEST="$name-$ano.$mes.$dia.gif" # Baixar o arquivo baixar # Se a flag estiver ligada e o arquivo existir, vamos incluí-lo no html if [ $html -eq 1 ] && [ -f $DIR/$DEST ] ; then DESC=$( echo "$NOMES" | grep "$name" | awk '{ print $2" "$3" "$4 }' ) echo "<h3 class="main">$DESC<br />" >> $FILE echo "<img class="main" src=\"$DEST\" /></ h3>" >> $FILE fi done if [ $html -eq 1 ] ; then echo "</ body><hr><h6><a href="http://devmovebo.blogspot.com">(C) Copyleft 2009 /dev/movebo</ a><br /> <a href="http://www.vivaolinux.com.br/~letifer">Espaço VOL</a><br /><a href="mailto:dev.movebo@gmail.com">Fale com o autor</a></ h6></ html>" >> $FILE getbrowser $BROWSER $FILE fi else checkname # Valide o nome do cartunista checkdate # Valide a data informada DIR=$DIRBASE/$name/$ano # Define diretório [ -d $DIR ] || mkdir -p $DIR # Se ele não existir, crie-o # Se a flag para baixar todo o ano estiver ligada... if [ $dl_a -eq 1 ] ; then for mes in `seq 1 12` # Para os meses de 1 a 12 do # Se o mês for < que 10 e a variável mês tiver apenas 1 caracter # ( além do \n ), ponha um zero na frente a título de organização if [ $mes -lt 10 ] ; then [ `echo $mes | wc -m` -eq 2 ] && mes="0$mes" fi # Loop dos dias for ((i=1;i<=31;i++)) # Para os dias de 1 a 31 do data_valida # Valide a data if [ $i -lt 10 ]; then dia="0$i" # Se o dia for < que 10 # ponha um 0 na frente else dia="$i" fi # Monta o formato do arquivo como está no servidor da Folha SRC="$name$dia$mes$ano.gif" # Formate o arquivo racionalmente para armzenarmos localmente DEST="$name-$ano.$mes.$dia.gif" # Baixar o arquivo baixar done done elif [ $dl_am -eq 1 ] ; then # Formata o mês if [ $mes -lt 10 ] ; then [ `echo $mes | wc -m` -eq 2 ] && mes="0$mes" fi for ((i=1;i<=31;i++)) # Para os dias de 1 a 31 do data_valida # Valida a data if [ $i -lt 10 ]; then dia="0$i" # Se o dia for < que 10 # ponha um 0 na frente else dia="$i" fi # Monta o formato do arquivo como está no servidor da Folha SRC="$name$dia$mes$ano.gif" # Formate o arquivo racionalmente para armzenarmos localmente DEST="$name-$ano.$mes.$dia.gif" # Baixar o arquivo baixar done elif [ $dl_amd -eq 1 ] ; then # Monta o formato do arquivo como está no servidor da Folha SRC="$name$dia$mes$ano.gif" # Formate o arquivo racionalmente para armzenarmos localmente DEST="$name-$ano.$mes.$dia.gif" # Baixar o arquivo baixar fi fi
Criar pacote Debian o firefox de br.mozdev.org
Monta e desmonta o CD-ROM automaticamente
Aprenda a falar os números de 0 a 99 em Inglês
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Alguém pode me ajudar porfavor como executar comandos ao iniciar no i3... (1)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (19)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba