Avoir sa FriendsTimeline Twitter sur son site avec ZendFramework
Si vous avez besoin d’afficher votre timeline Twitter sur votre site, vous êtes au bon endroit. L’API de twitter étant très simple, j’aurais pu directement « tapper » dans le fichier XML à la barbare en faisant un file_get_contents, mai j’ai préféré utiliser le Zend Framework qui permet de faire des contrôles de routine assez rapidement et intuitivement. Et tant qu’à faire, en POO.
Le but de cet article est également d’utiliser le composant de Cache du Zend Framework qui est très utile pour ce genre d’application, puisque Twitter limite actuellement à 150, le nombre de requêtes par heure sur leur API. Voici donc un bon moyen de récuperer sa time line directement sur son site, d’une manière propre.
L’affichage de la timeline est volontairement simplifié pour éviter de rendre illisible le code. Voilà
/** * On commence par inclure l'autoloader pour ne pas avoir à faire * trois tonnes d'includes */ include 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); define('TWITTER_UNAME','user'); define('TWITTER_PWD','password'); /** * On gère le cache. On va utiliser un cache fichier pour faire simple, * mais vous pouvez aussi faire un cace MySQL, SQLite ou autre... * * Le constructeur de Zend_Cache est configurable par le biais de * deux tableaux. Le frontend est indépendant du système de cache * utilisé. Plutôt pratique si on décide de switcher entre plusieurs * cache en fonction des ressources disponible... */ $frontendOptions = array('lifetime' => 7200, 'automatic_serialization' => true); $backendOptions = array('cache_dir' => '/home/site/cache/' ); $cache = Zend_Cache::factory('Core','File', $frontendOptions, $backendOptions); // On regarde ce qu'il y à dans le cache $twitterTimeline = $cache->load('twitterTimeline'); // Si le cache n'existe pas, on récupère les tweets if(!$twitterTimeline) { /** * On peut s'amuser avecl'API de Twitter! */ $twitter = new Zend_Service_Twitter(TWITTER_UNAME, TWITTER_PWD); $tLogin = $twitter>account->verifyCredentials(); if(!$tLogin->error){ if( $twitter->account->rateLimitStatus()->{'remaining-hits'} > 0 ){ $arrTweets = $twitter->status->friendsTimeline(); $friendsTimeLine = ''; if(!empty($arrTweets)){ // Vous pouvez évidemment agrémenter votre timeline comme vous le voulez et la mettre en forme aussi ;) foreach($arrTweets as $tweet){ $tempLine = '@' . $tweet->user->name . ' : ' . $tweet->text ; // On créer des liens où il fut (manque les hashtags dans mon expression régulière) $friendsTimeLine .= preg_replace(array("`((?:http?|ftp)://S+[[:alnum:]]/?)`si","/@([[:alnum:]]*)/si"), array('<a href="$1">$1</a>','<a href="http://twitter.com/$1">@$1</a>'),$tempLine); $friendsTimeLine .= ' (tweet via ' . $tweet->source . ' à ' . $tweet->created_at . ') '; } $cache->save($friendsTimeLine, 'twitterTimeline'); // On echo le resultat de la timeline echo $friendsTimeLine; }else{ echo "Pas de tweets dans votre Friends Timeline"; } }else{ echo "Votre ne pouvez plus faire de requête sur l'API de Twitter : quota dépassé."; } }else{ echo $tLogin->error; } }else{ echo $twitterTimeline ; }
Commentaires
Trackbacks
Aucun trackback sur ce post.

Je n’utilise pas le Zend Framework, mais l’idée est facilement ré-adaptable en PHP 4.x voir 5.x sans problèmes
Le Zend Framework est disponible sur le serveur qui t’héberges (:D)…
En PHP4.x c’est plus difficile vu la pauvreté des librairies XML mais bon, faisable!
Oui, je suis au courant du fait que le serveur qui m’héberge m’es a ma disposition le zend Framework