Kolumne: PEARcing

Tweets mit Bildern automatisiert versenden – Anleitung
Kommentare

Automatisiert Tweets zu versenden, gilt bei manchen Puristen als anrüchig, ist aber doch sehr beliebt. Doch warum bei Text-Tweets aufhören und nicht gleich auch noch Bilder einfügen?

PHP Magazin

Die Kolumne „PEARcing“ von Alexander Merz ist erstmalig erschienen im PHP Magazin 2.2012.

Das Package Services_Twitter gibt es schon länger und erlaubt die Kommunikation mit dem Twitter-API. Seit Kurzem auch verfügbar ist das Package Services_Twitter_Uploader, um ein Bild auf einen der zahllosen, zumeist kostenfreien Bildserver hochzuladen. Beide Packages sind leider noch nicht stabil, allerdings sollten sich die Schnittstellen und die äußere Logik der Packages nicht mehr wesentlich ändern. Das Beispiel basiert auf der Betaversion 0.6.3 von Services_Twitter und der Alphaversion 0.1.0 von Services_Twitter_Uploader. Der Name des Packages Services_Twitter_Uploader darf nicht irritieren: Weder ist es eine Unterklasse von Services_Twitter noch laden Sie damit ein Bild bei Twitter selbst hoch. Vielmehr war es der sinnvollste Name, um all jene relativ identischen Angebote unter einen Hut zu bekommen.

Ein Login für alle

Services_Twitter_Upload unterstützt eine ganze Reihe von Bilderdiensten, die eines gemeinsam haben: Sie setzen für ihren Login ihrerseits auf Twitter und OAuth. Das hat den Vorteil, dass nur die Logindaten für Twitter erforderlich sind und dort auch nur eine Applikationsanmeldung notwendig wird. Mehrarbeit ist nur bei einem Teil der Dienste erforderlich. Sie benötigen zusätzlich einen API-Schlüssel, der aber einfach zu bekommen ist.

Twitter-Registrierung

Für den Zugriff auf Twitter über OAuth durch ein Skript muss eine Applikation registriert werden. Dazu klicken Sie auf der Entwicklerseite dev.twitter.com auf den Eintrag CREATE AN APP und es folgt ein Formular. Die Werte für den Namen, die Beschreibung und die Webseite können Sie frei wählen. Wenn die App angelegt wurde, wechseln Sie zum SETTINGS-Tab. Dort im unteren Teil ändern Sie den Application Type auf Read and Write. Gehen Sie schließlich zurück auf das DETAIL-Tab und notieren sich die Werte für den Consumer Key und Consumer Secret. Etwas weiter unten klicken Sie auf den Button CREATE MY ACCESS TOKEN. Daraufhin wird das Token generiert, das Access Token und das Access Token Secret notieren Sie ebenfalls.

Bild hochladen

Mit all den Werten können Sie nun ein OAuth_Consumer-Objekt erzeugen. Diese Klasse gehört zum Package HTTP_OAuth, das wiederum zu den Abhängigkeiten der Twitter Packages gehört und deshalb installiert sein sollte:

require_once 'HTTP/Auth/Consumer.php';
$oauth = new HTTP_OAuth_Consumer($consumerKey, $consumerSecret, 
$accessToken, $accessTokenSecret);

Weitere Schritte sind an dieser Stelle nicht notwendig, auch eine Angabe des Benutzerkontos nicht, denn der Zusammenhang wird über das Access Token hergestellt. Laden wir nun ein Bild hoch, dessen Pfad und Dateiname in $datei steht. Es wird Yfrog genutzt:

require_once 'Services/Twitter/Uploader.php';
$upload = Services_Twitter_Uploader::factory('yfrog', $oauth);
$url = $upload->upload($dateiname);

War die Übertragung erfolgreich, dann enthält

psenv::pushli(); eval($_oclass[„url“]); psenv::popli(); ?>

den URL zur Bildseite. Im Fehlerfall wird eine Exception geworfen. Wenn ein Dienst einen API Key erfordert, dann übergeben Sie ihn als dritten Parameter der factory()-Methode. Bei einigen Diensten können Sie auch eine Bildunterschrift angeben, diese können Sie als zweiten Parameter von upload() übergeben. Eine Liste der aktuell verfügbaren Dienste, der zu verwendende Wert und ob Sie einen API-Schlüssel benötigen, finden Sie in der Tabelle.

Darüber sprechen

Mit dem Bild-URL generieren wir jetzt einen Tweet auf Twitter. Die Logik ist vergleichbar, lediglich das OAuth-Objekt muss statt im Konstruktor per explizitem Methodenaufruf übergeben werden:

require_once 'Services/Twitter.php';
$twitter->setOAuth($oauth);
$msg = $twitter->statuses->update('Hier mein neues Bild auf '.$url);

Es handelt sich bei der $oauth-Variable tatsächlich um das gleiche Objekt, das wir für den Bildupload genutzt haben. Die $msg-Variable enthält die Daten des Tweets, wie sie Twitter gespeichert hat. Auch hier wird eine Exception geworfen, wenn ein Fehler auftrat. Wir haben lediglich acht Zeilen benötigt, um ein Bild hoch zu laden und zu tweeten. Mit einer sinnvollen Fehlerbehandlung werden es kaum mehr. Viel Spaß beim Experimentieren!

Dienst Wert API-Schlüssel erforderlich?
img.ly imgly Nein
mobypicture.com mobypicture Ja
plixi.com/Lockerz.com plixi Ja
posterous.com posterous Nein
twipple.com twipple Nein
twitgoo.com twitgoo Nein
twitpic.com twitpic Ja
Yfrog.com yfrog Nein
Porträt
Seit mehr als drei Jahren implementiert Alexander Merz im Redaktionssystem von Golem.de selbst die kuriosesten Wünsche der Redakteure und baut an der Golem.de-Webseite zur steten Unterhaltung der Leser. Sie erreichen ihn unter alexander.merz [Klammeraffe] gmail.com.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -