PHP Twitter-Klasse

Ich habe nun aus dem “Ansatz” aus diesem vergangenem Artikel eine PHP Klasse geschrieben welche das anzeigen von Tweets erleichtern soll.

Folgende Funktionen/Methoden stehen dir zur Anzeige deiner Tweets zur Verfügung:

  1. Tweets von einem bestimmten User
  2. Tweets mit einem bestimten Hashtag
  3. Tweets die direkt an einen User geschrieben wurden
  4. Tweets die einen bestimmten User erwähnen

Und hier eine Demo mit allen Funktionen:
Demo

Die Klasse ist nicht im schönsten PHP geschrieben und man könnte sicherlich noch mehr Möglichkeiten einbauen um den Output zu personalisieren, aber ich denke für die meisten Fälle wird eine HTML-Liste vollkommen ausreichen.

Installation

Schritt 1 – Klasse verfügbar machen

Kopiere folgenden Code in deine Datei wo sich deine PHP Funktionen oder Klassen befinden.
Falls du WordPress benuzt, kopieren den Code in deine functions.php Datei in deinem Template Verzeichnis.

Hier gehts zum Code

Schritt 2 – Einbinden

Um Deine Tweets anzuzeigen musst du nur noch die Funktion showRoboTweets(); an der Stelle aufrufen wo du deine Tweets angezeit haben möchtest. Das erste Argument ist der Suchparameter und das zweite Argument ist die Anzahl der Tweets welche du anzeigen möchtest (Standart sind 5 Tweets).

Hier die 4 verschiedenen Methoden um die gewünschten Tweets anzuzeigen:

Tweets von einem bestimmten User

1
2
3
if(function_exists('showRoboTweets')) {
	echo showRoboTweets("podlebar", 5);
}

Tweets mit einem bestimten Hashtag

1
2
3
if(function_exists('showRoboTweets')) {
	echo showRoboTweets("#robocode", 5);
}

Tweets die direkt an einen User geschrieben wurden

1
2
3
if(function_exists('showRoboTweets')) {
	echo showRoboTweets("@podlebar", 5);
}

Tweets die eine bestimmten User erwähnen

1
2
3
if(function_exists('showRoboTweets')) {
	echo showRoboTweets("%@podlebar", 5);
}

Schritt 3 – CSS

Die Klasse generiert folgenden HTML-Code:

1
2
3
4
5
6
7
<ul class="latesttweets">
	<li>Tweet 1<span>Vor 1 Minute</span></li>
	<li>Tweet 2<span>Vor 8 Minuten</span></li>
	<li>Tweet 3<span>Vor 9 Minuten</span></li>
	<li>Tweet 4<span>Vor 17 Minuten</span></li>
	etc..
</ul>

Falls keine Tweets gefunden werden oder ein Fehler auftritt wird ein Listenelement mit der CSS-Klasse “notice” oder “error” ausgegeben. Diese kannst du dementsprechend gestalten.

1
2
3
<ul class="latesttweets">
	<li class="error">Ooopsss</li>
</ul>

Hier ein Beispiel wie man die Tweets mit CSS gestalten kann:

