Veja os 10 últimos tópicos das comunidades
Publicado por Marcos Paulo Ferreira (última atualização em 30/03/2010)
[ Hits: 6.735 ]
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.$$
Calcular sub-rede, listar e salvar MACs e IPs da rede local
Java 7/8 - Instalação automatizada no Ubuntu
Instalando o WhatsApp no computador
Script para criação de pacote rpm.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









