#!/usr/bin/env python import dbus.service import os.path import sys service = 'org.gnome.feed.Reader' object_path = '/org/gnome/feed/Reader' interface = 'org.gnome.feed.Reader' urls_source = os.path.expanduser('~/.newsbeuter/urls') class FeedReader(dbus.service.Object): @dbus.service.method(dbus_interface=interface, in_signature='s', out_signature='b') def Subscribe(self, url): added = False try: urls = open(urls_source, 'a') urls.write(url+'\n') urls.close() added = True finally: return added if __name__ == '__main__': import logging logging.basicConfig(level=logging.DEBUG) import gobject from dbus import SessionBus from dbus.mainloop.glib import DBusGMainLoop DBusGMainLoop(set_as_default=True) session_bus = SessionBus() bus_name = dbus.service.BusName(service, bus=session_bus) feed_reader = FeedReader(object_path=object_path, bus_name=bus_name) try: main_loop = gobject.MainLoop() main_loop.run() except KeyboardInterrupt: logging.info('Keyboard Interrupt. Exiting.') except: logging.error(sys.exc_info[0])