[Twitter] Afficher les derniers tweets grâce à PHP

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

Logo de Twitter

Logo de Twitter

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>';
?>

Démonstration

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.

No comments yet.

Leave a comment