L’outil de micro-blogging Twitter devient de plus en plus populaire. Grâce à l’API de ce dernier, il est possible de récupérer les derniers messages postés sur un compte Twitter. Une fois extrait, les messages (aussi appelé « tweets ») peuvent être affiché sur un site web. Cet article détail la méthode pour le faire grâce à un script PHP.
Mise à jour octobre 2012 : prise en compte de la nouvelle API
Prérequis
Avant toutes choses, il faut savoir que le script fonctionne uniquement avec les versions de PHP supérieur à PHP 5.
Pour comprendre comment obtenir les messages d’un compte Twitter, il suffit de consulter la documentation de l’API Google et plus particulièrement la page « statuses/user_timeline ». Cette révèle qu’un document XML contient les informations des messages postés sur Twitter. A titre d’exemple, voici l’adresse du document XML de mon compte Twitter:
- https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=tonyarchambeau
Il est possible de limiter le nombre de tweets inclus sur ce document XML. De ce fait, il est possible de limiter le nombre de message à afficher sur son site web. Pour cela, l’adresse devient:
- https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=tonyarchambeau&count=10
La variable représente le nombre de messages qui seront extrait.
Présentation du script
Le script présent ci-dessous peut être personnalisé facilement:
<?php function parse($text) { $text = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $text); $text = preg_replace('#@([a-z0-9_]+)#i', '@<a href="http://twitter.com/$1">$1</a>', $text); $text = preg_replace('# \#([a-z0-9_-]+)#i', ' #<a href="http://search.twitter.com/search?q=%23$1">$1</a>', $text); return $text; } /* Nom d'utilisateur sur Twitter */ $user = "TonyArchambeau"; /* Nombre de message à afficher */ $count = 8; /* Format de la date à afficher */ $date_format = 'd M Y, H:i:s'; // inclure les RT $url = 'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name='.$user.'&count='.$count; $oXML = simplexml_load_file( $url ); echo '<ul>'; foreach( $oXML->status as $oStatus ) { $datetime = date_create($oStatus->created_at); $date = date_format($datetime, $date_format)."\n"; echo '<li>'.parse(utf8_decode($oStatus->text)); echo ' (<a href="http://twitter.com/'.$user.'/status/'.$oStatus->id_str.'">'.$date.'</a>)</li>'; } echo '</ul>'; ?> |
Ce script affiche non seulement le message, mais également la date à laquelle le message à été posté et un lien vers le message.
Il est important de créer et d’utiliser la fonction « parse() » car par défaut Twitter utilise du texte brut. Aucun code HTML n’est présent. De ce fait, les liens ne sont pas cliquables.
Personnaliser
L’API Twitter possède plus d’information qui peuvent être utilisée, voici la liste des informations disponibles:
Variable | Utilité | Exemple |
---|---|---|
created_at | Indique la date et l’heure de création du message. | Tue Jan 05 13:43:11 +0000 2010 |
id_str | Numéro d’identifiant du Tweet. Utile pour faire un lien vers le tweet (exemple: http://twitter.com/TonyArchambeau/status/7195965162). | 7195965162 |
text | Texte du message. | [Note de Lecture] BrowseRank: Letting Web Users Vote for Page Importance: http://bit.ly/5BP3Uq |
source | Indique la source du message. Cela peut être un lien vers le service qui a généré le message (exemple: Twitterfeed, TweetDeck, Tweetie …). | web |
truncated | Indique si le message a été tronqué. La valeur est soit true ou false. | false |
in_reply_to_status_id | Si le message est une réponse à un tweet, cette balise contient l’identifiant du tweet concerné. | 7403141723 |
in_reply_to_user_id | Si le message est une réponse à un tweet, cette balise contient l’identifiant de l’utilisateur qui a posté le premier tweet. | 1940621 |
favorited | Indique si le tweet est dans les favoris de l’utilisateur. La valeur est soit true ou false. | false |
in_reply_to_screen_name | Si le message est une réponse à un tweet, cette balise contient le nom de l’utilisateur qui a posté le premier tweet. | Matze_Jimdo |
geo | Localisation de l’utilisateur lorsqu’il a posté le tweet. La localisation est déterminée grâce à Georss. | <georss:point>37.78029 -122.39697</georss:point> |
Pour utiliser l’une ou l’autre des variables présente dans le tableau ci-dessus il suffit d’utiliser le code de cette façon: $oStatus->id (id peut être remplacé par n’importe quelle autre variable).
Démonstration
Une démonstration de ce script est disponible sur la page « Réseaux sociaux » de mon CV en ligne. Bien entendu, il est possible de personnaliser le script en modifiant le xHTML et le CSS. Cela permettant d’améliorer l’esthétique et d’intégrer plus facilement cet élément dans le design d’un site.