Archiv

Archiv für Januar 2010

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;
}