Skip to main content.

Wintryblasts Tech Blog

複数のRSSを読み込み、ソート表示するRSSリーダー : PHP MagpieRSS使用

MagpieRSSを改変して20個程度のブログのRSSを読み込み、
日付順にソートして書き出してみました。
サンプルは2個になってます。
arrayはアドレス => 表示名です。 ソースコードを解説していきます。

<?php
//まずMagpieRSSのモジュールを読み込む
require_once '../rss/rss_fetch.inc';
require_once '../rss/rss_utils.inc';
require_once '../rss/code_table.ucs2jis';
require_once '../rss/jcode.php';

//次に読み込むRSSの配列を作成する
$mainrss = array ('http://www.pheedo.jp/f/JapaneseTechCrunch' => 'TechCrunch Japanese',
'http://rss.rssad.jp/rss/itmatmarkit/news/rss.xml' => '@IT NewsInsight'
);

//あとで使う配列を規定しておく
$rssarray = array();

//1970年1月1日からの秒数を今の時間で取得
$today = date(U);

//$mainrssを分解してURLと名前に分けて取り出す。このあたりは通常のMagpierssと変わらない。
foreach ($mainrss as $url=>$names){
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = JcodeConvert($title, 4, 4);
foreach ($rss->items as $item ) {
$title = $item['title'];
$urls = $item['link'];
//アイテムの日付を拾う、RSSによって変更する必要あり、if文が必要かも
$date = $item[pubdate];
//タイムスタンプを1970年1月1日からの秒数に変換
$timestamp = date("U",strtotime($date));
//ここは表示用の年月
$daytime = date("Y年m月d日",strtotime($date));
$youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
$youbi2 = date("w",strtotime($date));
//出力はここでタイムスタンプとセットで出力
$linkstr = "<tr><th align=\"left\" valign=\"top\"><span>$daytime $youbi[$youbi2]</span>$names</th><td align=\"left\" valign=\"top\"><a href=\"$urls\">$title</a></td></tr>\n";
//タイムスタンプで配列を作る。
$rssarray["{$timestamp}"] = $linkstr;
}
}
//タイムスタンプでkrsort (配列をキーで逆順にソートする)
krsort($rssarray);

//ここから出力
echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
//20個まで出力したら終了させる
for(reset($rssarray); $key=key($rssarray); next($rssarray)){
echo "$rssarray[$key]";
$count++;
if($count == 20){
break;
}
}
echo "</table>\n";
?>

稼働させてますがRSSが増えると表示までにかなり時間がかかります。
Ajaxで読み込みさせてますが、高速化する方法がありましたらアドバイスいただけると嬉しいです。

Comments

はじめまして、突然のコメントすみません。

「MagpieRSS 複数」を検索してここにたどり着きました。
複数RSSをサイトごとに掲載ではなく、投稿日順に掲載できるものを探していたのですが、こちらで紹介されているもので可能でしょうか?

コードをコピペして、「require_once」部分・「$mainrss」部分と文字コード関係を書き直しただけなのですが、1記事しか表示してくれません。
($mainrssで設定した最後のURL分。最後の1行を消すと、その上の行の1行しか表示しない)

コピペしただけなので、間違うことはないと思うのですが…
何かチェックしたらよい点はありませんか?

よろしくお願いします。

Posted by MIB at 03/02/09 18:51:23

Hello everyone. I write because I'm afraid to say some things out loud.
I am from Chad and learning to write in English, please tell me right I wrote the following sentence: "Gt; gt; click to book cheap airline ticket onlinelt; lt; airline delta the airline cheap flight london ticket."

Best regards :-D, Sidney.

Posted by Sidney at 03/28/09 05:33:37

Add Comment



About

岐阜県多治見市でウェブ
デザイナーやってます。
興味のあることは、
Ruby on Rails,PHP,
ActionScript,XHTML,
CSS,Ajax...などなど

Feeds

RSS 2.0
Atom

Links

Wintryblasts Home
Wintryblasts.comのトップページです。

Nucleus CMS Japan
Nucleus CMS Japan official page.

WAVACオーディオラボ
素晴らしい真空管アンプを製作しているWAVACオーディオラボのホームページ。

CMONOS : http://cmonos.jp/
簡単インストールが特徴の中小規模サイト向けCMS。豊富なツールが使えます。

Login

Firefox meter
Contents end