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

  



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

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

Clientes TCP


  

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