Twitter mit Perl – Tutorial Teil I: Direct Messages versenden

In den letzten Wochen habe ich für unterschiedliche Kunden und Projekte diverse Twitter-Anbindungen entwickelt. Zu PHP gibt es viele Anleitungen, aber da ich cronjob-basierte Scripts traditionell gerne in Perl schreibe und viele Anfragen dazu hatte (insbesondere wegen dem Projekt kulturgezwitscher) hier ein kurzes Tutorial, wie man eine direct message senden kann:

Ich verwende LWP::User Agent mit folgenden Einstellungen:

#!/usr/bin/perl
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;

#sinnvolle LWP Settings – aber nicht unbedingt notwendig:
$ua->timeout(10);
$ua->env_proxy;

Hier stehen der Twitter-Benutzername und das Passwort des Absenders, der für das Login (credentials) benötigt wird:

#Absender – Twitteruser und Passwort
$twitteruser=“deintwittername“;
$twitterpw=“deintwitterpw“;
$ua->credentials( „twitter.com:80“, „Twitter API“, $twitteruser => $twitterpw);

Dann die Nachricht und den Empfänger bestimmen:

#Empfänger
$form{user}=“Simon_A_Frank“;

#Nachricht (max 140 Zeichen)
$form{text}=“Hallo Simon!“;

Jetzt wird der Request gepostet und die Antwort von Twitter empfangen:

if ($response->is_success) {
#Hat geklappt!
print „DM erfolgreich verschickt!“;
} else {
#ging nicht … Fehlermeldung:
print $response->status_line;
}

Wenn es nicht geklappt hat kann es z. B. sein, dass der Empfänger kein Follower ist, dann sind natürlich keine direct messages möglich. Wie man dies abfragen kann gibt im nächsten Teil dieses Tutorials zu lesen.

Update am 02.09.2010: Ende August 2010 hat Twitter „Basic Auth“ abgestellt, d. h. dieses Script funktioniert so wie dargestellt nicht mehr ganz. Stattdessen muss auf OAuth umgestellt werden. Wie das geht habe ich im folgenden Tutorial beschrieben.

Dieser Beitrag wurde unter Perl, Programmierung, Twitter abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.