Accueil > Développement, Linux > Twitter en Python / Perl à vous de choisir !

Twitter en Python / Perl à vous de choisir !

Il y a déjà pas mal de temps que je vous ai parlé d’une technique pour twitter en ligne de commande. Malheureusement, cette méthode ne fonctionne plus, étant donné que Twitter.com bloque les twittes, si vous ne passez pas par leur API. Bien entendu pour utiliser l’API Twitter.com, il faut enregistrer son application … Pas de panique ! je détaille un peu plus loin toutes les étapes.

Petite remarque, pour clore mon introduction, je trouve cela assez contraignant de devoir s’enregistrer. Twitter.com invoque des aspects de sécurité pour justifier cette étape. Or, on peut noter que son concurrent Identi.ca n’oblige pas les utilisateurs à utiliser une API spécifique.



Twitter en ligne de commande

La première étape est d’enregistrer son application sur twitter.com/apps.

Enregistrement d'une nouvelle application

Vous remplissez votre formulaire avec vos différentes informations. Une fois tous les champs renseignés (n’oubliez pas de champs), vous pouvez enregistrer.

Formulaire d'enregistrement

Vous devriez obtenir un récapitulatif des détails de votre application avec deux informations qui nous intéressent particulièrement, à savoir les clés : Consumer key et Consumer secret. C’est avec ces deux clés que vous allez pouvoir vous authentifier en partie au près de l’API Twitter.com.



Récapitulatif Application

La deuxième étape consiste à authentifier votre client. Pour cela, vous devez obtenir deux clés : ACCESS_KEY et ACCESS_SECRET. Pour authentifier son client, on va utiliser un petit script twitter-register.py ou twitter-register.pl. Le script ne servira qu’une seule fois.



Version Perl :

#!/usr/bin/perl

use Net::Twitter::OAuth;

#On Initialise L'objet Net::Twitter::OAuth
my $client = Net::Twitter::OAuth->new(
    consumer_key => "VOTRE CONSUMER_KEY",
    consumer_secret => "VOTRE CONSUMER_SECRET",
);
#On affiche les clé CONSUMER
print "consumer_key = ".$client->consumer_key."\n";
print "consumer_secret = ".$client->consumer_secret."\n";

#On récupère l'URL pour autorisation de l'application
$url_pin = $client->get_authorization_url;
print "URL AUTORISATION D'AUTORISATION DE L'APPLICATION = ".$url_pin."\n";
$pin = <STDIN>;
print "PIN = ".$pin."\n";
chomp $pin;

#INIT DU TOKEN AVEC LE PIN
($access_key, $access_secret) = $client->request_access_token(verifier => $pin);

#MAJ de client - Facultatif
if ($access_key && $access_secret) {
      $client->access_token($access_key);
      $client->access_token_secret($access_secret);
}

print "access_token = ".$client->access_token."\n";
print "Access_token_secret = ".$client->access_token_secret."\n";

Version Python :

#!/usr/bin/env python

import tweepy

CONSUMER_KEY = 'VOTRE CODE CONSUMER KEY'
CONSUMER_SECRET = 'VOTRE CODE CONSUMER SECRET'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth_url = auth.get_authorization_url()
print 'Please authorize: ' + auth_url
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
print "ACCESS_KEY = '%s'" % auth.access_token.key
print "ACCESS_SECRET = '%s'" % auth.access_token.secret

Pour lancer le script :

python twitter-register.py
perl twitter-register.pl

Petit prérequis pour la version python vous devez installer python-tweepy

git clone git://github.com/joshthecoder/tweepy.git
cd tweepy
python setup.py install (run as admin/root)

Petit prérequis pour la version perl vous devez installer le module Net::Twitter::OAuth
Détail sur le module ICI

 ubuntu$ sudo cpan
cpan$ install Net::Twitter::OAuth
Le script vous génère une URL que vous copiez/collez dans votre navigateur. Cette url vous redirige vers Twitter.com pour vous donner un code PIN. Cela tombe bien justement, notre programme nous demande un code PIN. Une fois le code PIN rentré, le programme vous donne votre ACCESS_KEY et ACCESS_SECRET que vous pouvez réutiliser dans la troisième et dernière étape « j’envois un Tweet ». Voici le programme qui permet de le faire.






Version Python :

    #!/usr/bin/env python
    import sys
    import tweepy

    # Authentification oAuth
    CONSUMER_KEY = 'MON CONSUMER_KEY'
    CONSUMER_SECRET = 'MON CONSUMER_SECRET'
    ACCESS_KEY = 'MON ACCESS_KEY'
    ACCESS_SECRET = 'MON ACCESS_SECRET'
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
    api = tweepy.API(auth)

    # Main program
    api.update_status(sys.argv[1])

Version Perl :

use Net::Twitter::OAuth;

my $client = Net::Twitter::OAuth-&gt;new(
    consumer_key => "MON CONSUMER_KEY",
    consumer_secret => "MON CONSUMER_SECRET",
    access_token =&gt; "MON ACCESS_KEY",
    access_token_secret => "MON ACCESS_SECRET",
);

my $tweet = $ARGV[0];
$client->update({ status => $tweet });

Avant de tester, n’oubliez pas de rendre exécutable vos programmes.

chmod u+x monprogramme.pl

Pour tester :

python twitter.py "mon message sur 144 caractères"
 perl twitter.pl "mon message sur 144 caractères"

Vous voila paré pour tweeter en ligne de commande. Il ne reste plus qu’à ajouter un deuxièmes paramètres, l’url longue qui serra automatiquement transformer en url courte.

Sources :
kobesearch
Nicolargo


Categories: Développement, Linux Tags: , ,