Veja os 10 últimos tópicos das comunidades
Publicado por Marcos Paulo Ferreira (última atualização em 30/03/2010)
[ Hits: 6.538 ]
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.$$
Backup bases de dados Firebird com envio via FTP e local
consistir variável numérica ou alfa-numérica
Firewall simples, com opções de redirecionamento
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta