使用pidgin dbus python api获取xmpp资源字符串

2024-05-15 23:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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或其他方法来获取这个资源字符串?在

请帮忙 谢谢你


Tags: inapiobjfor资源busgtalkpurple
1条回答
网友
1楼 · 发布于 2024-05-15 23:15:28

您可以使用wiki page中的脚本:

#!/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这里的smth是这样的:
'example@gmail.com/androidXXXXXXXX'如果使用android或
'example@gmail.com/gmail.XXXXXXXX'对于gtalk或
'example@gmail.com/XXXXXXXX'对于其他im,其中X是十六进制值。在

相关问题 更多 >