Über die API von Twitter ist in diesem Blog schon viel geschrieben worden. Sie ist gut dokumentiert und einfach zu nutzen. Zu den Schattenseiten gehört der gelegentliche, regelmäßige Ausfall und die Aufrufbeschränkung. Um Tweets in eine Website einzubinden, muss man immer über einen Cache nachdenken.
Für die Tweets, die auf pixelfans.de von Carsten und mir eingebettet werden sollten, hatte ich folgende Vorstellungen:

  • es sollte jeweils nur der letzte Tweet von beiden sichtbar sein
  • es sollte Javascript genutzt und
  • keine Passwörter verwendet werden




































Die Verwendung von Javascript entspricht dem “flüchtigen” Charakter am Besten. Es wird keine Rechenzeit auf dem Server verschwendet. Wenn Javascript nicht aktiviert ist, werden die Tweets eben nicht angezeigt. Sie gehören nicht zur Grundfunktionalität der Seite.

In der c’t wurde eine Lösung beschrieben, die direkt die Twitterfunktionen nutzt und mittels Proxy auch viele andere Probleme löst. Meine Lösung nutzt YQL, da es dadurch kinderleicht wird, die Tweets miteinander zu mixen und es einen Webcache mitbringt. Eine gutes Tutorial zu YQL hat Christian Heilmann im letzten Jahr im Webkrauts-Adventskalender veröffentlicht.

In seinem Beispiel wird query.multi genutzt, um mehrere Abfragen miteinander zu verbinden. Screenshot YQL_KonsoleDie Abfragen werden am Besten in der Konsole ausprobiert. Um sie zu verwenden, müssen unter dem Menüpunkt Data Tables die Community Tables angezeigt werden. Der Treeview ist eine geniale Sache, da sofort erkennbar ist, wo sich die gewünschte Information befindet.

Die Verwendung von jquery,YQL und Twitter wird in diesem Live-Example umfangreich erklärt.
Hier unser vollständiger Code:

$(document).ready(queryYQL);
function queryYQL(){
var yqlUrl = "https://query.yahooapis.com/v1/public/yql";
var query = "select * from query.multi where queries="select * from twitter.user.status where id='pawelf';select * from twitter.user.status where id='carstenbach'"";
var queryUrl = yqlUrl + "?q=" + escape(query) + "&format=json&callback=?" + "&env=" + escape("store://datatables.org/alltableswithkeys");
$.getJSON(queryUrl, function (yqlObject) {
var ptwitterText = yqlObject.query.results.results[0].meta[1].content;
var ctwitterText = yqlObject.query.results.results[1].meta[1].content;
$("#caba").text(ctwitterText);
$("#pawel").text(ptwitterText);
$("#caba,#pawel").fadeTo(900,1);
 } );
 }

Die beiden DIV’s die die Tweets enthalten werden nur eingeblendet, wenn Javascript verfügbar ist.

Update: 04.09.2010

Die Datatables haben sich geändert. Die status-Abfrage gehört jetzt zu twitter.user. Die query muss angepasst werden:

var query = "select * from query.multi where queries="select * from twitter.user where id='pawelf';select * from twitter.user where id='carstenbach'"";

Das hat dann auch andere Rückgabewerte zur Folge, die dann angepasst werden müssen:

yqlObject.query.results.results[0].user.status.text

Da wir den aktuellen Code hier im Blog verwenden, kann dieser leicht eingesehen und übernommen werden.