Veja os 10 últimos tópicos das comunidades
Publicado por Marcos Paulo Ferreira (última atualização em 30/03/2010)
[ Hits: 6.785 ]
Homepage: http://daemoniolabs.wordpress.com
Esse script mostra os 10 últimos tópicos de várias comunidades do VOL.
Basta você informar as comunidades no código fonte do script que ele automaticamente baixa os tópicos e os mostra para você.
Uso:
$ ./showTopvol
Selecione as comunidades , clique em ok e espere.
Obs.: O script tem como dependências:
-- lynx
-- Xdialog
Instale-os antes de utilizar o showTopVol.
Estou usando-o no meu Fluxbox e ele me ajuda bastante quando preciso ver se alguém respondeu alguma pergunta minha ou se há
algum post novo em determinado tópico.
Espero que gostem.
t+
#!/bin/bash
#
# Autor: Daemonio (undefinido at gmail com)
# Thu Jan 7 06:12:38 BRST 2010
# Fri Jan 8 14:51:14 BRST 2010
# Sat Mar 27 10:54:42 BRT 2010 Publicacao
#
# = Descricao =
# Script que mostra os ultimos 10 topicos das comunidades do site vivaolinux.
# Os nomes das comunidades devem ficar na variavel COMUNIDADES separados por ':'
#
# = Uso =
# $ ./showTopVol
#
# = Dependencias =
# Para o script funcionar perfeitamente voce precisa dos seguintes programas
# --> Xdialog
# --> lynx
# --> fgrep ( alias para grep -F )
COMUNIDADES='Slackware:Shell-Script:Linux-Basico:Sed-Awk-ER-Manipulacao-de-Textos-Strings:C-C++:Comandos'
LINK_COMUNIDADE='http://www.vivaolinux.com.br/comunidade'
COMUNIDADE_NOME=
INDICE=1
OPCOES=
function filtrar_e_formatar {
echo
echo "==== Ultimas da comunidade $COMUNIDADE_NOME ===="
echo " $LINK_COMUNIDADE/$COMUNIDADE_NOME"
echo
fgrep -A2 "<a href=\"/topico/$COMUNIDADE_NOME" /dev/stdin |
sed -n 'N;N;s,.*/">\([^<]*\)[^?]*?login=\([^"]*\).*">\([^<]*\).*,(Autor: \2 - Posts: \3)\n --> \1\n,p;n'
echo '-------------------------------------------------------'
}
show_gauge() {
local TOTAL=
local INTERVAL=1
local PORCENTAGEM=1
local TEMPO=0
local SAIDA=
#
# O ping retorna um tempo total relativo para ser usado no gauge.
# Esse tempo e' uma grossa aproximacao do tempo que o lynx
# obtem uma pagina. O Xdialog tem um timeout de 2 minutos, se o ping
# rodar em menos de 2 minutos, entao a caixa de dialogo e' fechada (killed :).
#
Xdialog --title 'Pingando o vol...' --no-buttons\
--infobox 'Esperando resposta do vivaolinux ...' 10 45 120000 &
(time ping -c 3 'www.vivaolinux.com' ) 2> /tmp/_time.$$ 1> /dev/null
kill $!
SAIDA=`sed -n '2p' /tmp/_time.$$ | awk '{print $2}'`
TOTAL=`echo $SAIDA | sed "s/^\([^m]*\)m\([^.]*\).*/(\1*60+\2+2)*$1/" | bc`
#
# Mostra a porcentagem para o gauge. Quando ela for quase 100, mostra
# o valor 99 e espera o lynx retornar a pagina. Logo depois o valor
# 100 e' mostrado, espera-se 2 segundos e o loop termina.
#
while true
do
if [ $TEMPO -le $TOTAL ]
then
PORCENTAGEM=$((TEMPO*100/TOTAL))
[ $PORCENTAGEM -lt 100 ] && echo $PORCENTAGEM
TEMPO=$((TEMPO+1))
else
echo 99
fi
sleep $INTERVAL
[ ! -e /tmp/lynx_flag ] && echo 100 && sleep 2 && break
done |
Xdialog --title 'Obtendo topicos ...' --gauge "Obtendo topicos das comunidades\nselecionadas ..." 10 45 0
rm -f /tmp/_time.$$
}
#
# Adiciona a opcao Tudo
#
COMUNIDADES="$COMUNIDADES:Tudo"
#
# Troca o delimitador de ':' por espaco.
#
COMUNIDADES=${COMUNIDADES//:/ }
#
# Monta a tela principal e as opcoes sao retornadas separadas por espaco
# na variavel OPCOES
#
OPCOES=$(for COMU in $COMUNIDADES
do
if [ $COMU = 'Tudo' ]
then
echo "Tudo Mostrar-tudo off"
else
echo "$INDICE $COMU off"
fi
INDICE=$[INDICE+1]
done | Xdialog --title 'Selecione uma opcao' --stdout --separator ' '\
--checklist 'Selecione as Comunidades' 30 80 10 `cat`)
#
# Se clicou em cancelar ou fechou a janela do Xdialog, entao o script e'
# finalizado, sem mostrar mensagem de erro.
#
[ $? -ne 0 ] && exit
#
# Se nenhuma opcao foi escolhida, entao o script e' finalizado.
#
[ -z "$OPCOES" ] && Xdialog --title 'Saindo ...'\
--msgbox 'Nenhuma opcao foi selecionada' 10 30 && exit
#
# Se escolheu a opcao Tudo entao coloca todos os indices validos
# na variavel OPCOES (1 2 3 .. n-1 )
#
[[ $OPCOES =~ 'Tudo' ]] && OPCOES=$(eval echo {1..`echo $COMUNIDADES | tr ' ' '\n' | wc -l | sed 's/$/-1/' | bc`})
#
# QTD contem o total de opcoes. Esse valor e' enviado para a funcao show_gauge
# como parametro e e' usado para calcular o tempo total para obter
# todas as paginas.
QTD=`echo $OPCOES | tr ' ' '\n' | wc -l`
#
# Enquanto o arquivo /tmp/lynx_flag existir, o gauge e' mostrado. O gauge so para
# quando o lynx retornar a pagina (e logo depois o arquivo flag e' deletado)
#
touch /tmp/lynx_flag
show_gauge $QTD &
for INDICE in $OPCOES
do
COMUNIDADE_NOME=$(echo $COMUNIDADES | cut -f$INDICE -d ' ')
lynx --source "$LINK_COMUNIDADE/$COMUNIDADE_NOME" | filtrar_e_formatar
done > /tmp/vol_conteudo.$$
rm -f /tmp/lynx_flag
wait
#
# Mostra a tela final com todos os topicos.
#
Xdialog --title 'Topico das Comunidades' --textbox /tmp/vol_conteudo.$$ 50 120
rm -f /tmp/vol_conteudo.$$
slackpigs - veja os pacotes que mais ocupam espaço no Slackware
Compartilhando a Internet com Iptables
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Fiz uma pergunta no fórum mas não consigo localizar (13)
Quais os códigos mais dificeis que vcs sabem fazer? (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (7)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... [RES... (8)
Dá para criar um bom jogo usando a linguagem de programação C? [RESOLV... (1)









