rsslibnotify – My very first python script

UPDATE: I included tante’s comments and extended the program. The config-file now allows you to define the checking interval and will be automatically created if nonexisting.

I noticed that gwibber removed their rss support for some reason. However, it would be really nice to have the option for libnotify to …well… notify you on gnome when there is something new on rss/atom feeds you find important. Since I always wanted to learn python anyway, I hacked together a small script, which does exactly that. Just create a config file in ~/.rsslibnotify with a number of rss/atom feeds separated by newlines and you will be informed every ten minutes via libnotify if there’s something new. (see update above)

feedparser and pynotify need to be installed prior. Btw. feedparser is giving me errors while installing, however seems to be working without a problem.

Of course this script is far from perfect. Keep in mind it’s my first python script and I worked at most one to two hours on it ;).

Available for download here: rsslibnotify.py

#!/usr/bin/python
# coding=utf-8
 
#
#    Copyright 2010 by Daniel Süpke
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
#
# rsslibnotify v0.3
#
 
import pynotify
import feedparser
import time
import os.path
import sys
 
config_file = os.path.expanduser('~/.rsslibnotify')
feeds = []
titles = []
 
try:
    file = open(config_file, 'r')
except:
    file = open(config_file, 'w')
    file.write('# amount of seconds to wait before checking for new items\n')
    file.write('interval 600\n\n')
    file.write('# feeds to check\n')
    file.write('feed http://suepke.eu/feed/\n')
    file.write('feed http://rss.golem.de/rss.php?feed\x3dRSS1.0\x26ms\x3drss\n')
 
    print('Config file not found! Created example file at ' + config_file + '. Please edit.')
    sys.exit(0)
 
for line in file.readlines():
    config_line = line.rstrip().partition('#')[0] # Remove \n and comments
 
    if config_line.startswith('feed '):
        feeds.append(config_line.partition('feed ')[2])
    if config_line.startswith('interval '):
        interval = int(config_line.partition('interval ')[2])
 
    titles.append('')
 
file.close()
 
if not feeds:
    print('There were no feeds in your config file at ' + config_file + '. Exiting...')
    sys.exit(0)
 
if not interval:
    print('No check interval has been defined. Assuming ten minutes.')
    interval = 600
 
# Check for new feeds every interval seconds
while True:
    i = 0
 
    for feed in feeds:
        d = feedparser.parse(feed)
 
        # Assume new content if there is a new title
        if d.entries[0].title != titles[i]:
            titles[i] = d.entries[0].title
 
            if pynotify.init('rssnotify'):
                n = pynotify.Notification(d.feed.title, d.entries[0].title)
                n.show()
            else:
                print('there was a problem initializing the pynotify module')
        i += 1
 
    time.sleep(interval)

Staying up-to-date with Web Feeds

This time, the article is written both in English, and German.
Diesmal gibt’s den Artikel sowohl in Englisch als auch auf Deutsch.

English version

Most, if not all of my readers are friends that know me personally. Since I am into computer science and geeky stuff, some of them know about techniques like RSS, too, but others don’t. I am sure, most of my readers are eagerly waiting all day just for a new entry in my blog, refreshing their browser every five minutes, but I have some good news: You don’t need to and will still be informed on the spot about my newest brilliant insights! Something called RSS (Really Simple Syndication) or Atom (which is basically the same) will tell you automatically when something new happened. This article will tell you how to use these, it’s easy and yet very useful – not only for this blog. It is written for firefox and thunderbird, but other browsers probably have similar features.

Built-in RSS functionality in firefox

Built-in RSS functionality in firefox

Let’s just dive into it right now, without any technical mumbo jumbo: On the right side of this blog you might have noticed a button labelled RSS feed. Open this one in a new tab, by pressing the CTRL key and clicking on it (CTRL open pages in the background, instead of in the current tab of your browser). If you have a look at the page opened, you will see an overview of all recently published articles, as well as a suggestion by firefox to subscribe to this feed. A feed is data to tell your software when there is new content, just like the rss page you just clicked on. If you subscribe to it, a new bookmark will appear. Now, if you click on it, it will not open the web site, but instead it will give you an overview of all articles/content that is currently available on the site. Furthermore, if there is new content, the icon will change automatically, so now you are always informed, if there is something new happening! Even more, it now becomes very easy to select any article previously created just using one bookmark. But, there’s also an even easier way to do this: Noticed the little icon in the address bar before? Just click on it, then firefox will allow you to subscribe to any feed it found on the page (see Screenshot). But it does not have to stop here; today, in the times of Web 2.0 (don’t get me started on the meaning of this term…), there are most web sites having regularly updated content allow you to subscribe to feeds, not only blogs. I will list some examples here, to give the idea of content subscription:

