Replacing TPGoogleReader

Futurama quote pattern

Note: No actual code here.

Back in July 2013, Google discontinued its "Reader" RSS/Atom feed aggregation service. Basically: you subscribed to a number of websites via their syndication feeds. Google would periodically query the feeds for new content. It would also keep track of what articles you had "read". (More accurately: marked as read. You didn't actually have to read them.) There are a number of services that do that sort of thing. I used Reader because of the independently-developed TPGoogleReader Chrome extension. Specifically, for one lousy feature of TPGoogleReader. You could get it to:

  1. Query Google Reader for your unread articles;

  2. Automatically open up a number of browser tabs showing unread articles, up to a specified maximum;

  3. And this is the critical part: when I closed an auto-opened tab, TPGoogleReader would open up the next unread article in a new tab in the background.

This made browsing a large number of sites an efficient breeze. When I finished reading one article, a tab-closing control-W all by itself would bring up a new background tab with the next unread article in my feed. No mouse-messing. Concentrate on reading content. Bliss.

It took a few years, and numerous false starts, but I'm back at that point again. Here's how:

  • I moved to a free Inoreader account to take over the RSS feed monitoring. They are reliable, active, and seem to be hanging around.

  • I wrote a "fetch" Perl script that uses the WebService::Google::Reader to log into Inoreader and download unread article data. As you might guess from the name, the module author originally developed for Google Reader, but graciously made the necessary changes to make it work with Inoreader.

    I run this script periodically via anacron.

  • The final bit of the puzzle was the Chromix-Too extension for the Google Chrome web browser. This consists of a JavaScript client/server pair that communicate over a Unix-domain socket. The client bit has a simple command interface, and I only use two of them:

    1. Tell me how many tabs the browser has open:

      chromix-too raw chrome.tabs.query '{}'

      The output is a mass of detailed JSON, but that's pretty easy to parse.

    2. Open a new tab in the background with a specified URL:

      chromix-too raw chrome.tabs.create '{"active":false,"url":"URL"}'

I'm leaving out a lot of details, but they are pretty straightforward (and of very little general interest): storing a local list of unread articles, figuring out whether it's appropriate to open one (and if so which one), time delays, etc. I wrap all this logic in a "reader" Perl script which I run whenever I have the browser running.

But I'm back to web-surfing Nirvana again, so that's good. The only downside (sort of) is that all this happens on a single (Linux) host. That's OK for me.

Last Modified 2018-12-28 4:45 AM EDT