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.210 ]

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 ;-)

  



Esconder código-fonte

#!/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

Scripts recomendados

Script para fazer download de vídeos do YouTube

Limpando conexão ociosa

Filtrando trabalhos de impressão...

Liberação do servidor DNS no firewall

Backup bases de dados Firebird com envio via FTP e local


  

Comentários
[1] Comentário enviado por rai3mb em 29/09/2011 - 17:51h

Recomendo que for usá-lo em conjunto com o yad (para mostrar na barra de notificação) baixar o código completo, pois nele envio os 2 ícones usados para mostrar quando receber um twitter novo, essas imagens podem ser facilmente trocadas ;-)

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts