Afficher les tweets sur mon site avec PHP

Afficher ses tweets sur son site ou son blog ne se fait avec un script PHP très simple. Et le script permet en fait d'afficher les scripts de tout compte sur Twitter sur une page pour être informé.

Dans une seconde partie, on verra comment afficher ses tweets sur son site avec JavaScript, sans les limitations dues à l'hébergement partagé et donc une IP partagée, car Twitter restreint le nombre de requètes par IP.

Cette version permet de créer une page de multiples tweets sur une page HTML comme celle de la démo incluse dans l'archive, et de la placer dans le répertoire www de Wamp pour un affichage local ou sur un hébergement dédié (avec sa propre IP).

Pré-requis:
- PHP 5.
- La librairie open source Snoopy (incluse dans l'archive).
- Une IP personelle, car une IP partagée peut excéder la limite d'accès autorisée.
- Pour un usage local, installer Wamp (aucune limitation).

Mise à jour 2013: L'API a évolué et il faut un code d'authentification pour accéder au service. Le code ci-dessous ne fonctionne plus.

Comment cela fonctionne

Les tweets d'un compte sont disponibles sur le site Twitter à l'URL suivante:

http://twitter.com/statuses/user_timeline/$username.json?count=$maxtweets

$username est une variable PHP qui contient le nom du compte. Par exemple: scriptol pour le compte de ce site.

On accède par HTTP au fichier xxxx.json par une fonction de Snoopy, ou d'une bibliothèque équivalente. Ce fichier contient un tableau contenant différentes information pour chaque tweet. Sa structure générale est la suivante

Array  ( 
     [0] => Array  
     (
      [user] => Array  
      (
         [followers_count] => ...
      )
    ...
    [text]
    ...

L'entrée [0] correspond au premier tweet. Il y a autant d'entrées que de tweet. Elle contient plusieurs tableau ou chaïnes.
[text] est l'indice du text d'un tweet.
[user][followers_count] contient le nombre de followers.

Le script peut permettre de voir le tableau entier. Pour se faire, il faut décommenter la ligne.

// print_r( $twitter);

et regarder le code source de la page, pour un formattage avec indentation.

Le script et son utilisation

Il récupère le tableau sur le site Twitter et extrait en boucle les tweets.

Pour éviter de spammer Twitter, on ne fait qu'une requête par heure, et l'on sauve les tweets dans un fichier. Il y a d'ailleurs une limite imposée de 150 requêtes par heure par Twitter.

Pour utiliser le script:

  1. Assigner le nom du compte à $username.
  2. Assigner le nombre de tweets à afficher à $maxtweets.
  3. Placer le script dans une page HTML.
  4. La mettre en ligne ou dans le répertoire www de Wamp.

et le reste est automatique... Vérifier que votre hébergement est configuré pour PHP 5 ou plus.

Dans le cas d'un usage en ligne, le message "Rate limit exceeded. Clients may not make more than 150 requests per hour" peut s'afficher quand trop de requêtes venant de la même IP sont effectuées ce qui arrive facilement avec un hébergement mutualisé (voir Rate Limiting).

L'archive contient la librairie snoopy.php et tweets.php, une page HTML de démonstration qui fonctionne en ligne ou localement.

Télécharger l'archive