Twitter et java, C++, php, javascript

Si nous avions au départ prévu de présenter les étapes de développement d’une application avec Twitter (notamment pour sa facilité d’utilisation dûe au nombre restreint de fonctionnalité et pour la pertinence des recherches à effectuer, l’information y étant à vocation plus publique) nous nous sommes dit que développer et présenter l’utilisation d’un langage était quelque peu réducteur face à l’immensité des librairies présentes. C’est pourquoi aujourd’hui nous allons revenir sur ce point en laissant l’aspect “développons une application ensemble” de côté et en préférant vous accompagner dans le choix de la librairie vous convenant.

Précédemment, nous avons donc vu les principes fondamentaux d’une application Twitter (création, obtention des informations, connexion). Nous allons donc prolonger cette démarche en nous appuyant sur quatre langages : Java, C++, PHP, JavaScript dont nous vous présenterons l’utilisation pour l’authentification, l’envoi d’un tweet et la recherche d’un message. Ces APIs permettent d’avoir accès aux fonctions de Twitter sans avoir à passer par les requêtes HTTP. Bien que non officiels, elles sont publiées sur le site Twitter pour les développeurs :

 

Quelques informations préliminaires :

  • Twitter utilise une syntaxe précise pour la formulation des requêtes de recherches. (La syntaxe des requêtes est expliquée ici)
  • Les retours des requêtes se font sous la forme d’une chaîne de caractère arborescente qui contient l’ensemble des informations du tweet. Cela va du texte du message au fuseau horaire de l’utilisateur émetteur du tweet. (La structure exhaustive est décrite ici)

Java

Connexion :

Comme pour l’article précédent, nous allons utiliser l’API Twitter4J : http://twitter4j.org. Nous avons déjà vu comment se connecter via l’objet ConfigurationBuilder et une TwitterFactory.

Recherche :

Une fois la connexion effectuée, il est simple d’effectuer une recherche de tweets grâce à l’objet Query qui va représenter le requête à transmettre à Twitter. Elle prend la forme décrite sur le site de Twitter comme par exemple q=socialapi qui va servir à chercher les tweets contenant le texte socialapi. La méthode search(ObjetQuery) va permettre d’effectuer la requête et son résultat sera stockée dans un objet QueryResult. Ensuite il devient facile d’obtenir les tweets par la fonction getTweets() puis les différents éléments les constituant comme par exemple getUser() pour obtenir l’objet utilisateur.

Poster un message :

L’objet Twitter contient la fonction updateStatus(TextDuTweet) qui permet de publier un tweet sur le compte enregistré.

C++

 Twitter propose la bibliothèque twitcurl pour le C++.  Elle fournie un ensemble de fonctions compatibles avec la dernière version de l’API Twitter et le site https://code.google.com/p/twitcurl/ fournit toutes les instructions nécessaires à l’installation.

 Authentification :

L’objet twitcurl est la base de la connexion entre une application C++ et Twitter. Une fois l’objet créé, il faut définir les information d’authentification via les méthodes suivantes :

 getOAuth().setConsumerKey();

getOAuth().setConsumerSecret();

getOAuth().setOAuthTokenKey();

getOAuth().setOAuthTokenSecret();

 Une fois cela fait, l’objet twitcurl est configuré et va pouvoir servir pour envoyer les requêtes et récupérer les informations.

 Recherche :

La méthode search(MessageAChercher, NombreDeTweet) va envoyer une requête de recherche constituée des paramètres q=MessageAChercher et count=NombreDeTweet. Le retour se fait sous la forme d’une chaîne de caractère représentant le résultat tel quel venant de Twitter que l’application pourra décomposer pour l’analyser.

Poster un message :

A l’image de Twitter4J, twitcurl fournit une fonction statusUpdate(Message) qui permet de publier un tweet.

PHP 

Contrairement au Java et au C++ où très peu de bibliothèque existent, Twitter propose une très grande variété de projets visant à fournir les fonctionnalités en PHP. Parmi toutes, nous avons décidé de présenter Zend Framework faisant partie des plus élaborées.

