Tabela do Campeonato Brasileiro Direto no Terminal

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

[ Hits: 9.709 ]

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

Desativando mapas que não possuem bots no CS

Backup sem compactação

Backup da database do gerenciador de pacotes RPM

Ripar dvd

Script de Backup em Fita DAT


  

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