Freitag, 12. November 2010

Spielplan FC Bayern auf dem Desktop: Geek-Tool und Shell machen es möglich!

Da ich seit einiger Zeit FC Bayern Fan bin, dachte ich mir, ein Tool in meine geliebte Geek-Tool-Application einzubinden, welches ein- bis zweimal in der Woche den Spielplan auf meinem Desktop aktualisiert anzeigt. Meine Lösung ist nur eine der vielen Möglichkeiten, wie man das lösen könnte.

1. Schreibt ein Shell-Script mit folgendem Inhalt:

TMPFILE=/tmp/fcbspielplan.raw.tmp
TMPFILE_encode=/tmp/fcbspielplan.tmp
WEBSITE=http://www.fcbayern.t-home.de/de/saison/spielplan/profis/index.php

lynx -dump $WEBSITE > $TMPFILE
iconv -f ISO-8859-1 -t UTF-8 $TMPFILE > $TMPFILE_encode
cat $TMPFILE_encode | grep -A 34 Datum
echo

Oder lädt das Script hier herunter und speichert es lokal ab. Was dieses Script macht ist Folgendes:
  • Crawlt mit Hilfe von "lynx -dump" den Inhalt der FC Bayern Webseite, wo sich alle Spielpläne des FCB befinden und ständig aktualisiert werden. Man kann hier eine beliebige Seite nehmen, wie Yahoo Sport oder Kicker etc. Hauptsache ist, die Seite wird aktualisiert und hat einen guten lesbaren HTML, so dass man es gut ansprechen und "greppen" kann. Falls jemand eine andere Webseite bevorzieht, sollte sie erst mal mit lynx testen. Ihr braucht selbstverständlich das lynx auf dem Mac laufen (das kann man in der Regel problemlos mit ports installieren):

    sudo port install lynx
  • Man könnte das Ganze als eine einzige Pipeline ausführen lassen, aber da den Arbeitsspeicher unnötig belasten kann (wir wollen es ja von Geek ausführen lassen), sollte man die Datei lokal abspeichern und dann mit grep bearbeiten.

  • Lynx "dumpt" die Webseiten automatisch in der Zeichenkodierung ISO-8859-1 und das ist für mein Geschmack nicht genügend. Die Umlaute werden falsch angezeigt. Deswegen sollen wir die temporär abgespeicherte Datei noch in UTF-8 konvertieren, so dass wir keine Probleme mit dem Zeichensatz bekommen dürften.
  • Wenn die Datei konvertiert wurde, können wir den uns interessierten Datenabschnitt mit grep problemlos extrahieren. Mit "-A 34" extrahieren wir eben den Kontext nach dem Wort "Datum", welcher uns die Spieldaten liefert (34 Zeilen ist die genau Anzahl von Spielen in den Bundesliga, die in der Tabelle angezeigt werden, s. Screenshot 1).
FC Bayern Spielplan Geektool
2. Jetzt speichern wir das Script im .bash-Format lokal ab und fügen im Geek ein neues Shell-Ereignis hinzu. Im Properties-Fenster fügt den Pfad zu dem lokal abgespeicherten Script hinzu, in meinem Fall: "/Users/alla/Library/Geektool_Library/fcbayern.bash" Es ist empfehlenswert, die Aktualisierung auf 3000 Sek. zu setzen in der "Refresh every"-Option bei Properties.

3. Und so sieht es das aus:

FC Bayern GeekTool Desktop-AnzeigeViel Spaß damit!
Alla