Извлечение строки ресурса xmpp с использованием pidgin dbus python api - PullRequest
1 голос
/ 08 декабря 2011

Я использовал pidgin dbus api для печати имен моих друзей по gtalk и их статуса, написав следующий фрагмент кода Python:

import dbus


# Initiate a connection to the Session Bus
bus = dbus.SessionBus()

# Associate Pidgin's D-Bus interface with Python objects
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")


# Iterate through every active account
for acctID in purple.PurpleAccountsGetAllActive():
   for buddy in purple.PurpleFindBuddies(acctID,""):
      print purple.PurpleBuddyGetName(buddy),'Online' if purple.PurpleBuddyIsOnline(buddy) else 'Offline'

В Pidgin, когда я наводю указатель мыши на определенного собеседника, он также показывает строку ресурсов этого собеседника, например, gtalk, android и т. Д. .., которая сообщает мне, с какого ресурса пользователь вошел в систему. .

Есть ли способ получить эту строку ресурса, используя pidgins dbus api или каким-либо другим способом?

Пожалуйста, помогите Спасибо

1 Ответ

0 голосов
/ 10 апреля 2012

вы можете использовать скрипт со вики-страницы :

#!/usr/bin/env python

def my_func(account, sender, message, conversation, flags):
    print sender, "said:", message

import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()

bus.add_signal_receiver(my_func,
                        dbus_interface="im.pidgin.purple.PurpleInterface",
                        signal_name="ReceivedImMsg")

loop = gobject.MainLoop()
loop.run()

sender здесь будет что-то вроде этого:
'example@gmail.com/androidXXXXXXXX'в случае использования android или
'example@gmail.com/gmail.XXXXXXXX' для gtalk или
'example@gmail.com/XXXXXXXX' для других im, где X - шестнадцатеричное значение.

...