Obwohl ich wie schon gesagt Python recht zugeneigt bin, steckt immernoch ein kleiner Perl-Hacker in mir. Nach vielen Jahren Perl-Entwicklung vielleicht verständlich.
Also habe ich das gleiche Problem, das zunächst in Perl und in Python in jeweils 11 Zeilen gelöst wurde, in einer Zeile Perl gelöst:
perl -MLWP::Simple -ne 'print "ERROR: $1 -> $2\n" if /title="([^"]*)".*xmlUrl="([^"]*)"/ and not head($2)' < Meine_Thunderbird_Feeds.opml
Das wird in Python vermutlich schwierig. Falls jemand aber eine Lösung hat, nur her damit ;)
Nachteil: An den HTTP-Error-Code komme ich mit LWP::Simple::head leider nicht ran. Ich könnte getstore
nutzen und nach /dev/null schreiben, das ist aber nicht besonders schön…
Man könnte sich berechtigterweise fragen, ob ich eigentlich nichts besseres zu tun hätte… Habe ich eigentlich schon, aber etwas Abwechslung tut ja auch mal gut ;)
Erstellt am 23.06.2007 um 14:45 Uhr von streawkceur.
Abrufe: 1708
-
Kommentare: 31 -
Trackbacks: 0 -
Trackback-Link: http://gedankenkonstrukt.de/blog/trackback/?id=38.
Tags: check, code, feeds, golf, http, oneliner, opml, perl, xml.
Problem
Ich habe ne Menge Feeds in Thunderbird abonniert.
Ab und zu ändern sich da die Feed-URLs oder die Seiten verschwinden ganz. Da Thunderbird in diesen Fällen nur eine 2-sekündige Meldung in die Statusleiste schreibt, merkt man das meistens nicht.
Lösung
Um das einfach zu überprüfen, kann man seine abonnierten Feeds als OPML exportieren (im Abonnieren-Dialog auf "Exportieren" klicken) und mit diesem kleinen Perl-Script die URLs prüfen:
#!/usr/bin/perl use LWP::UserAgent; my $ua = LWP::UserAgent->new(); open(OPML, '<', 'Meine_Thunderbird_Feeds.opml'); foreach my $line (<OPML>) { if ($line =~ /title="([^"]*)".*xmlUrl="([^"]*)"/i) { my ($title, $url) = ($1, $2); my $response = $ua->head($url); print "ERROR (" . $response->status_line() . "): $title -> $url\n" unless $response->is_success(); } }
Ohne die Leer- und Shebang-Zeilen nur 11 Zeilen ;)
Einschränkungen
- Parst die Einträge nicht als XML sondern als Reintext. Das ist generell fehleranfällig, funktioniert in diesem Falle aber gut.
- Der HTTP-Request wird von Wordpress als "Bad Behavior" identifiziert, weil er nicht wie ein Request von einem Webbrowser aussieht. Der Feed funktioniert in diesen Fällen i.d.R. jedoch problemlos.
Erstellt am 23.06.2007 um 13:45 Uhr von streawkceur.
Abrufe: 1525
-
Kommentare: 0 -
Trackbacks: 2 -
Trackback-Link: http://gedankenkonstrukt.de/blog/trackback/?id=36.
Tags: atom, check, code, feeds, http, opml, perl, rss, xml.
Diese Vorabversion kann im CPAN eingesehen und heruntergeladen werden.
Außerdem kann man es ganz einfach über die CPAN shell mit "cpan Konstrukt"
installieren.
Weitere Informationen über das Framework finden sich in Deutsch in der Kurzbeschreibung des Frameworks auf dieser Website. Die vollständige englische Dokumentation kann man auf dieser Website oder im CPAN einsehen.
Schaut es euch an, probiert es aus! Über konstruktive Kritik freue ich mich!
Erstellt am 05.10.2006 um 16:09 Uhr von streawkceur.
Abrufe: 1361
-
Kommentare: 0 -
Trackbacks: 0 -
Trackback-Link: http://gedankenkonstrukt.de/blog/trackback/?id=4.
Tags: apache, framework, konstrukt, perl, webdesign, webdev.