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.581 ]
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
linkswitch (redundância de internet)
Organize seu /var/log/messages
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
Alguém tem que acabar com ANATEL!!! (1)
GOG confirma suporte oficial ao sistema Linux: "o trabalho começo... (4)









