HBnews.ota ver2

以前作った自分のはてなブックマークを読み込みニュース風のHTMLにして出力してくれるプログラム(はてブニュースみたいなプログラム - WebLab.ota)を改良して,複数のはてなブックマークを読み込んで出力してくれるようにしました.
id:ululun 氏からアイディア頂きました.ありがとうございます.*1

サンプル→HBnews.ota ver2
サンプルでは3つのはてなブックマークRSSを読み込んでいます.(無断です)

>>>>>rss.txt
http://b.hatena.ne.jp/n_euler666/rss
http://b.hatena.ne.jp/crimsonstarroad/rss
http://b.hatena.ne.jp/ch1248/rss

かなり読みにくく,何やってるのか意味不明なソースですが,好みに合わせて編集して使ってください.

このプログラムでできること

  • 自分と趣味の合う人のはてなブックマークを登録して使える
  • 自分の興味のあるカテゴリ順に表示させたり,興味のないカテゴリは表示しないようにして使える
  • 友人たちと読んだ記事・面白かった記事・興味のある記事の情報を共有できる
  • グループウェアとかで使えるかもしれない
  • 有名人の足跡を辿れるw

などなど

<?php
/**
*	製作者:WebLab.ota (http://d.hatena.ne.jp/n_euler666/)
*	Last Updata  2007/11/16
*	はてなブックマーク(複数指定可能)をニュース風のHTML文書に整形して出力するプログラムです.
**/

//初期設定
//$RSS_URL = 'http://b.hatena.ne.jp/n_euler666/rss';//自分のはてなブックマークRSSのURLを設定
$HB_title = "HBnews.ota ver2";//ニュースのタイトル
$Google ="UA-2288165-4";//Google Analyticsのキー
?>

<?php
class RSSname{
	var $desc;
	var $link;
	var $title;
	var $moto;
	function setRSS($link1,$title1,$desc1){
		$this->link = $link1;
		$this->title = $title1;
		$this->desc = $desc1;
	}
	function getLink(){
		return $this->link;
	}
	function getTitle(){
		return $this->title;
	}
	function getDesc(){
		return $this->desc;
	}
}

$RSSArray = array();

$RSSArray_book = array();//使ってる
$RSSArray_music = array();//使ってる
//$RSSArray_movie = array();
$RSSArray_web = array();//使ってる
$RSSArray_elec = array();//使ってる
//$RSSArray_animal = array();
$RSSArray_anime = array();//使ってる
//$RSSArray_food = array();
//$RSSArray_sports = array();
$RSSArray_game = array();//使ってる
$RSSArray_comic = array();//使ってる
//$RSSArray_idol = array();
//$RSSArray_geography = array();
//$RSSArray_art = array();
//$RSSArray_science = array();
//$RSSArray_hatena = array();
$RSSArray_none = array();//使ってる

$htmlString = "";

function print_HTML($str){
	global $htmlString;
	$htmlString = $htmlString.$str;
}

?>

<?php

