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.535 ]
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
Backup com data no nome do arquivo
Transforme a manpage e infopage em pdf e texto
Adicionando novo usuário manualmente
bookmaker.bash: Script para imprimir livros com 4 páginas em uma folha
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









