domingo, 15 de junho de 2008

Matando o tempo

Recebi uma reclamação ontem por não ter mais postado nada no blogue. A reclamação é justa, na verdade. Estive, entretanto, entretido com outra trapalhada (percebeu a aliteração? :P) : meu programa de tocar músicas no computador.

Uso quase exclusivamente Ubuntu, e vinha usando o Exaile como tocador de músicas, mas o projeto ainda não está no nível que eu gostaria. Resolvi parar no RhythmBox, que é o tocador nativo para ambientes GNOME. Experimentei alguns outros antes, como o Listen, GMusicBrowser e Amarok (que gostei mais, mas como precisa do KDE para rodar, não uso). Sempre havia um recurso que gostaria de usar mas não estava disponível. Um dia desses pensei: por que eu mesmo não adiciono as funcionalidades que desejo a um programa? E tenho feito isso mesmo!

Senti a falta de atualizar meu status do Pidgin automaticamente, usando as informações da música atual. O que fiz? Escrevi meu plugin para fazer o serviço, oras! Não é algo muito complexo, mas é um início. Escrevi em Python, e usei DBus, além das ligações do RhythmBox com Python, claro. Tive que caçar um bocado de detalhes a respeito do RhythmBox e do Pidgin, para entender como mandar informações de um lado para outro. No fim, não é algo realmente complicado, mas precisa entender o básico do DBus.

Para quem quiser se aventurar, vão alguns links:
Por fim, o link para download, sob licença GPL. Meu código foi inspirado no plugin IMStatus do Exaile. Para usar, você deve descompactar o conteúdo do arquivo na pasta "~./.gnome2/rhythmbox/plugins/imstatus/" e depois ativar em seu RhythmBox (testei na versão 0.11.2). Se tiver alguma sugestão ou crítica ou quiser reportar algum erro ou tiver alguma dúvida, deixe seu comentário :)

10 comentários:

  1. Bem, tudo bem se mesmo eu fazendo exigências não conseguir fazer nada do que está descrito nesse post?

    Bjocas!

    ResponderExcluir
  2. Olá Alê,

    Eu tb estava procurando essa funcionalidade há algum tempo...

    Muito bom o plugin, funfou bem no meu notebook... Tá de parabéns!!!
    bjos

    ResponderExcluir
  3. Olá amigo!!!

    Eu estou tentando usar o seu plugin no mandriva, mas não estou conseguindo, em casa eu uso Ubuntu, mas aqui no serviço estou usando mandriva, fiquei interessado
    no seu plugin e gostaria de usar.
    Eu não sei muito sobre Phyton, mas ele emite o seguinte erro:

    Traceback (most recent call last):
    File "/usr/lib/rhythmbox/plugins/imstatus/imstatus.py", line 44, in activate
    title, album, artist, year = self.get_current_track_info (player)
    File "/usr/lib/rhythmbox/plugins/imstatus/imstatus.py", line 113, in get_current_track_info
    title = db.entry_get (entry, rhythmdb.PROP_TITLE)
    TypeError: entry should be a RhythmDBEntry, is a void

    ResponderExcluir
  4. Olá, Renato!

    Eu testei o plugin com as versões do Ubuntu (0.11.2 e 0.11.5) e deram sempre certo... você pode dizer qual a versão do RhythmBox que está instalada no seu Mandriva?

    ResponderExcluir
  5. Olá Alexandre,

    estou utilizando a versão 0.11.5. Mas senão tiver como, fico sem utilizar no mandriva e só utilizo em casa.

    Obrigado!!!

    ResponderExcluir
  6. Olá, Renato.

    Não sei como te ajudar no Mandriva... achei que não deveria ter problema caso a versão do RhythmBox estivesse certa. Pelo que testei aqui, essa mensagem acontece no caso de tentar ativar o plugin sem nenhuma música tocando.
    Por curiosidade, como você obteve essa mensagem de erro?

    Sugiro que você teste os comandos a seguir no console Python do RB (é só ativar o plugin) com uma música tocando, para verificar de onde saiu esse erro.

    player = shell.get_player ()
    entry = player.get_playing_entry ()
    db = player.props.db
    title = db.entry_get (entry, rhythmdb.PROP_TITLE)

    De qualquer forma, preciso corrigir esse erro. Obrigado!

    ResponderExcluir
  7. Olá Alexandre!!!

    Eu postei a um tempo que o seu plugin não funcionava no Mandriva, mas com o passar do tempo ele passou a funcionar tranquilo!! Não sei o porque, mas é só para deixar avisado. Gostaria de agradecer a sua atenção!!!.

    ResponderExcluir
  8. Obrigado pela informação, Carl! O link já está corrigido; tente este aqui: imstatus-0.1.tar.gz

    ResponderExcluir