Ver último twitter pelo terminal ou na barra de notificação
Publicado por Raimundo Alves Portela (última atualização em 29/09/2011)
[ Hits: 6.272 ]
Homepage: http://portelanet.com
Download alertaTwitter_v1.0.tar.gz
Após descobrir um ótimo script para envio de mensagens para o twitter pelo terminal (http://360percents.com/posts/command-line-cwitter-status-update-for-linux-and-mac), resolvi brincar um pouco e adaptá-lo para outras situações.
O script alertaTwitter.sh mostra o ultimo twitter recebido no terminal e atualiza de tempos em tempos, sendo que o padrão é 60 segundos, mas pode ser definido outro valor passando por parâmetro.
./alertaTwitter.sh -t usuario senha -t VALOR_EM_SEGUNDOS
Se o yad estiver instalado, será apresentado um ícone da barra de notificação (ao lado do relógio), o que permitirá visualizar o último tweet passando o mouse sobre o ícone que aparecerá na barra, caso for clicado abrirá o firefox com a url desse tweet.
Se quiserem conhecer mais sobre o yad vejam: http://www.vivaolinux.com.br/artigo/Apresentando-o-Yad-zenity-melhorado
Se quiserem ver as opções disponível use:
alertaTwitters.sh -h
'-c'|'--console' Mostra os twitters no terminal
'-n'|'--notification' Mostra os twitters na barra de notificação
Para finalizá-lo:
./alertaTwitter.sh -k
Espero que gostem ;-)
#!/bin/bash # alertaTwitter_v1.0 # Desenvolvido por: Raimundo Portela - rai3mb@gmail.com # A base funcional desse script está disponível em: # http://360percents.com/posts/command-line-cwitter-status-update-for-linux-and-mac/ # # O script mostra o ultimo twitter recebido, se tiver instalado o yad # é apresentado um ícone da barra de notificação (ao lado do relógio) # que permite visualizar o ultimo tweet, caso for clicado abre # o firefox com a url desse tweet. # Se quiserem conhecer mais sobre o yad: # http://www.vivaolinux.com.br/artigo/Apresentando-o-Yad-zenity-melhorado/ # # Sintaxe de uso: # Uso alertaTwitters.sh usuario senha #tempo entre as consultas ao twitter sem segundos sleeptempo=60 # a cada 1 minuto [ ! -z "$5" ] && sleeptempo="$5" GRAFICO="yad" [ -z "$1" ] && echo -e "Sintaxe ./alertaTwitters.sh [-k]\n./alertaTwitters.sh [-c|-n] usuario senha [-t N ]" && exit arq_cookie="/tmp/cookie.txt" APLICATIVO=$(whereis "$GRAFICO" | cut -d " " -f 2) function _getConn() { echo -n > "$arq_cookie" #REQUIRED PARAMS (Parâmetos requeridos) # valida se o usuario e senha foram informados [ -z "$1" -a -z "$2" ] && echo "Sintaxe ./alertaTwitters.sh [-c|-n] usuario senha" && exit username="$1" password="$2" #EXTRA OPTIONS (Opções extras) uagent="Mozilla/5.0" #user agent (fake a browser) touch "$arq_cookie" #create a temp. cookie file #INITIAL PAGE initpage=$(curl -s -b "$arq_cookie" -c "$arq_cookie" -L --sslv3 -A "$uagent" "https://mobile.twitter.com/session/new") token=`echo "$initpage" | grep "authenticity_token" | sed -e 's/.*value="//' | sed -e 's/" \/>.*//'` #LOGIN loginpage=`curl -s -b "$arq_cookie" -c "$arq_cookie" -L --sslv3 -A "$uagent" -d "authenticity_token=$token&username=$username&password=$password" "https://mobile.twitter.com/session"` } function _getNewTwitter() { #HOME PAGE homepage=`curl -s -b "$arq_cookie" -c "$arq_cookie" -L -A "$uagent" "http://mobile.twitter.com/"` echo "$homepage" > /tmp/home.html while read LINHA do echo "$LINHA" | egrep -q '<strong><a href="http://mobile.twitter.com' [ $? -eq 0 ] && USUARIO=$(echo "$LINHA" | sed 's/<[^>]*>//g') && continue echo "$LINHA" | egrep -q '<span class="status">' [ $? -eq 0 ] && FRASE=$(echo "$LINHA" | sed 's/<[^>]*>//g') && continue nUSUARIO=$(echo "$USUARIO" | tr '[A-Z]' '[a-z]') echo "$LINHA" | egrep -q "/$nUSUARIO/status/[0-9]*" if [ $? -eq 0 ]; then URL_FRASE=$(echo "$LINHA" | egrep -o "/$nUSUARIO/status/[0-9]*") URL_FRASE="http://twitter.com$URL_FRASE" else continue fi [ "$FRASE" ] && [ "$USUARIO" ] && break done < "/tmp/home.html" #retorno da função echo "$USUARIO|$FRASE|$URL_FRASE" } function _alertaYad() { [ ! -x "$APLICATIVO" ] && echo "Você precisa do yad instalado" && exit _getConn "$1" "$2" while : do RETORNO=$( _getNewTwitter ) echo $RETORNO | egrep -q '.*\w+.*\|.*\w+.*\|.*\w+.*' if [ "$?" -eq 0 ]; then USUARIO=$(echo "$RETORNO" | cut -d'|' -f 1) FRASE=$(echo "$RETORNO" | cut -d'|' -f 2) URL_FRASE=$(echo "$RETORNO" | cut -d'|' -f 3) # faz a saída padrão não aparecer no terminal exec 1> /dev/null # faz o mesmo para a saída de ERROS exec 2>&1 kill "$PID" if [ ! "$FRASE" == "$OLDFRASE" ]; then yad --notification --image="msg.png" \ --text "$USUARIO -> $FRASE" --command "firefox $URL_FRASE" & PID="$!" else yad --notification --image="new.png" \ --text "$USUARIO -> $FRASE" --command "firefox $URL_FRASE" & PID="$!" fi else echo "ERRO NO $0 : Verifique seu usuário e senha" && exit 1 fi OLDFRASE="$FRASE" sleep $sleeptempo done } case "$1" in '-c'|'--console') _getConn "$2" "$3" while : do RETORNO=$( _getNewTwitter ) echo $RETORNO | egrep -q '.*\w+.*\|.*\w+.*' if [ "$?" -eq 0 ]; then USUARIO=$(echo "$RETORNO" | cut -d'|' -f 1) FRASE=$(echo "$RETORNO" | cut -d'|' -f 2) if [ ! "$FRASE" == "$OLDFRASE" ]; then echo -en "{FONTE}33[32;1m$USUARIO{FONTE}33[m -> " FRASECOR=$(echo "$FRASE" | sed 's/@\w*/\{FONTE}33[34;1m{FONTE}\{FONTE}33[m/g' | sed 's/#\w*/\{FONTE}33[36;1m{FONTE}\{FONTE}33\[m/g') echo -e "$FRASECOR" fi OLDFRASE="$FRASE" else echo "ERRO NO $0 : Verifique seu usuário e senha" && exit 1 fi sleep $sleeptempo done ;; '-n'|'--notification') _alertaYad "$2" "$3" & pid="$!" echo "$pid" > /tmp/pid_pai.temp echo " A aplicação está executando em segundo-plano (background) com o PID $pid Para finalizá-la corretamente, execute o comando: $0 -k " ;; '-k'|'--kill') MORRA=$(cat /tmp/pid_pai.temp) && [ "$MORRA" ] && kill -15 $MORRA 2>/dev/null ps aux | grep "yad --notification" > /tmp/pid.temp while read LINHA do MORRA=$(echo $LINHA | cut -d' ' -f 2) kill -15 $MORRA 2>/dev/null done < /tmp/pid.temp ;; '-h'|'--help') echo " '-c'|'--console') Mostra os twitters no terminal '-n'|'--notification') Mostra os twitters na barra de notificação '-k'|'--kill') Finaliza a aplicação desobediente ;-) ./alertaTwitters.sh [-c|-n] usuario senha [-t N ] " ;; *) echo "Entrada inválida!";; esac
Resolvendo alguns erros ao executar o apt-get, Ubuntu 16.04
Backup de Repositórios Subversion
Agenda de Contatos - Shell Script + MYSQL
Administração do Samba + LDAP - ainda para terminar
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
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[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