【问题标题】:Fetching xmpp resource string using pidgin dbus python api使用pidgin dbus python api获取xmpp资源字符串
【发布时间】:2012-01-16 03:28:04
【问题描述】:

我正在使用 pidgin dbus api 通过编写以下 python 代码 sn-p 来打印我的 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 或其他方式获取此资源字符串?

请帮忙 谢谢你

【问题讨论】:

    标签: python xmpp dbus pidgin


    【解决方案1】:

    你可以使用来自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 这里会是这样的:
    'example@gmail.com/androidXXXXXXXX' 如果使用 android 或
    'example@gmail.com/gmail.XXXXXXXX' 用于 gtalk 或
    'example@gmail.com/XXXXXXXX' 用于其他即时通讯,其中 X 是十六进制值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多