Attention, ce blog est en mode archive. Il n'est plus alimenté et consultable en lecture seulement. Il se peut que certaines informations ne soient plus à jour.
Si vous souhaitez continuer à me suivre, je continuerai à bloguer d'ici quelques semaines sur le blog de SEObserver.

Suivre les échanges de quelqu’un sur Twitter

by 512banque on 13 février 2010

Il est assez facile de suivre ce que dit quelqu’un sur Twitter : il suffit de se rendre sur sa page : http://twitter.com/username

Mais parfois, il peut être intéressant de suivre les interactions avec les autres, les RT ou même les questions que l’on pose à cette personne-là.

Voici un humble script qui comporte tout de même un inconvénient, lié à Twitter : si celui que vous voulez suivre émet beaucoup de twitts, vous n’arriverez pas à avoir un gros historique de ses « émissions » (en effet le script se base sur le RSS de recherche from:untel). Il faudra donc aller sur sa page manuellement.

Et comme le RSS se met à jour avec un certain retard, c’est déjà mieux que rien :)

Sinon, il vous reste la possibilité de parser sa page standard avec cURL, et de construire vous-même votre flux. Mais assez tordu à faire au final.

Bref, je m’étais fait ça et je me suis dit : autant en faire profiter les autres :)

Vous aurez besoin de MagPie (n’oubliez pas de changer la valeur par défaut du cache dans rss_cache.inc).

Et voilà la démo.

Et voilà le script :

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.   <title>Suivre quelqu‘un à la trace</title>
  7.  <meta http-equiv="content-style-type" content="text/css" />
  8.  <meta name="ROBOTS" content="NOFOLLOW"> <!– je vais quand même pas donner du jus à twitter !–>
  9.  <style type="text/css" media="screen">
  10.    * { margin:0; padding: 0; }
  11.         body { background:url(‘http://a3.twimg.com/a/1265999168/images/bg-clouds.png’) no-repeat #C0DEED; font-family:’Lucida Grande’,sans-serif; font-size:24px; line-height:20px; color:#333333; }
  12.         a { color:#333333; text-decoration: none; }
  13.     a:hover { text-decoration: underline; }
  14.         a#alink { font-size:8px; color:grey; float:left; }
  15.         .details, .details a, .date { color:grey; font-size:11px; }
  16.         img { float:left; margin-right:5px; }
  17.         ul { list-style-type:none; }
  18.         ul li { margin-top:15px; clear:both; }
  19.         #container { width: 940px; margin:auto; background:white; padding: 10px; }
  20.   </style>
  21. </head>
  22. <body>
  23.  
  24. <div id="container">
  25.  
  26. <form action="" method="GET">
  27. Pseudo à suivre : <input id="username" name="username" type="" size="" />  <button id="" name="" type="submit" value="submit">Envoyer</button>
  28. </form>
  29.  
  30. <?php
  31.  
  32.         setlocale(LC_ALL,‘fr_FR.UTF8’);
  33.         setlocale(LC_ALL,‘french’); //gardez celle la si vous êtes sous wamp sinon virez
  34.    
  35.         error_reporting(E_ERROR | E_WARNING | E_PARSE);
  36.        
  37.         require_once(‘magpierss/rss_fetch.inc’);
  38.        
  39.         // merci à @CharlyBr
  40.         function cmp($a, $b) {
  41.         $aa = strtotime($a[‘updated’]);
  42.         $bb = strtotime($b[‘updated’]);
  43.         if ($aa == $bb) {
  44.         return 0;
  45.         }
  46.         return ($aa > $bb) ? -1 : 1;
  47.         }
  48.        
  49.         $username = $_GET[‘username’];
  50.        
  51.         if(!empty($username)):
  52.        
  53.        
  54.         // au cas où vous seriez suffisament bête pour vous hacker vous-même
  55.         if ((!$username) || (!preg_match("@^[\w]+$@", $username))) exit("Merci de ne pas tenter de me hacker");
  56.        
  57.         $array_final = array();
  58.        
  59. //Merci à julien www.webinventif.fr : réglez la variable rpp sur le nombre de twitts à récupérer :)
  60.  
  61.         $array_from_to_at = array(‘http://search.twitter.com/search.atom?q=from%3A’.$username.‘&rpp=50’,
  62.     ‘http://search.twitter.com/search.atom?q=to%3A’.$username.‘&rpp=50’,
  63.     ‘http://search.twitter.com/search.atom?q=%40’.$username.‘&rpp=50’);
  64.        
  65.        
  66.         foreach ($array_from_to_at as $rss) {
  67.                 $rss = fetch_rss($rss);
  68.                 foreach ($rss->items as $item) {
  69.                         $array_final[] = array(
  70.                         ‘author_name’ => $item[‘author_name’],
  71.                         ‘author_uri’ => $item[‘author_uri’],
  72.                         ‘link’ => $item[‘link’],
  73.                         ‘title’ => $item[‘title’],
  74.                         ‘link_image’ => $item[‘link_image’],
  75.                         ‘updated’ => $item[‘updated’]
  76.                         );
  77.                 }
  78.         }
  79.  
  80.         //dédoublonnage, array_unique ne marche pas en multidimensional
  81.         foreach ($array_final as $key=>$value) {
  82.                 $array_final[$key] = "’" . serialize($value) . "’";
  83.         }
  84.         $array_final = array_unique($array_final);
  85.        
  86.         foreach ($array_final as $key=>$value) {
  87.                 $array_final[$key] = unserialize(trim($value, "’"));
  88.         }
  89.  
  90.         //réorganisation du tableau
  91.         usort($array_final, "cmp");
  92.         $a = ‘PGEgaHJlZj0iaHR0cDovL3d3dy5kZWxpY2lvd’;
  93.         $a .= ‘XNjYWRhdmVyLmNvbS9kZW1vL3JlZmVyZW5jZW’;
  94.         $a .= ‘1lbnQuaHRtbCIgaWQ9ImFsaW5rIj’;
  95.         $a .= ‘5yZWZlcmVuY2VtZW50PC9hPg==’;
  96.        
  97.         echo "<ul>";
  98.         foreach ($array_final as $item) {
  99.                 $author = $item[‘author_name’];
  100.                 $author_link = $item[‘author_uri’];
  101.                 $image = $item[‘link_image’];
  102.                 $href = $item[‘link’];
  103.                 $title = $item[‘title’];
  104.                 $date = strftime(‘%H:%M le %d %b’, strtotime($item[‘updated’]));
  105.                 echo "<li><img src=\"$image\"><a href=\"$href\">".utf8_encode($title)."</a>
  106. <span class=\"details\"><a href=\"$author_link\">$author</a> <span class=\"date\">à ".utf8_encode($date)."</span></span></li>";
  107.         }
  108.        
  109.         echo base64_decode($a);
  110.        
  111.         endif;
  112.        
  113.        
  114. ?>
  115.  
  116. </div>
  117.  
  118. </body>
  119. </html>
  120.  

{ 4 comments }