Lange nutze Ich schon mein kleines Helferskript produktiv, welches eigens definierte Suchanfragen an bestimmte Dienste auswertet und einen universell einsetzbaren RSS-Feed generiert. Das Python-Skript ermöglicht es, zu Internet-Diensten wie Twitter, Soundcloud, Ebay, Quoka, usw., Feeds aus eigenen Suchanfragen zu generieren. Diese wiederum können in einem sogenannten RSS-Reader lokal auf dem Rechner, im Web oder auf dem Smartphone gesammelt und gelesen werden. Das bedeutet konkret: Neue Tweets eines gewünschten Benutzers oder z.B. neue Beiträge einer bestimmten Sendung der ARDmediathek können an einer zentralen stelle gesammelt und gelesen werden.
So muss Ich mir nicht die mühe machen bei jedem einzelnen Dienst seperat und manuell nach Neuigkeiten zu suchen sondern werde quasi automatisch über Aktualisierungen informiert.

Das Python-Skript setzt neben zahlreicher Module vorallem das Web-Framework Bottle ein und lässt sich somit einfach auf dem Server oder auch lokal für eigene Zwecke betreiben (siehe Installations-Anweisung). Testweise kann aber auch die Installation auf unserem Server verwendet werden (siehe Beispiele). Die Anleitung gillt für ArchLinux-Systeme und deckt nicht alle Konfigurationsschritte im Detail ab. Vorkenntnisse darin und in der Verwendung von RSS-Feeds werden vorausgetzt.

Plugins

Einige der “Plugins” des RSS-Feed-Generators sind unvollsändig oder haben noch einige Fehler. Zudem sollte angemerkt werden, dass bei der Entwicklung keine Sicherheitsaspekte berücksichtigt wurden. Ich rate also eher davon ab, externen Zugriff auf das Skript zuzulassen.

twitterGeneriert mit Angabe des Twitter-Benutzernamens einen RSS-Feed zur Twitter-Timeline
quokaOptionen: /. Erstellt einen Feed zum übergebenen Suchbegriff und Suchort für das Kleinanzeigenportal Quoka
ebaykleinanzeigenGenau wie Quoka, ein Feed für Ebay Kleinanzeigen Suchanfragen
ardmediathekFeed mit Sendungen und direkten HQ Media-Enclosures zu den Video-Dateien. Möglichkeit, den Feed nach bestimmten Kriterien zu filtern.
artemediathekSendungen mit Video-Dateien als RSS-Feed
soundcloud Timeline eines Soundcloud-Benutzers als RSS-Feed mit integrierten Media-Enclosure direkt zum MP3-Stream
 

Beispiele

Suchen nach einem Regal bei Ebay Kleinanzeigen in der Stadt Karlsruhe mit einem Mindestpreis von 10€ und maximal 3 Einträgen:

https://onny.project-insanity.org/feeds/ebaykleinanzeigen/karlsruhe/regal?minprice=10&maxentries=3

Suchen nach einem Klavier in Stuttgart mit einem Suchradius von 10km und einem Maximalpreis von 100€:

https://onny.project-insanity.org/feeds/ebaykleinanzeigen/karlsruhe/klavier?radius=10&maxprice=100

In der ARD-Mediathek die Sendung ZAPP mit der Sendungsnummer 3714742 raussuchen und nur Folgen aggregieren, die im Titel “ZAPP – Das” oder “ZAPP – Die” tragen (nur für Folgen in ganzer Länge):

https://onny.project-insanity.org/feeds/ardmediathek/3714742?filter=ZAPP%20-%20Das,ZAPP%20-%20Die

Tweets des Benutzers ioerror auf Twitter.com folgen:

https://onny.project-insanity.org/feeds/twitter/ioerror

Audio-Beiträge des Benutzers lorenzkalman auf Soundcloud.com folgen:

https://onny.project-insanity.org/feeds/soundcloud/lorenzkalman

Einrichten unter ArchLinux

Hier eine kleine Anleitung, wie man das Skript, welches die RSS-Feeds erstellen soll, auf seinem eigenen Server oder lokal einrichten kann. Folgende Programme, mehrere Python Module, ein Web-Server und ein Python-Interpreter (uwsgi-python) werden benötigt:

pacaur -S python-requests python-beautifulsoup4 python-pyrss2gen python-bottle python-feedparser python-requests-cache nginx uwsgi-plugin-python
git clone https://git.project-insanity.org/onny/py-feeds.git /var/www/feeds
chown -R http:http /var/www/feeds

Das Python-Skript befindet sich nun im Ordner /var/www/feeds/ und genau dieser Ordner wird nun in der UWSGI-Konfiguration angegeben, die zudem noch den Port festlegt, an den der Web-Server später seine anfragen weiterleiten kann.

[uwsgi]
plugins = python
socket = 127.0.0.1:9001
chdir = /var/www/feeds
master = true
file = app.py
uid = http
gid = http

Beispiel einer Nginx-Konfiguration (von dieser Anleitung abgeleitet). Der Web-Server reagiert hier auf Anfragen an die Domain localhost und speziell auf die Seite /feeds, welche wiederum an den UWSGI Python-Interpreter auf 127.0.0.1:9001 lokal weitergegeben werden.

upstream _bottle {
        server 127.0.0.1:9001;
}

server {
        server_name localhost;
        access_log /var/log/nginx/localhost.feeds.access.log;
        error_log /var/log/nginx/localhost.feeds.error.log;
        root /var/www/feeds/;

        location /feeds {
                try_files $uri @uwsgi;
        }

        location @uwsgi {
                include uwsgi_params;
                uwsgi_pass _bottle;
        }
}

Der Web-Server und UWSGI sollen automatisch gestartet werden und als System-Dienst im Hintergrund laufen:

systemctl enable uwsgi@feeds nginx
systemctl restart uwsgi@feeds nginx

Starten Dienste und das Skript fehlerfrei, sollte unter der URL http://localhost/feeds sich schon das Python-Skript zu Wort melden.

To be continued …

In der aktuellen Version von bottle 0.12 existiert noch ein Bug der Probleme mit Umlauten in der URL verursacht, deswegen liegt in der aktuellen Version noch eine gepatchte Version von bottle bei die bevorzugt vom Python-Skript verwendet wird.
In Zukunft würde Ich gerne noch Inhalte aus anderen Mediatheken aggregieren, wie z.B. die Arte- oder ZDF-Mediathek. Desweiteren ist das Plugin-System noch nicht so Modular wie es sein sollte.
Sobald es möglich ist bei OwnCloud Kalender zu abonnieren würde Ich auch an einem anderen Skript weiterarbeiten, dass iCal-Kalender-Feeds aus Seiten generiert, die Termine und Veranstaltungen anbieten, aber keine möglichkeit diese Informationen zu abonnieren.