Enviando faixas tocadas no Amarok 2 para o Twitter

Publicado por Elder Marco (última atualização em 22/10/2009)

[ Hits: 5.555 ]

Homepage: http://www.eldermarco.com

Download amarok2twitter




Um script simples que publica o que você está ouvindo atualmente no Amarok 2 direto no seu Twitter, utilizando o curl. :-)

  



Esconder código-fonte

#!/bin/bash
#
#   Envia uma música que você está ouvindo no Amarok 2 
#      para o Twitter. 
#
#   Autor: Elder Marco/ www.idiossincrasias.com
#   Data: 20/10/2009
#-------------------------------------------------------------------


# Você pode salvar sua senha e usuário num arquivo oculto no seu diretório
# $HOME ou inserá-las aqui. Das duas maneiras, essa informação estará
# salva em um arquivo texto. Se for inserir no arquivo texto, crie-o
# com seu editor de textos preferido:
#
#   $ vi ~/.amarok2twitter
#
# Insira então os dados no arquivo usando as variáveis username e senha:
# Ex.:
#   username="ElderMarco"
#   senha="SenhadoElderMarco"
#
# e pronto. Alternativamente, você pode não definir a senha em lugar 
# nenhum (ou definir como "perguntar") e então o script irá pedir ela 
# a você toda vez que quiser enviar o que está ouvindo para o Twitter.
if [ -e $HOME/.amarok2twitter ]; then
   . $HOME/.amarok2twitter
else
   # Só altere aqui se você quer definir isso no próprio script.
   username="UserName"
   senha="perguntar"
fi

# Se não foi definida no arquivo nem no script. O usuário será questionado
# sobre ela.
senha=${senha:-"perguntar"}

if [ "$senha" = "perguntar" ]; then
   read -sp "Senha do Twitter: " senha
   echo
fi

# O Amarok está rodando?
rodando=`ps -e | grep 'amarok$'`
[ -z "$rodando" ] &&
{
   echo -n "O Amarok não está em execução. Saindo... "
   sleep 1; echo; exit 1
}

# Bom, então vamos obter algumas informações sobre metadados da faixa 
# em execução. A idéia veio do plugin music para o AMSN.
artista=`qdbus org.kde.amarok /Player GetMetadata | fgrep artist`
musica=`qdbus org.kde.amarok /Player GetMetadata | fgrep title`
album=`qdbus org.kde.amarok /Player GetMetadata | fgrep album`

# Retirando coisas desnecessárias.
artista=${artista/"artist: "/""}
musica=${musica/"title: "/""}
album=${album/"album: "/""}

# Formato da Mensagem a ser enviada. Se o álbum não foi definido, ele
# será omitido. No entanto, nome da música e artista são obrigatórios.
if [ -n "$musica" -a -n "$artista" ]; then
   if [ -n "$album" ]; then
      msg="♫ Ouvindo \"$musica\" por \"$artista\" do álbum \"$album\" [Amarok 2]"
   else
      msg="♫ Ouvindo \"$musica\" por \"$artista\" [Amarok 2]"
   fi
else
   echo "Não foi possível obter nome do artista ou nome de música."
   echo "Verifique os metadados do arquivo em questão."
   exit 1
fi

# Mais de 140 caracteres?
[ ${#msg} -ge 140 ] && 
{

   echo "Putz! Que azar! A mensagem a ser enviada possui mais de 140 caracteres."
   echo "Se ela for enviada, será truncada." 
   read -n1 -p "Deseja mandar mesmo assim?[s/N] " sn
   
   [ "$sn" = N -o "$sn" = n -o ! "$sn" ] &&
   {
      exit 1
   }
   
}

# Por fim, envia para o Twitter. 
echo -n "Enviando... "
curl --basic --user $username:$senha \
     --data status="$msg" http://twitter.com/statuses/update.xml \
     1>/tmp/amarok2twitter.$$ 2>&1

# Será que teve sucesso na autenticação e publicou o Tweet?
if ! grep "Could not authenticate you." /tmp/amarok2twitter.$$ 1>/dev/null ; then
   echo "pronto."
else
   echo "falhou. :("
fi

rm  /tmp/amarok2twitter.$$

Scripts recomendados

Twitter via https pelo terminal

Mostrando arquivos de forma diferente

Calculadora em Shell + - * ** / e Raiz quadrada

Script que simula uma locadora de DVD

Administração de usuários Linux


  

Comentários
[1] Comentário enviado por eldermarco em 22/10/2009 - 10:34h

Só aquele código ♫ é que não tem no script. No original é um símbolo mais bonito. Quando publiquei, percebi que havia sido trocado. :-)


[2] Comentário enviado por lcnrj em 18/05/2010 - 19:11h

Tem como funcionar no amarok 1.4??

[3] Comentário enviado por eldermarco em 18/05/2010 - 20:04h

Não, a maneira de se obter informação nos aplicativos do KDE 4 para frente é diferente da do KDE 3.5.x, até onde eu sei. No KDE 4 pode-se user o qdbus para se comunicar com o aplicativo, como foi feito nesse script. No Amarok 1.4, essa comunicação é feita com o comando dcop, de maneira que você teria de fazer as alterações necessárias no script. Seria apenas trocar algumas linhas. Eu não fiz aqui porque não uso o Amarok 1.4 pra testar, mas lhe deixo um link que contém exemplos de como fazer isso:

http://tuxomaniac.wordpress.com/2008/12/30/amarok-music-tracker-for-pidgin/


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts