4

我的问题是我不确定如何连接它们。我是否需要以特定方式安装 pidgin 以便 dbus 与之交互?如果不是,是否必须运行 pidgin gui 才能让 dbus 使用它?

4

5 回答 5

5

根据来源,您可以执行以下操作:

#!/usr/bin/env python

def cb_func(account, rec, message):
    #change message here somehow? 
    print 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(cb_func,
dbus_interface="im.pidgin.purple.PurpleInterface",
signal_name="SendingImMsg")

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

也许你可以开始使用这个线索。

于 2009-08-13T22:12:43.497 回答
4
import dbus
from dbus.mainloop.glib import DBusGMainLoop

main_loop = DBusGMainLoop()
session_bus = dbus.SessionBus(mainloop = main_loop)
obj = session_bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

然后你可以使用紫色对象来调用一些这样的方法:

status = purple.PurpleSavedstatusNew("", current)
purple.PurpleSavedstatusSetMessage(status, message)
purple.PurpleSavedstatusActivate(status)
于 2009-08-16T04:57:29.793 回答
2

在开始使用 DBUS 与 Pidgin 交互时,一个非常有用的工具是D-Feet。您可以查看所有可以调用的可用方法,甚至可以直接从 GUI 执行它们。

于 2009-10-19T06:49:00.917 回答
2

下面的代码有一个在隐藏时显示好友列表的示例,以及另一个与特定联系人开始 IM 对话的示例。

import dbus
BUS_ARGS = ('im.pidgin.purple.PurpleService', '/im/pidgin/purple/PurpleObject')
obj = dbus.SessionBus().get_object(*BUS_ARGS)
purple = dbus.Interface(obj, 'im.pidgin.purple.PurpleInterface')

# show buddy list if it is hidden
purple.PurpleBlistSetVisible(1)

# start IM conversation with specific contact
account = purple.PurpleAccountsFindConnected('', '')
conversation = purple.PurpleConversationNew(1, account, 'alice@example.com')

我可以推荐一些与使用 dbus 和 pidgin 相关的有用资源:

  • Riding the D-Bus with Pidgin - 具有三个独立的 python dbus 示例。
  • Purple-remote - 这是我安装 pidgin 时安装在我的 ubuntu 机器上的 python 脚本。它是一个单一的文件,很容易阅读。
  • dbus-monitor - 监控 dbus 调用的好程序。当您找不到文档时,它可以帮助您发现您使用的程序正在使用哪些调用。
  • qdbusviewer - 很棒的图形工具,可以列出 pidgins dbus 方法。您也可以从工具本身调用它们。

qdbusviewer

于 2014-01-29T12:03:22.520 回答
0

您不需要对 Pidgin 进行任何特殊配置即可使用 D-Bus,但是如果您想使用它,它必须处于运行状态。您可以从 NetworkManager-dispatcher(第 1部分、第 2 部分)检查我用来控制 Pidgin 状态的脚本,作为如何通过 Python 中的 D-Bus 连接 Pidgin 的示例。

于 2009-10-19T14:45:52.543 回答