tirinha-0.5.sh : Baixa as tirinhas da Ilustrada da Folha de São Paulo
Publicado por /dev/movebo 01/07/2009
[ Hits: 7.502 ]
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
Converter arquivos CBR para PDF
Jogo campo minado em Shell Script
Instalador automático nVIDIA para Debian
Script simples para ripar CDs de áudio em mp3 com uso do CDDB para nomear as faixas.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Não consigo cadastrar nenhuma conta online (3)
O que esta havendo com o mercado de ti? (5)
Erro de permissão no samba (2)