pidgin
deconfigurationother_softwarepidgin-fernsteuern

Über D-Bus lassen sich Befehle an Pidgin schicken. Das ganze ist bislang nicht sonderlich gut dokumentiert, weshalb ich meine Erkenntnisse teilen möchte. Mit dem D-Bus-Debugger D-Feet konnte ich etwas reverse-engineering betreiben und mir Konzepte der D-Bus-Kommunikation von Pidgin erschließen. Dabei herausgekommen sind zwei Pythonscripts

Von der Kommandozeile aus Nachricht schreiben

purple-remote jabber:goim?screenname=hackerspace-bielefeld@conference.jabber.ccc.de&message="test22"

History eines Chatraums ausgeben

# getChatHistory.py
import dbus

bus = dbus.SessionBus()
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

for conv in purple.PurpleGetConversations():
  for msg in reversed(purple.PurpleConversationGetMessageHistory(conv)):
    print "<" + purple.PurpleConversationMessageGetSender(msg) + ", " + ">" 
    print purple.PurpleConversationMessageGetMessage(msg) + "n"

Liste der Benutzer im Chat ausgeben

# getUsers.py
#!/usr/bin/env python

import dbus

bus = dbus.SessionBus()
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

for chat in purple.PurpleGetChats():
  chat = purple.PurpleConvChat(chat)
  userlist = []
  for usr in purple.PurpleConvChatGetUsers(chat):
    userlist.append( (usr, purple.PurpleConvChatCbGetName(usr)))
  for usr in sorted(userlist, key=lambda s: s[1].lower()):
    print usr[1]
top