Tabela do Campeonato Brasileiro Direto no Terminal

Publicado por Marcos Paulo Ferreira (última atualização em 17/07/2011)

[ Hits: 9.210 ]

Homepage: http://daemoniolabs.wordpress.com

Download campbra.sh




Quem nunca precisou ver a tabela do campeonato brasileiro e gostaria de ter uma facilmente à disposição? Eu sim, apesar que raramente acompanho futebol, mesmo porque meu time nem é lá um dos melhores (América-MG :|), mas mesmo assim interesso pelos resultados. Por exemplo, quem é líder da rodada, quem tá sendo rebaixado, etc...

Pensando nisso escrevi um script frufru (saída coloridinha e tudo) que mostra no terminal a tabela de classificação do campeonato brasileiro 2011. Essa tabela é obtida através do site do terra e as informações são extraídas pelo script.

A utilização é fácil, só executar:

$ ./campbra.sh

e esperar o script gerar a tabela.

Bem, é isso. t+

  



Esconder código-fonte

#!/bin/bash
# Autor: Daemonio (Marcos Paulo Ferreira)
# Contato: undefinido gmail com
#
# [campbra.sh]
# Script que mostra a tabela do campeonato brasileiro
# serie a. Ele esta configurado para mostrar a tabela
# do campeonato de 2011. Atraves da variavel SITE_TERRA
# voce pode apontar para a pagina de uma tabela de
# outro ano. O script ira funcionar somente se o terra
# manter o mesmo formato da pagina.
#
# [Execucao]
# $ ./campbra.sh
#
# [Dependencias]
# 1) wget
#
# Thu Jul  7 01:47:27 BRT 2011
# Thu Jul  7 11:19:34 BRT 2011
#

# Pagina usada para extrair as informacoes.
SITE_TERRA='http://esportes.terra.com.br/futebol'
SITE_TERRA=${SITE_TERRA}'/brasileiro/2011/seriea'
SITE_TERRA=${SITE_TERRA}'/classificacao_jogos'

# A pagina acima sera salva nesse arquivo.
ARQUIVO_TERRA=/tmp/tabelao$$

# Essa funcao recebe as informacoes de todos
# os times de uma vez so e monta uma tabela
# com esses dados.
function print_table() {
echo -n ''
printf '  %'$ALIGN's  %3s %3s %3s%3s %3s' 'Time' 'P' 'J' 'V' 'E' 'D'
printf ' %3s %3s %4s %2s' 'GP' 'GC' 'SG' '%'
echo ''

while read _zone
do
    read _position
    read _name
    read _points
    read _j
    read _v
    read _e
    read _d
    read _gp
    read _gc
    read _sg
    read _p

    # Escolhe a cor apropriada para cada time.
    case $_zone in
        # Libertadores
        'X1') _colorz=''
        ;;
        # Pre Libertadores
        'X2') _colorz=''
        ;;
        # Sul Americana
        'X3') _colorz=''
        ;;
        # Rebaixados
        'X4') _colorz=''
        ;;
        # Os que nao fedem nem cheiram :)
        *)    _colorz=''
    esac

    # Monta uma linha da tabela (cada time).
    echo -n $_colorz
    printf '%2d %-'$ALIGN's %3d %3d %3d' $_position "$_name" $_points $_j $_v
    printf '%3d %3d %3d %3d %4d %3d' $_e $_d $_gp $_gc $_sg $_p
    echo ''
done

# Legenda.
echo
echo '' '** Libertadores' ''
echo '' '** Pre-Libertadores' ''
echo '' '** Sul Americana' ''
echo '' '** Rebaixados :(' ''
echo
}

# Obtem as informacoes de todos os times.
function get_all_info() {
sed -n '/<tbody>/,/<\/tbody>/p' $ARQUIVO_TERRA
}

# Obtem o nome dos times. Essa funcao sera usada
# para obter o time com maior nome para assim fazer
# um alinhamento na hora de montar a tabela.
function get_team_names() {
sed -n '/main team-name/s/^[^>]*>[^>]*>\([^<]*\).*/\1/p'
}

# Sed rulezz..
# Aqui retira-se as tags html e obtem somente as
# info necessarias.
function do_it_sed() {
sed -n '
/<tbody>/b
/<\/tbody>/q
 x; s/.*//  ;x
s/^[^"]*"[-zone]*\([^ "]*\).*/X\1/ ; H; x; s/.//; x; n
s/^[^>]*>\([0-9]*\).*/\1/          ; H; n; n
s/^[^>]*>[^>]*>\([^<]*\).*/\1/     ; H; n; n
s/^[^>]*>\([0-9]*\).*/\1/          ; H; n
:loop
/^<\/tr>/bend
s/<td>\([-0-9]*\).*/\1/;
H; n; bloop
:end
g
p
'
}

#
# MAIN
#

# Baixando ...
echo '[+] Baixando a pagina da tabela do brasileirao... Espere.'
wget -q $SITE_TERRA -O $ARQUIVO_TERRA

# Obtem o alinhamento para a coluna nome dos times.
ALIGN=$(get_all_info | get_team_names | wc -L)
ALIGN=$((ALIGN+1))

# Do the job. :)
get_all_info | do_it_sed | print_table

# Remove arquivos temporarios.
rm -f $ARQUIVO_TERRA

# EOF

Scripts recomendados

Hora certa - Observatório Nacional

CriaDVD

Compilar latex e gerar pdf

Ubuntu Edgy

Shoot - programinha para tirar screenshot pelo prompt


  

Comentários
[1] Comentário enviado por jdfaria21 em 17/07/2011 - 13:39h

Parabéns Marcos, agora posso acompanhar o tricolor paulista rumo ao epta-campeonato enquanto estudo linguagem C.

[2] Comentário enviado por daemonio em 17/07/2011 - 13:45h

E eu vendo meu time sendo rebaixado jd .... :(

Fico feliz que tenha gostado.

t+

[3] Comentário enviado por daemonio em 08/08/2011 - 11:24h

Testei esse script em um computador aqui na faculdade e ele não funcionou :(. Se isso acontecer com vocês, o problema está
nas acentuações. Vou ver como resolve e depois posto aqui.


t+


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts