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.474 ]
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
Aplica quotas a partir de um arquivo gerado pelo repquota.
Select tempfiles - Database Oracle
Estok SH 1.2b - Controle de Estoque em Shell Script
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









