#!/usr/bin/ruby require "dbus" require "rubygems" require "librmpd" class Pidgin2MPD def initialize @b=DBus::SessionBus.instance @s=@b.service("im.pidgin.purple.PurpleService") @o=@s.object("/im/pidgin/purple/PurpleObject") @o.introspect @i=@o["im.pidgin.purple.PurpleInterface"] end def change(msg) status=@i.PurpleSavedstatusFind("MPD2Pidgin").to_s.to_i if status==0 @i.PurpleSavedstatusNew("MPD2Pidgin", 2) status=@i.PurpleSavedstatusFind("MPD2Pidgin").to_s.to_i end @i.PurpleSavedstatusSetMessage(status, msg) @i.PurpleSavedstatusActivate(status) end end class MPD2Pidgin def initialize(host="localhost", port="6600") @host,@port=host,port @mpd=MPD.new @host, @port @mpd.register_callback(self.method('callback'), MPD::CURRENT_SONG_CALLBACK) end def start @mpd.connect true puts "Ctrl+D para fechar" t=Thread.new do readlines self.stop end t.join end def stop @mpd.disconnect end def callback(c) @current=c msg="♫ #{@current.title} - #{@current.artist}" # Personalize essa linha, é divertido. if !@pidgin @pidgin=Pidgin2MPD.new end @pidgin.change msg end end mpd=MPD2Pidgin.new # "127.0.0.1", "6600" # os argumentos são host e porta, para quem precisar mpd.start