Basically, if you regularly visit an interesting site and want to be informed of its changes easily, just search the page for the term “rss” (or use the firefox icon). Often, there are also options to directly add it to personalised start pages like iGoogle or Netvibes. For myself, I prefer another option even more: a news/feed reader client like thunderbird.

Adding a RSS feed to thunderbird

Adding a RSS feed to thunderbird

Thunderbird’s RSS functionality is not much more advanced than firefox’, but I like it a bit more, though that’s just personal preference. Let’s say, you want to subscribe to the sites listed above. Open thunderbird and add a new account for News & Blogs. To do so, click the menu in the following order: File -> New -> Account -> RSS News and Blogs. Choose any name you want (default is fine) and finish. Now, there is a new account in the left side of thunderbird. Right-click on it. Now, create two new folders, one for news and one for blogs (this is optional, each feed can also have it’s site name as a folder, this is merely for aggregating different feeds into one folder). Next, right-click again and choose subsribe. Click Add, copy&paste the feed url and choose the folder it should be put into (see screenshot). If you select News & Blogs, a new folder will be created automatically. Now, every time you open thunderbird (and every half an hour), the feeds you subscribed to will be automatically checked for new content. And using the subject, you can immediately choose if you’re interested to read more, or discard it. Of course, in this blog every article is worth reading ;) . To conclude: RSS and Atom feeds are a very elegant way to be up-to-date without much effort. Instead of having to check for new content yourself, your software will tell you when there’s something new. All your favourite sites will be checked, giving you an instant overview, interesting and uninteresting new content at once. Not only it safes a lot of time, you also will not miss anything again if not checking for some time. Personally I have subscribed eight feeds at the moment, which is not so much compared to others, but still I enjoy it a lot. Hope you found this article to be useful and maybe will try out RSS for yourself, if you haven’t yet.

Deutsche Version

Die meisten, wenn nicht sogar alle Leser meines Blogs sind Freunde, die ich persönlich kenne. Da ich selbst Informatiker bin, kennen wahrscheinlich einiger meiner Leser selbst solche Technniken wie RSS, aber andere werden es nicht kennen. Ich bin mir sicher, dass meine Leser, wenn die Zeit es zulässt, den ganzen Tag damit verbringen, auf neue Inhalte dieses Blogs zu warten, nichts anderes machend als ihren Browser alle fünf Minuten neu zu laden, aber für solche Fälle habe ich eine gute Nachricht: Das ist nicht weiter notwendig, denn es gibt einen eleganten Weg, wie ihr automatisch über die neuesten brillianten Artikel meinerseits informiert werdet!. Eine Technik namens RSS (Really Simple Syndication) oder Atom (was im wesentlichen das Gleiche bietet) leistet hier Hilfestellung. Dieser Artikel soll demonstrieren, wie man diese Techniken nutzen kann, was nicht nur einfach und nützlich ist, sondern  auch von zahlreichen weiteren Seiten angeboten wird. Ich gehe dabei von Firefox und Thunderbird aus, für andere Programme gibt es aber vermutlich ähnliche Funktionalität.

Eingebaute RSS-Funktionalität in Firefox

Eingebaute RSS-Funktionalität in Firefox

