Twitter Feed mit PHP und Mootools auslesen und ausgeben

Twitter bietet die Möglichkeit seinen eigenen Twitter Feed per Javascript auf jeder Seite einzubinden. Ein Problem dabei ist, dass man das Script von der Twitter Webseite aus einbinden muss. Nun ist Twitter ab und an sehr überlastet, so das das Laden dieses Scriptes sehr lange dauern kann. Dies blockiert dann die eigene Seite, die dann einfach nicht aufhören mag zu laden. Ausserdem ist das Aussehen dieses Javascripts nur bedingt anzupassen.
Dies alles veranlasste mich dazu ein eigenes kleines Script zu schreiben. Mit diesem hab ich dann die volle Kontrolle was ich wie anzeigen möchte. Da ich per Ajax den Twitterfeed auslese stört es nicht den Aufbau meiner Seite. An den Twitterfeed kommt man über folgende URL: http://search.twitter.com/search.json?q=from%3AUSERNAME. Dabei mache ich mir zunutze das Twitter eine Search API zur Verfügung stellt. Diese bietet unter anderem die Möglichkeit per JSON die Daten zu liefern. Da es aus Sicherheitsgründen nicht erlaubt ist per Javascript von einer Fremden Domains Daten zu empfangen, habe ich ein kleines PHP Script geschrieben was die Daten des JSON Feeds ausliesst und wieder ausgibt.
Demo
PHP Script zum auslesen und ausgeben des JSON Feeds
1 2 | header('Content-Type: application/json'); print file_get_contents("http://search.twitter.com/search.json?q=from%3A".$_GET['user']); |
Erklärung PHP
In der ersten Zeile wird der JSON Header gesendet. Dann lade ich den Twitter Feed per file_get_contents Befehl und gebe ihn dann direkt wieder aus.
Wie in der Überschrift erwähnt verwende ich das Mootools Framework um einfach den JSON Feed auszulesen und anzuzeigen. Dadurch braucht man sich nur noch um das wesentliche zu kümmern.
Das Javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | var getTwitter = new Class( { initialize: function(url,id) { this.url = url; this.id = id; this.getJson(); }, buildHtml : function(responseObject) { var tb = '<ul class="twitterlist">'; for(var i = 0; i < responseObject['results'].length; i++) { tb = tb + '<li style="background-image: url('+responseObject['results'][i].profile_image_url+')" class="twitt"><p>' + responseObject['results'][i].text + '<span class="twitttime">'+this.transformTime(responseObject['results'][i].created_at)+'</span></p></li>'; } tb = tb + '</ul>'; return tb; }, transformTime : function(mytime) { var dd = new Date(); dd.setTime(Date.parse(mytime)).toLocaleString(); var min = ''+dd.getMinutes(); if ( min.length < 2) min = '0'+min; var mon = ''+(dd.getMonth()+1); if ( mon.length < 2) mon = '0'+mon; return dd.getDate()+'.'+mon+'.'+dd.getFullYear()+' '+dd.getHours()+':'+min+' Uhr'; }, getJson : function() { var jsonRequest = new Request.JSON({ url: this.url, onSuccess: function(obj,txt) { $(this.id).innerHTML = this.buildHtml(obj); }.bind(this) }).get(); } }); window.addEvent('domready', function(){ var h = new getTwitter('http://www.chaosbox.de/demos/gettwitterjson.php?user=Drathal','twitterdata'); }); |
Erklärung Javascript
In der initialize Methode werden die auszulesende URL und das TAG angegeben wo die Ausgabe stattfinden soll. Dort wird dann die Methode getJson aufgerufen die unser kleines PHP Script aufruft um die Daten zu empfangen. Sobald der Feed erfolgreich geladen wurde wird onSuccess aufgerufen. Von dort aus bastelt die Methode buildHtml das HTML für die Seite zusammen. Diese durchläuft einfach das Antwort Object und erstellt eine Liste. Um das Datum der Ausgabe noch ein wenig anzupassen wird die Methode transformTime aufgerufen.
Schlusswort
Wie man schnell erkennt ist das ein sehr einfaches Script das noch viel Verbesserungspotential hat. So kann man z.B. eine Ladeanzeige einbauen, eine Nachricht ausgeben wenn Twitter nicht errreichbar ist, oder aber das Design weiter verschönern. Dieses Script dient als Anregung und darf von jedem frei benutzt und verändert werden.
Artikel gefallen?









10 Kommentare
6. Februar 2009
14:15 Uhr
Hallo,
leider bin ich nicht so firm was PHP, RSS angeht. Könntest Du mir vielleicht ein Beispiel posten oder zukommen lassen, wie ich lediglich den letzten aktuellen Tweet auslesen kann. Ich möchte daraus ableiten wie ich generell mit RSS umzugehen habe und vielleicht die Syntax besser verstehen.
6. Februar 2009
17:10 Uhr
@Sven
Das obige Beispiel ist in Javascript. Um dies zu ändern müsstest nur die Schleife zur Ausgabe ändern, So in etwa: for(var i = 0; i < 1; i++) { Das gibt nur den ersten Beitrag aus. Für PHP schau ich mal ob ich in nächster Zeit was Posten kann.
7. Februar 2009
00:12 Uhr
Supder, das wäre nett, ich danke Dir.
15. Juli 2009
20:18 Uhr
Hallo,
bin leider absoluter Java-Neuling.
Was davon muss nachher in die PHP-Seite, wo es angezeigt werden muss und was mache ich mit dem Rest?
Brauche ich noch irgendwelche Dateien zusätzlich auf meinem Server?
Gruß,
Andi
17. Juli 2009
00:05 Uhr
Hallo Andi,
Das Php Script legst du auf dem Server ab und sorgt dafür das du die Daten aus Twitter an das Jaavascript weiterleiten kannst. Das javascript gibt diese Daten dann aus. Also PHP Script kopieren und das JS in deine Seite einbinden. Auf dem Server brauchst nu nur PHP sonst nicht da alles andere Client Seitig getan wird.
Ich hoffe das hilft ein wenig.
Markus
17. Juli 2009
00:06 Uhr
nochwas Andi.
Natürlich musst du auch Mootools zuvor laden, wie oben beschrieben.
18. März 2010
00:57 Uhr
super script, werde es gleich mal ausprobieren, tausend dank.
22. April 2010
19:53 Uhr
Das ganze umgekehrt findet man unter Twitterfeed com – Ist auch ganz lustig
30. April 2010
16:11 Uhr
Die Demo ist irgendwie leer…
2. September 2010
05:23 Uhr
fwpnvlwr…
fwpnvlwr…
Kommentar schreiben