Despite the kind help of the Rojo people I still can't get the service to import my updated feed lists ('An error has occurred...Failed to import: null...We apologize for the inconvenience.'), so I'm still reading my Web feeds on Liferea for now. One nice bonus with Liferea is the ability to add feeds from the command line (or really, any program) courtesy GNOME's DBUS. Thanks to Aristotle for the tip, pointing me to 'a key message on liferea-help'. I've never used DBUS before, so I may be sketchy on some details, but I got it to work for me pretty easily.
I start with a simple script to report on added feed entries. It automatically handles feed lists in OPML or XBEL (I use the latter for managing my feed lists, and Liferea uses the former to manage its feed list).
import amara import sets old_feedlist = '/home/uogbuji/.liferea/feedlist.opml' new_feedlist = '/home/uogbuji/devel/uogbuji/webfeeds.xbel' def get_feeds(feedlist): doc = amara.parse(feedlist) #try OPML first feeds = [ unicode(f) for f in doc.xml_xpath(u'//outline/@xmlUrl') ] if not feeds: #then try XBEL feeds = [ unicode(f) for f in doc.xml_xpath(u'//bookmark/@href') ] return feeds old_feeds = sets.Set(get_feeds(old_feedlist)) new_feeds = sets.Set(get_feeds(new_feedlist)) added = new_feeds.difference(old_feeds) for a in added: print a
I then send a subscription request for each new item as follows:
$ dbus-send --dest=org.gnome.feed.Reader /org/gnome/feed/Reader \ org.gnome.feed.Reader.Subscribe \ "string:http://feeds.feedburner.com/DrMacrosXmlRants"
The first time I got an error "Failed to open connection to session
message bus: Unable to determine the address of the message bus". I did
an apropos dbus
and found dbus-launch
. I added the suggested stanza
to my .bash_profile:
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then ## if not found, launch a new one eval ‘dbus-launch --sh-syntax --exit-with-session‘ echo "D-BUS per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS" fi
After running dbus-launch the dbus-send worked and Liferea immediately popped up a properties dialog box for the added feed, and stuck it into the feeds tree at the point I happened to last be browsing in Liferea (not sure I like that choice of location). Simple drag&drop to put it where I want. Neat.