Ich fange gleich an, ohne großes technisches blah-blah. Auf der rechten Seite dieses Blogs (oben) habt ihr vielleicht einen Knopf namens RSS feed bemerkt. Öffnet diesen in einem neuen Tab, indem ihr die STRG-Taste gedrückt haltet und draufklickt (STRG öffneten Seiten in einem neuen Tab im Hintergrund, statt im gleichen Fenster). Was dort zu sehen ist, ist eine Übersicht über alle aktuellen Artikel sowie ein Vorschlag von Firefox, diesen Feed zu abonnieren. Ein Feed ist im Prinzip eine Sammlung von Daten, die einer Software sagen, wann und welche neuen Inhalte verfügbar sind. Wenn ihr diesen Feed nun abonniert, wird ein neues Lesezeichen angelegt. Wenn ihr dieses anwählt, wird es nicht wie üblich zur Seite gehen, sondern eine Auswahl aller aktuellen Artikel darstellen.  Darüber hinaus prüft Firefox jede Stunde nach neuen Inhalten und zeigt automatisch an, wenn etwas Neues verfügbar ist. Außerdem wird es so sehr einfach, vorherige Artikel mit nur einem Lesezeichen aufzurufen, ohne die Seiten durchsuchen zu müssen. Aber es gibt sogar noch einen einfacheren Weg, das zu erreichen: Ist euch das Icon in der Adressleiste aufgefallen? Dieses erscheint, wenn eine Seite Feeds anbietet. Wenn dieses Icon angeklickt wird, können ganz einfach alle Feeds der Seite abonniert werden (s. Screenshot). Aber es ist das Zeitalter des Web 2.0 (fangt bloß nicht an, mich auf die Bedeutung dieses Begriffs anzusprechen…), d.h. sinnvolle Funktionalität wird überall kopiert und überall eingesetzt. Die meisten Seiten, die regelmäßig neue Inhalte veröffentlichen, stellen Feeds zur Verfügung. Ein paar Beispiele:

Grundlegend: Wenn ihr regelmäßig eine interessante Seite besucht und euch schnell über Neuerungen informieren wollt, durchsucht die Seite einfach nach dem Begriff RSS (oder nutzt das Firefox-Icon). Oft gibt es sogar Möglichkeiten, diese direkt zu personalisierten Startseiten wie iGoogle oder Netvibes hinzuzufügen. Ich aber bevorzuge eine andere Alternative: Einen News-/Feedreader wie Thunderbird.

Hinzufügen eines RSS-Feeds zu Thunderbird

Hinzufügen eines RSS-Feeds zu Thunderbird

Zwar ist die RSS-Funktionalität von Thunderbird nicht wesentlich fortgeschrittener als die von Firefox, aber ich bevorzuge sie trotzdem, auch wenn das mehr eine persönliche Geschmacksfrage ist. Sagen wir mal, ihr wollt die oben genannten Seiten abonnieren. Also öffnet Thunderbird und legt ein neues Konto für News & Blogs an (da ich die englische Version von Thunderbird nutze, sind folgende Namen geraten, aber ihr findet euch schon zurecht). Um das zu machen, klickt euch durch’s Menü: Datei -> Neu -> Konto -> RSS News und Blogs. Wählt einen beliebigen Namen (der vorgegebene reicht aus). Nun sollte in der linken Hälfte von Thunderbird das neue Konto erschienen sein. Macht einen Rechtsklick darauf und erstellt zwei neue Ordner, einen für News und einen für Blogs (das ist optional, jeder Feed kann auch seinen eigenen Ordner haben, z.B. den Namen der Webseite. Dies dient nur der Übersichtlichkeit und Zusammenfassung verschiedener Feeds). Als nächstes wird abonniert, wieder über Rechtsklick. Wählt Hinzufügen, macht jeweils copy&paste der Feed URLs und wählt die zugehörigen Ordner aus (s. Screenshot). Falls ihr als übergeordneten Ordner News & Blogs gewählt habt, wird automatisch ein neuer Ordner erstellt. Das war’s auch schon. Jedesmal wenn ihr Thunderbird startet sowie alle halbe Stunde werden die abonnierten Feeds automatisch auf neue Inhalte geprüft. Und durch Überfliegen des Betreffs kann man sofort erkennen, ob einen der Inhalt ggf. interessiert oder nicht. Natürlich ist, was diesen Blog betrifft, es jeder Artikel wert gelesen zu werden ;) . Zusammengefasst: RSS und Atom Feeds sind ein sehr eleganter Weg, immer auf dem Laufenden zu bleiben, ohne viel Aufwand. Anstatt selbst nach neuen Inhalten zu schauen, sagt die Software bescheid, sobald sich etwas getan hat. Alle Lieblingsseiten werden geprüft, eine Übersicht wird gegeben und man kann sofort nach potentiell interessanten oder uninteressanten Inhalten filtern. Nicht nur, dass das eine Menge Zeit sparen kann, man verpasst auch nichts mehr, wenn man längere Zeit nicht nachgeschaut hat. Momentan habe ich acht Feeds abonniert, was im Verhältnis zu anderen zwar nicht übermäßig viel ist, aber für mich persönlich dennoch sehr hilfreich und nützlich ist. Ich hoffe, ihr fandet auch diesen Artikel hilfreich und nützlich; und probiert RSS doch einfach mal mit euren Lieblingsseiten aus!