Veja os 10 últimos tópicos das comunidades
Publicado por Marcos Paulo Ferreira (última atualização em 30/03/2010)
[ Hits: 6.749 ]
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.$$
Instalador de Hotspot Linux Debian (SysV)
pptd - Simples daemon para controle de conexões pptp.
Configurando um Servidor de Nomes no CL10 apenas respondendo algumas perguntas...
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









