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