7. Juli 2010

Twitter via PHP auslesen

7. Juli 2010 - Geschrieben von Martin - 2 Kommentare

Ein Leser dieses Blogs hat vor kurzem den Wunsch nach einem Artikel geäußert, wie er eine Ähnliche „letzte Tweets Anzeige“ wie auf www.Resigame.de bauen kann. Nun so schnell kann es gehen ;)

Da Twitter eine API bzw. von jedem Nutzer eine XML Datei mit Tweets und anderen Account Infos bereitstellt, haben wir leichtes Spiel an die Daten zu kommen.

So können wir die Datei auslesen:

$tweets = simplexml_load_file('http://www.twitter.com/status/user_timeline/[NUTZERNAME].xml');

[NUTZERNAME] muss natürlich mit dem Name des Twitteraccounts ersetzt werden, z.B. „Resigame“.

Aus dem Objekt $tweets können wir nun die letzte Nachricht auslesen:

echo $tweets->status->text;

Alle anderen verfügbaren Objekte kannst du herausfinden, indem du die XML Datei direkt im Browser aufrufst (Dort wird es sogar als Tree dargestellt).

Um auf ältere Nachrichten zuzugreifen kann hinter Status die Zahl angegeben werden, von der aus die Nachrichten „herab“ gezählt werden (allerdings wird bei 0 begonnen!):

echo $tweets->status{2}->text;

Dies würde uns Beispielsweise die 3. letzte Statusnachricht anzeigen.

Um nun die letzten 3 Nachrichten anzuzeigen verwenden wir einfach eine Schleife:

$i = 0;
while($i <= 2)
{
  echo $tweets->status{$i}->text.'<br>';
  $i++;
}

(mit for Schleifen hab ich es nicht so ;))

Da nun aber bei jedem Aufruf der Seite die Twitter XML Datei neu heruntergeladen werden muss, was nicht gerade Traffic und Ressourcenschonend ist – Kleinvieh macht schließlich auch Mist – Cachen wir nun die Datei:

if(filectime('twitter.xml') < time() - (60*10)) {
  // download file
  $file = file_get_contents('http://www.twitter.com/status/user_timeline/[NUTZERNAME].xml');
  file_put_contents('twitter.xml', $file);
}
$tweets = simplexml_load_file('twitter.xml');

Nun wird erst überprüft ob die Datei twitter.xml, welche im gleichen Ordner wie das Script liegt in den letzten 10 Minuten geändert wurde. Ist das der Fall wird das erneute Herunterladen übersprungen, wenn nicht (also wenn der Änderungszeitpunkt länger als 10 Minuten her ist), wird die XML von Twitter heruntergeladen und in unsere twitter.xml geschrieben.

Anschließend wird die twitter.xml geparst.

Das wäre es auch schon, in den nächsten Tagen zeige ich euch dann noch wie ihr die Twitter Nachrichten mittels jQuery schön als Newsticker laufen lassen könnt.