print_HTML("<html><head>\n");
print_HTML("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
print_HTML("   <meta http-equiv=\"content-style-type\" content=\"text/css\">\n   <link rel=\"stylesheet\" href=\"./hb.css\" type=\"text/css\">\n");
print_HTML("<title>$HB_title</title>\n");

print_HTML("</head>\n");

print_HTML("<script src=\"http://www.google-analytics.com/urchin.js\" type=\"text/javascript\">\n");
print_HTML("</script> \n <script type=\"text/javascript\">\n _uacct = \"$Google\"; \n urchinTracker();\n</script>\n");

print_HTML("<BODY>\n");
print_HTML("<h1>$HB_title</h1>\n");
print_HTML("開発者ブログ:<a href=http://d.hatena.ne.jp/n_euler666/ target=_blank>WebLab.ota</a>");
print_HTML("(ソースプログラム,アルゴリズムを公開しています)<BR>\n");
print_HTML("このページははてなブックマークRSS(複数指定可能)を読み込み,ニュース風のHTMLに整形してくれるプログラムによって自動生成されています.<BR>\n");

$date = getdate();
$year = $date["year"];
$month = $date["mon"];
$day = $date["mday"];
$hour = $date["hours"];
$minute = $date["minutes"];
$second = $date["seconds"];
print_HTML("$year/$month/$day $hour:$minute に生成されました.<BR>\n");
?>

<?php
//////RSSを読み込む///////
$fp_rss = fopen("rss.txt","r") or die("FILE Rss");
while (! feof($fp_rss)) {
	$buffer_rss = fgets($fp_rss, 1024) or die("READ Rss");
	$buffer_rss = trim( $buffer_rss );//前後の空白を削除する
	
	echo $buffer_found;
	echo "<BR>\n";
	
	//////RSSを解析する///////
	$rss = simplexml_load_file($buffer_rss);//自分のはてなブックマークのURL
	$count = 0;
	foreach ($rss->item as $item) {
		$dc = $item->children('http://purl.org/dc/elements/1.1/');
		$link = $item->link;
		$title = $item->title;
		$date = $dc->date;
		$desc =$item->description;
		
		//echo "<li><a href=\"$link\" title=\"$title\">$title</a>$date</li><BR>\n";
		
		/////////カテゴリを判定する/////////
		$URL = 'http://b.hatena.ne.jp/entry/'.$link;
		//echo "$URL<BR>\n";
		// URL をオープン
		$fp = fopen($URL, 'r') or die("OPEN");
		// HTML を読み出す
		$category = "";//カテゴリを保持
		while (! feof($fp)) {//カテゴリを判別
			$buffer = fread($fp, 1024) or die("READ");
			$point = strpos($buffer, "cname");
			if($point != FALSE){
				$point = $point+6;
				for(;;$point++){
					if($buffer{$point}=="\"")
						break;
					$category = $category.$buffer{$point};
				}
			}
		}
		//echo $category;
		
		fclose($fp) or die("CLOSE");
		
		/////オブジェクトを生成する/////
		$newRSS = new RSSname();
		$newRSS->setRSS($link,$title,$desc);
		$newRSS->moto = $buffer_rss;//どのRSSから読み込んだのかを保存する
		
		//オブジェクトを管理する
		array_push($RSSArray,$newRSS);//全部格納する
		
		if($category =="anime"){
			array_push($RSSArray_anime,$newRSS);
		}else if($category =="elec"){
			array_push($RSSArray_elec,$newRSS);
		}else if($category =="book"){
			array_push($RSSArray_book,$newRSS);
		}else if($category =="web"){
			array_push($RSSArray_web,$newRSS);
		}else if($category =="music"){
			array_push($RSSArray_music,$newRSS);
		}else if($category =="game"){
			array_push($RSSArray_game,$newRSS);
		}else if($category =="comic"){
			array_push($RSSArray_comic,$newRSS);
		}else{
			array_push($RSSArray_none,$newRSS);
		}
	}
}
?>
<body>

<?php
/*
foreach($RSSArray as $rssArray){
	$rssLink = $rssArray->getLink();
	$rssTitle = $rssArray->getTitle();
	echo "<li><a href=\"$rssLink\" title=\"$rssTitle\">$rssTitle</a></li><BR>\n";
}
*/
?>
<?php
if(RSSArray_elec != null){
	print_HTML("<h3>computer</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_elec as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_web != null){
	print_HTML("<h3>web</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_web as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>

<?php
if(RSSArray_book != null){
	print_HTML("<h3>book</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_book as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_anime != null){
	print_HTML("<h3>anime</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_anime as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_comic != null){
	print_HTML("<h3>comic</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_comic as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_game != null){
	print_HTML("<h3>game</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_game as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</p></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_music != null){
	print_HTML("<h3>music</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_music as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>
<?php
if(RSSArray_none != null){
	print_HTML("<h3>none</h3>\n");
	print_HTML("<ul>\n");
	foreach($RSSArray_none as $rssArray){
		$rssLink = $rssArray->getLink();
		$rssTitle = $rssArray->getTitle();
		$rssDesc = $rssArray->getDesc();
		$rssMoto = $rssArray->moto;
		print_HTML("<li><p><a href=\"$rssLink\" title=\"$rssTitle\" target=_blank>$rssTitle</a><a href=http://b.hatena.ne.jp/entry/$rssLink><img src=http://b.hatena.ne.jp/entry/image/$rssLink border=0></a></p><p class=\"desc\">$rssDesc by $rssMoto</P></li><BR>\n");
	}
	print_HTML("</ul>\n");
}
?>

<?php
print_HTML("<BR><BR>");
print_HTML("<!--Google AdSense開始-->");
print_HTML("<center><script type=\"text/javascript\"><!--\n");
print_HTML("google_ad_client = \"pub-8582337737379910\";\n");
print_HTML("google_ad_width = 728;\n google_ad_height = 90;\n google_ad_format = \"728x90_as\";\n google_ad_type = \"text_image\";\n google_ad_channel = \"\";");
print_HTML("//--></script><script type=\"text/javascript\"  src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n</script>\n</center>\n");
print_HTML("<!--Google AdSense終了-->");


print_HTML("</body>");
print_HTML("</html>\n");

$fp1 = fopen("index.html","w");
fputs($fp1, $htmlString);
fclose($fp1);

?>



その他の作品:作ったプログラム一覧 - WebLab.ota

*1:先のエントリのはてブにコメントしてくれたもの