1

私は pidgin dbus api を使用して、次の python コード スニペットを記述して、gtalk 仲間の名前とそのステータスを出力していました。

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 またはその他の方法を使用して、このリソース文字列を取得する方法はありますか?

助けてください ありがとう

4

1 に答える 1

0

wiki ページのスクリプトを使用できます。

#!/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ここでは次のようになります:
Android を使用する場合は
「example@gmail.com/androidXXXXXXXX」、gtalk の場合は
「example@gmail.com/gmail.XXXXXXXX」、その他の im の場合は「example@gmail.com/XXXXXXXX」。 X は 16 進値です。

于 2012-04-10T16:28:29.577 に答える