L’objet principale est Zend_Service_Twitter. Il est composé de sous objets suivant l’arborescence présentée sur le site de développement de Twitter, comme par exemple le statut de l’utilisateur, son compte … depuis lesquels seront appelées les différentes fonctions de l’API.

 Authentification :

Par l’intermédiaire de cette bibliothèque, l’authentification est rapide. Il suffit de créer un objet Zend_Service_Twitter initialisé avec un tableau de deux valeur :

    ‘username’ => NomDUtilisateur ,

    ‘accessToken’ => TokenUtilisateur

 Il suffit ensuite d’appeler la méthode verifyCredentials() du sous objet account. Pour terminer la session de l’utilisateur il faudra appeler la méthode endSession().

 Recherche :

La recherche de tweets se fait par l’intermédiaire d’un objet spécifique qui retourne le résultat sous format JSON ou Atom. De futures évolutions de la bibliothèque permmettront la prise en compte des réponses XML.

 Tout d’abord il faut créer un objet Zend_Service_Twitter_Search auquel on spécifiera le format de sortie des données (‘json’ ou ‘atom’). Ensuite il faut appeler la méthode search(TexteAChercher, array(Arguments => Valeur)). Les arguments correspondent a ceux définis sur le site de Twitter dans la section API search https://dev.twitter.com/docs/api/1.1/get/search/tweets.

 Poster un message :

Le poste d’un tweet se fait par l’intermédiaire de la fonction  update(Message) à appeler depuis le sous objet status.

JavaScript 

 Enfin nous allons voir la bibliothèque JavaScript/nodeJS : TwitterJSClient.

Cette bibliothèque de fonctions JavaScript  est encore en développement mais les membre sont très actifs. Toutes les fonctionnalités ne sont pas implémentées.

 Authentification :

Pour l’application et l’utilisateur, il faut créer un objet Config qui contiendra les tokens et identifiant de l’utilisateur et de l’application.

Il faut ensuite créer l’objet Twitter qui servira d’élément centrale prenant en argument le Config créé juste avant.

 Autres fonctionnalités :

Bien que les fonctions de recherches et de poste de tweets ne soient pas présentes telles quelles, il est possible par exemple d’obtenir la majorité des informations voulues comme les données d’un message ou les tweets d’utilisateurs via des fonctions comme getUserTimeline() ou getTweet().

 

Conclusion 

 En observant les bibliothèque de fonction prenant en charge l’API de Twitter des 4 langages précédents, nous voyons que la couverture est très variable. En C++ la seule bibliothèque proposée par Twitter prend en charge les fonctionnalités principales, mais n’est pas complète et non mise à jour depuis longtemps. Elle ne permet pas, par exemple, de parser le retour de la recherche de tweets sous la forme de plusieurs objet. En PHP, il existe un florilège d’APIs prenant en compte la totalité des fonctionnalités.

On peut néanmoins remarquer que les langages adaptés au web (PHP, Javascript …) couvrent beaucoup mieux l’API de Twitter que les langage permettant de coder des logiciels (ce qui paraît compréhensible). Pour ces derniers Java est a privilégier avec Twitter4J.

Vous voilà donc paré à l’utilisation de l’API twitter mais attention à ne pas faire n’importe quoi ! Tout d’abord, respecter les CGU et par ailleurs, ne pas suivre le chemin de Larousse ! Nous conclurons en effet cet article par un fait d’actualité, l’affaire remontant au début de cette semaine (4° semaine de janvier).
En effet, si vous pouvez rechercher des tweets grâce à ces APIs, n’oubliez pas que si vous souhaitez en exploiter le contenu il convient de citer et de prévenir les auteurs. En effet, le droit de citation ne peut être évoqué dans le cadre d’un tweet si l’ensemble du tweet est utilisé ! Point qu’avait semble-t-il omis Larousse dans son ouvrage “Les perles des tweets et du Net” qui a donc été retiré de la vente.

 

Sources :

 

Auteurs : Nicolas DAVID & Sylvain PALOMINOS
Encadrant : Morgan MAGNIN
Licence Creative Commons

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>