Twitter mit Perl – Tutorial Teil II: Direct Messages versenden
Ein sinnvolle Erweiterung zu dem im Teil I vorgestellten Perl-Script, mit dem man direct messages via Twitter versenden kann wäre folgendes: Bevor man die direct message abschickt soll geprüft werden, ob der Empfänger mir überhaupt noch folgt – ansonsten kann ja keine direct message verschickt werden. So einfach geht das:
#zuerst prüfen, ob Empfänger noch mein follower?
$usera=“Simon_A_Frank“;
$userb=“kulturzwitscher“;
$response = $ua->get(„http://twitter.com/friendships/exists.xml?user_a=$usera&user_b=$userb“);if ($response->is_success) {
print „Noch follower: „.$response->content.“\n“;
} else {
print „Abbruch – kein Follower mehr (oder ein anderer Fehler): „;
print $response->status_line;
die();
}
Für die Überprüfung von Friendships / Follower ist übrigens nicht unbedingt ein Login erforderlich (nur bei Twitterusern mit geschützten Tweets).
Und hier nochmals den gesamten Code aus Teil I des Tutorials ergänzt um die Follower-Überprüfung:
#!/usr/bin/perl
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;#sinnvolle LWP Settings
$ua->timeout(10);
$ua->env_proxy;# Empfänger
$form{user}=“Simon_A_Frank“;#Nachricht (max 140 Zeichen)
$form{text}=“Hallo Simon!“;#Absender – Twitteruser und Passwort
$twitteruser=“deintwitterusername“;
$twitterpw=“deinpw“;
$ua->credentials( „twitter.com:80″, „Twitter API“, $twitteruser => $twitterpw);#zuerst prüfen, ob Empfänger noch mein follower?
$usera=“Simon_A_Frank“;
$userb=“kulturzwitscher“;
$response = $ua->get(„http://twitter.com/friendships/exists.xml?user_a=$usera&user_b=$userb“);if ($response->is_success) {
print „Noch follower: „.$response->content.“\n“;
} else {
print „Abbruch – kein Follower mehr (oder ein anderer Fehler): „;
print $response->status_line;
die();
}#Erfolg – dann die direct message senden:
$response = $ua->post(„http://twitter.com/direct_messages/new.xml“,\%form );if ($response->is_success) {
#Hat geklappt!
print „DM erfolgreich verschickt!“;
} else {
#ging nicht …
print „Nicht erfogreich, Fehler: “ . $response->status_line;
}
