Montag, 23. März 2009

YQL, YUI und Yahoo! Pipes

Inspiriert durch Chris Heilmanns Artikel zu YQL habe ich den YQL-Service zusammen mit der YUI und Yahoo! Pipes dazu verwendet, einer bestehenden Webseite eine neue GUI zu verpassen.

Die Webseite
Auf die Schauburg lasse ich nichts kommen. Mein Lieblingskino in Karlsruhe, in dem ich fast jede Woche zu Gast bin. Die Filme sind toll, es gibt Themen-Wochen, Ben and Jerry's ist an der Bar zu haben ABER die Website - ein framegewordenes Scheusal aus der Stummfilmzeit des Internet. Ich hab's ausgemessen - ganze 199 Pixel in der Höhe stehen dem Rahmen für die Filmdetails auf meinem Laptop zur Verfügung! Und bei diesen waghalsigen Tabelle-in-Tabelle-in-Frame-Layout-Konstrukten läuft mir das Grausen über den Rücken. Eine idealer Kandidat also, um zu testen, was mit YQL möglich ist.

YQL - Mashup der Inhalte
Da ich sowohl mit SQL als auch mit XPath vertraut bin, hatte ich keine Probleme, die nötigen Inhalte aus der Original-Website zu extrahieren. Das sind zum einen die Zeiten und die zugehörigen Filmtitel inklusive der Links und zum anderen die Filmdetails, welche über die Auswahl eines bestimmten Titels angezeigt werden.
Die YQL Console (Yahoo!-Account nötig) leistet da auch beste Hilfe beim Finden der richtigen Abfrage.
Negativ ist mir aufgefallen, daß es keine Möglichkeit gibt, daß Encoding der Inhalte festzulegen. Das führt dazu, daß in meinem Beispiel sämtliche Umlaute falsch dargestellt werden - sehr ärgerlich. Weiterhin habe ich eine Möglichkeit vermißt, einfach das Markup eines bestimmten Knoten zu selektieren - das Resultat der Abfrage wandelt sich manchmal in eine sehr seltsame Struktur, mitunter fehlen ganze Textbestandteile, die im Original vorhanden sind.
Der größte Nachteil scheint jedoch zu sein, daß der YQL-Server, welcher die Daten aus dem Original-Dokument lädt, bei dem Webserver diese Dokuments als ein Nutzer erscheint. Somit ist es zumindest mir sehr schnell passiert, daß der Zugriff von diesem Server schnell verweigert wurde. Eine Angabe eines Caching-Intervals (bei mir würde dies immerhin ein ganzer Tag sein) wäre da sehr hilfreich.

YUI - Darstellung der Inhalte im Browser
Da ich eine reine Frontendlösung für diesen Test haben wollte, stellte sich das Problem, daß die YQL-Daten nicht über einen normalen XMLHttpRequest abgerufen werden konnten, da dieser nicht für Drittdomains erlaubt ist. YUI bietet glücklicherweise die Methode YAHOO.util.Get.script() - nicht ganz ohne, was die Sicherheit angeht, aber für einen Test durchaus willkommen. Zusammen mit einer ganzen Menge Callback-Funktionen und DOM-Manipulationen ließ sich recht schnell sowohl die Navigation als auch die Detailansicht der Filme erstellen. Auf die Darstellung der Filmdaten mußte ich dabei verzichten - YQL war nicht dazu zu bringen, diese Daten zu extrahieren.

Yahoo! Pipes - denn RSS fehlt auch
Die Schauburg-Website bietet auch keinen RSS-Feed - dank Yahoo! Pipes sollte dies aber kein Problem sein. Als Quelle kann man YQL auswählen - sehr gut - denn die passenden Abfragen hatte ich ja schon erstellt. Nur stellte sich für mich nach längerem Probieren heraus, daß es ohne Webservice wohl nicht möglich ist, Daten anhand eines Indizes o. ä. miteinander zu mergen. Dies zwang mich dazu, lediglich die Daten eines YQL-Resultats in einen Feed zu wandeln. Dieser beschränkt sich deshalb auf den Titel des Films und einem Detail-Link.

Was wäre noch denkbar?
Da es sich bei den dargestellten Daten um Termine handelt, wäre der Einsatz entsprechender Microformate denkbar. Weiterhin wäre die Angabe verschiedener WAI-ARIA-Attribute möglich - die Inhalte sind ja ausschließlich scriptgeneriert.
Vielleicht könnte man anhand des Titels weitere Informationen, Kommentare und Kritiken auf der Seite platzieren - oder zumindest Links zu diesen anbieten.

Fazit
Yahoo! bietet ein paar sehr feine Services zur Umsetzung solcher und ähnlicher Projekte. Die Anwendung ist dabei praxisorientiert (und -erprobt) und erschließt sich einem ohne größere Schwierigkeiten. Dank Chris' Eifer erfahren Entwickler wie ich von diesen Tools und bekommen durch ihn den passenden Anstoß für eigene Projekte.
Im Detail könnten ein paar Sachen verbessert werden - zufrieden bin ich mit dem Test aber allemal.

Ups, fast vergessen
Jetzt hätte ich ja fast vergessen, den Link zu der Website zu posten ;-)

Schauburg Karlsruhe - Programm

Blog abonnieren

RSS 2.0 Feed

Suche

Kalender

Zurück März '09 Vorwärts
Mo Di Mi Do Fr Sa So
            1
2 3 4 5 6
10 11 12 13 14 15
16 17 19 20 21 22
24 25 26 27 28 29
30          

Verwaltung des Blogs

Blogroll

Projects/Web

vCard

  • Nico Steiner
  • www.nicosteiner.de
  • Karlsruhe/Germany
  • Senior Frontend-Developer at 1&1