8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'aurai besoin de votre aide sur un script php permettant de récupérer les X derniers statuts de mon compte Twitter. Merci d'avance pour votre aide.

Actuellement, le code récupère X statuts du compte X, en préservant l'html et l'encodage des accents. Le code est personnalisable à volonté (code à ajouter avant/après chaque tweet, et avant/après le bloc de tous les tweets). Et tout fonctionne à merveille :
          <?php $username = "rochdaniel";
            $limit = "4";
            $prefix = "";
            $suffix = "";
            $tweetprefix = "<li>";
            $tweetsuffix = "</li>";       
            $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;                   
            $ch = curl_init();
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_URL, $feed);
              $twitterFeed = curl_exec($ch);
              curl_close($ch);   
            $twitterFeed = str_replace("&lt;", "<", $twitterFeed);
            $twitterFeed = str_replace("&gt;", ">", $twitterFeed);
            $twitterFeed = str_replace("&quot;", "\"", $twitterFeed);
            $twitterFeed = str_replace("&amp;apos;", "'", $twitterFeed);
            $twitterFeed = str_replace("&amp;", "&", $twitterFeed);
            $clean = explode("<content type=\"html\">", $twitterFeed);         
            $amount = count($clean) - 1;           
            echo $prefix;           
            for ($i = 1; $i <= $amount; $i++) {
              $cleaner = explode("</content>", $clean[$i]);             
                echo $tweetprefix;
                echo $cleaner[0];
                echo $tweetsuffix;}
            echo $suffix;?>


Maintenant, j'aimerais ajouter devant chaque tweets l'heure de celui-ci, à la façon "il y a 5 minutes". J'ai en partie réussi, sauf que l'heure est identique sur chaque tweet, au lieu de prendre l'heure de chacun d'entre eux :
            <?php $username = "rochdaniel";
            $limit = "4";
            $prefix = "";
            $suffix = "";
            $tweetprefix = "<li>";
            $tweetsuffix = "</li>";       
            $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;                   
            $ch = curl_init();
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_URL, $feed);
              $twitterFeed = curl_exec($ch);
              curl_close($ch);
            $xml = new SimpleXMLElement($twitterFeed);
            $date = $xml->entry->published;
            $mydate = strtotime($date);
            $time_diff = time() - $mydate;       
            if ( $time_diff > 0 )$display = sprintf( __('%s ago'), human_time_diff( $mydate ) );                 
            $twitterFeed = str_replace("&lt;", "<", $twitterFeed);
            $twitterFeed = str_replace("&gt;", ">", $twitterFeed);
            $twitterFeed = str_replace("&quot;", "\"", $twitterFeed);
            $twitterFeed = str_replace("&amp;apos;", "'", $twitterFeed);
            $twitterFeed = str_replace("&amp;", "&", $twitterFeed);
            $clean = explode("<content type=\"html\">", $twitterFeed);         
            $amount = count($clean) - 1;           
            echo $prefix;           
            for ($i = 1; $i <= $amount; $i++) {
              $cleaner = explode("</content>", $clean[$i]);             
                echo $tweetprefix;
                echo $display.' : ';
                echo $cleaner[0];
                echo $tweetsuffix;}
            echo $suffix;?>

Je sais/suppose que la partie allant de $xml=new SimpleXMLElement jusqu'au if de $time_diff devrait se placer dans la boucle, mais mes différents essais ne m'ont renvoyer que des messages d'erreurs.

Sauriez-vous comment faire ?

Merci encore pour votre aide.

Daniel.
Modifié par Confridin (27 Jul 2010 - 13:46)
Solution trouvée.

Le code :

//paramètres
    $username = "rochdaniel";
    $limit = "4";
    $prefix = "";
    $suffix = "";
    $tweetprefix = "<li>";
    $tweetsuffix = "</li>";       
  //Recuperation du flux
  $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;                   
    $ch = curl_init();
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL, $feed);
      $twitterFeed = curl_exec($ch);
      curl_close($ch);
  //nettoyage du flux            
    $twitterFeed = str_replace("&lt;", "<", $twitterFeed);
    $twitterFeed = str_replace("&gt;", ">", $twitterFeed);
    $twitterFeed = str_replace("&quot;", "\"", $twitterFeed);
    $twitterFeed = str_replace("&amp;apos;", "'", $twitterFeed);
    $twitterFeed = str_replace("&amp;", "&", $twitterFeed);
    $clean = explode("<content type=\"html\">", $twitterFeed);
    $cleandate = explode("<published>", $twitterFeed);         
    $amount = count($clean) - 1;           
    $amount = count($cleandate) - 1;
  //rendu du flux
    echo $prefix;           
    for ($i = 1; $i <= $amount; $i++) {
      $cleaner = explode("</content>", $clean[$i]);
      $cleanerbis = explode("</published>", $cleandate[$i]);
      $mydate = strtotime($cleanerbis[0]);
      $time_diff = time() - $mydate;
      if ( $time_diff > 0 )$display = sprintf( __('%s ago'), human_time_diff( $mydate ) );                             
      echo $tweetprefix;
      echo $cleaner[0];
      echo '<span class="petit"> ['.$display.']</span>';
      echo $tweetsuffix;}
    echo $suffix;