1
2
3
4
5
ul.latesttweets { margin: 0; padding: 0; list-style: none }
ul.latesttweets li { border-bottom: 1px solid #ccc; padding: 4px 0 }
	ul.latesttweets li.error { color: #BF2F2F; border: 0 }
	ul.latesttweets li.notice { color: #CFAC4D; border: 0 }
ul.latesttweets li span { display: block; color: #999; font-family: Georgia; font-style: italic }

That’s it… simpel oder?
Falls du Fragen oder Anregungen hast kannst du diese gerne bei den Kommentaren hinterlassen oder mich anzwitschern.

Kommentar schreiben

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

23 Kommentare

Hi…
hast du deine Tweets evtl. geschützt?
Poste sonst mal deinen Code auf pastie.org und gib mir den Link.. ich schaus mir mal an.

Nabend, bei mir will es nicht Funktionieren. Ich hab alles gemacht wie Beschrieben. Wenn ich meinen Twitter Account eintrage kommt immer “Keine Tweets gefunden”. Trage ich deinen ein, klappt alles. Woran liegt das? Ja ich habe den namen richtig und korrekt geschrieben. Weil ich verzweifelt war, sogar kopiert.

Danke für die Hilfe.

MfG

Nabend, leider nicht ganz – habe mir das durchgelesen – da gibt es einen Link zu “tweetlater” – dort kann/muss man sich registrieren … die Funktionalität scheint vorhanden zu sein (bei der free-Version) bei der Profi-Version (USD 29,97/per month) natürlich noch mehr …
Aber hier http://devzone.zend.com/article/4431 habe ich (vermutlich) etwas gefunden – werde mich nächste Woche mal damit beschäftigen.
Also erst einmal vielen Dank!

Hi.. hab bei googlen as hier gefunden: http://www.riceblogger.com/blogging-tips/direct-message-new-follower-on-twitter/

scheint das zu machen was du möchtest :)

Hi, nachdem Du jetzt gut gegessen hast :) – hier noch eine Fachfrage (hatte schon gegoogelt, aber nichts gefunden):
Ich würde gern einen neuen Follower per Direktnachricht begrüssen – natürlich automatisch … geht/gibt es so etwas?

Gruss Reinhard

Jo, jetzt funzt es mit den Logos!
Vielen Dank für die schnelle Hilfe!

sorry.. hatte die falsche zeile eingefügt :)
hier die richtige: http://pastie.org/839111

Nabend – das mit den Hash-Tags und target=”_blank” habe ich jetzt mal so gelöst (suboptimal), aber geht:

// Der Reguläre Ausdruck
$pattern = ‘&(“>#)&is’;
// Ersatzstring
$replace = ‘” target=”_blank” >#’;
// RegExp auswerten, Ersetzung durchführen
$output = preg_replace($pattern, $replace, $output);

High, hat leider so nicht funktioniert – wenn ich die Zeile so einfüge kommt Fehlermeldung:
Unexpected character in input: ‘\’ (ASCII=92) state=1

habe dann die Zeile so abgeändert:
if($this->type==1) $output .= “link[1]['href'].”\” alt=\”".$tweet->author->name.”\” />”;

dann kommt keine Fehlermeldung mehr, aber auch immer noch nicht das Profil-Logo des Tweet-Senders.

Was habe ich noch falsch gemacht?
Gruss Reinhard

so.. here you go..
einfach nach Zeile 59 diese Zeile einfügen.

if($this->type==1) $output .= "link[1]['href']."\" alt=\"".$tweet->author->name."\" />";

Danach nur noch mit CSS stylen und fertisch..

hi…

nr. 1 geht auf die schnelle nicht da twitter HTML Daten zurück gibt und ich somit keinen Einfluss auf die Links habe.

nr. solle gehen.. mach ich in einer frien minute und melde mich per twitter :)

Gruezi, ich bin es noch einmal – habe mir noch einiges überlegt:
1. wie ist es in den Klassen (bzw. Skript) möglich bei den Links ein -> target=”_blank” einzubauen?
2. wenn ich Tweets z.B. mit Hash-Tags verwende – wie kann ich das Profil-Logo des/der Accounts ebenfalls anzeigen?
Vielen Dank! Gruss Reinhard

OK, vielen Dank – hatte mich halt mal interessiert.
Also ich muss schon sagen Deine Klassen sind wirklich klasse !!!

Gruss und schönes Wochenende
Reinhard

Die Zeile:

echo showRoboTweets(“twitteraccount”, 5);

könntest du auch so schreiben:

echo showRoboTweets(“twitteraccount”);

Dann kommt das limit=5 zum einsatz.. es sagt dem Script das es 5 Tweets auselesen soll falls kein Limit übergeben wird. Es ist also nur ein Fallback falls jemand vergisst das Limit anzugeben beim Aufruf

Nabend, habe da noch mal eine Frage zum Skript …
in der 1. Zeile steht:
function showRoboTweets($q, $limit=5)

hat denn das limit=5 einen Einfluss? Habe einige Einstellungen getestet …
echo showRoboTweets(“twitteraccount”, 5);
hier steht ja das Limit auch drin (und die Änderungen werden auch korrekt umgesetzt)

Gruss Reinhard

@Ratgeber Geldsparen
cool… freut mich :)

Sehr nützlich, vielen Dank! Ich habs auf meiner Website Ratgeber Geldsparen (läuft unter MODx, nicht WP) im Einsatz (linke Spalte).

Das Script ist sehr viel schneller als twittereigene Tools.

Viele Grüße aus Berlin,
Uwe.

Wenn Twitter down ist, erscheint die Meldung, dass die Verbindung fehlgeschlagen ist.. wenn ein Request Time-Out kommt auch.. Was ja bei DDOS der Fall ist.

Cool. Was aber passiert wenn Twitter down ist oder grad einem DDOS-Angriff standhalten will?

hmm das ist sicherlich machbar, aber nicht mit der “Search” Methode von Twitter die ich in der Klasse verwende.

Mit der “Search” Methode kann man nur Tweets suchen.. das was du möchtest erfordert einwenig API-Spielerei.. aber guter Ansatz für ein mögliches weiteres Projekt ;)

Cool die Klasse. Ich mag die Tweets nicht in der Sidebar in meinem Blog haben. Einzige Ausnahme die ich eigentlich mal selber programmieren wollte waren Konversationen. Also nur Tweets von mir auf die es auch eines oder mehrere Replies gibt. Ob das wohl möglich wäre? So als eine Art latest Comments aber eben latest conversations Plugin?