tirinha-0.5.sh : Baixa as tirinhas da Ilustrada da Folha de São Paulo
Publicado por /dev/movebo 01/07/2009
[ Hits: 7.518 ]
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
Instalador de novas versões do Java no Debian
GETDOWN - Baixa arquivos e descompacta
Pesquisa por arquivos redundantes (idênticos)
Criando pdf para impressão de livros
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (7)
Open Suse não abre wi-fi automaticamente (3)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)