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.567 ]
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
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - EXCLUINDO USUÁRIO
Dicionário e tradutor baseado no Michaelis
Raiz Quadrada (Square Root) para Bash
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)
Vou destruir sua infância:) (7)
Interface gráfica com problema (0)









