Skip to main content.

Wintryblasts 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で読み込みさせてますが、高速化する方法がありましたらアドバイスいただけると嬉しいです。

--2011/06/28--
放置したままで申し訳ありません。
ソースをダウンロード出来るようにしました。

http://www.wintryblasts.com/tips/index.html

こちらよりご覧ください。

Comments

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

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

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

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

よろしくお願いします。

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

MIB様

更新しないまま放置してしまい誠に申し訳ありません。
ソースをダウンロード出来るようにしましたので
ご利用頂ければ幸いです。

http://www.wintryblasts.com...

よろしくお願いいたします。

Posted by ykamiyama at 06/28/11 00:27:04

Add Comment

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

About

YK
岐阜県の
ウェブデザイナーです。
興味のあることは、
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

Contents end