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;
?>