Bookmarks

'; // Et la fermeture de balise à la fin $footer = '
'; // Le répertoire dans lequel se trouve les fichiers récupérés de Buzz $directory = './buzz'; // Simple HTML DOM a eu un peu de mal avec les accents, donc je lui simplifie // la tâche en convertissant tout les caractères spéciaux puis en rétablissant // le code HTML. function char_convert($text){ $text = htmlentities($text, ENT_NOQUOTES, "UTF-8"); $text = htmlspecialchars_decode($text); return $text; } // Le timestamp écrit dans les fichiers est sous la forme YYYY-MM-DDTHH:MM:SS.MS // donc on le convertit en temps UNIX. function date_convert($date){ $year = substr($date, 0, 4); $month = substr($date, 5, 2); $day = substr($date, 8, 2); $hour = substr($date, 11, 2); $min = substr($date, 14, 2); $sec = substr($date, 17, 2); $date = mktime($hour, $min, $sec, $month, $day, $year); return $date; } // Cette partie récupère les vraies URL pour en avoir des plus parlantes que // http://feedproxy.google.com/~r/9gag/~3/3dFZLa-CYI8/466983 // On supprime aussi les liens morts et les paramètres introduits par Feedburner function real_url($link){ if ( ! empty($link) ) { return; } $options = array( CURLOPT_NOBODY => true, // Asks header only CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => true, // return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_USERAGENT => "spider", // who am i CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 10, // timeout on connect CURLOPT_TIMEOUT => 15, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects ); $ch = curl_init( $link ); curl_setopt_array( $ch, $options ); $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $http_code = $header["http_code"]; $url = $header["url"]; if ( $http_code != 404 ) { // Ces trois lignes suppriment les paramètres feedburner. // Merci Sebastien SAUVAGE ;D $i=strpos($url,'&utm_source='); if ($i) $url=substr($url,0,$i); $i=strpos($url,'?utm_source='); if ($i) $url=substr($url,0,$i); $i=strpos($url,'#xtor=RSS-'); if ($i) $url=substr($url,0,$i); return $url; } else { return; } } // On parse le code envoyé, récupère le titre, la date et le lien // puis on renvoie une ligne pour bookmarks.html function html_to_bookmarks($file){ $file = char_convert($file); $html = str_get_html($file); $title = $html->find('div[class=entry-title]', 0)->plaintext; $date = $html->find('abbr[class=published]', 0)->title; $date = date_convert($date); $link = $html->find('div[class=entry-content]', 0)->first_child()->href; $link = real_url($link); if (! empty($link)) { echo '
'.$title.''."\n"; } $html->clear(); unset($html); } echo $header; echo ''; // Et voila la boucle qui va lire chaque fichiers du dossier $directory $dir = dir($directory); while ($file = $dir->read()) { if ($file != '.' && $file != '..') { $file_content = file_get_contents($directory.'/'.$file); html_to_bookmarks($file_content); } } $dir->close(); echo ''; echo $footer; ?>