MagpieRSSパーサー備忘録


  IshiiWebのトップページIshiiWeBlogの更新履歴を表示させたいと思い、色々調べた結果 MagpieRSSが手軽で便利であると分かった。
  MagpieRSSはPHPで使えるRSSパーサーである。
(マルチバイト文字も扱えるので日本語も通ります。)

今回参考にさせていただいたサイト
http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS
http://www.lucky-bag.com/archives/2005/05/hot_entry.html

以下の方法は私の環境下でのものです、実行する場合には全て自己責任でお願いします)
  ①PHPをインストールする。
1.まずはサーバーでPHPが使えるようにルート権限でコマンドを実行する。
 # yum install php php-mbstring

2.以下のコマンドでApacheを再起動する。
 # /etc/init.d/httpd restart

3.テスト用のPHPスクリプト(/var/www/html/test.php)を記述する。
 <?php
 phpinfo();
 ?>

4.http://サーバー名/test.phpにアクセスしてPHP情報が出ればインストール成功。
  ・PHPの設定は/etc/php.iniで行える。

  ②MagpieRSSを設置する。
1.以下にアクセスしDOWNLOADからMagpieRSSの最新版(現時点で0.72)を入手。
http://magpierss.sourceforge.net/
2.ダウンロードしたらファイルを解凍する。
3.RSSをパースさせたいページと同じディレクトリに以下をアップロード。
  • rss_cache.inc
  • rss_fetch.inc
  • rss_parse.inc
  • rss_utils.inc
  • extlib
4.さらにcacheというディレクトリを同じ階層に作成。(パーミッションを777にする)

  ③PHPスクリプトの記述。(注:PHP書くのは何年かぶりです)
 <?php
 require_once 'rss_fetch.inc';
 define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
 $url = 'パースしたいRSSのURL';
 $rss = fetch_rss($url);
 $title = $rss->channel['title'];
 $title = mb_convert_encoding($title, "UTF-8", "auto");
 echo "<font size=¥"6¥">$title</font>¥n";
 echo "<ul>¥n";
 foreach ($rss->items as $item ) {
 $title = $item[title];
 $title = mb_convert_encoding($title, "UTF-8", "auto");
 $url   = $item[link];
 echo "<li><a href=¥"$url¥" target=¥"_top¥">&nbsp;$title</a></li>¥n";
 }
 echo "</ul>¥n";
 ?>

    私の場合はひとまずこれで出来ました。
見栄えはまだまだだし、日付も取得してみたいので時間がある時にでもコードやCSSでいじってみようと思います。

(以上は自己責任において行ってください)

------------ここまでがMagpieRSSパーサー備忘録の内容------------


    宣言したとおり日付(曜日も)を取得してみる、ついでに二日前の更新分までNEWを表示させる。
具体的に加えたのは、赤字の部分で日付(曜日)青字の部分で新着のNEWを表示させている。

 <?php
 require_once 'rss_fetch.inc';
 define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
 $url = 'パースしたいRSSのURL';
 $rss = fetch_rss($url);
 $title = $rss->channel['title'];
 $title = mb_convert_encoding($title, "UTF-8", "auto");
 echo "<font size=¥"6¥">$title</font>¥n";
 echo "<ul>¥n";
 foreach ($rss->items as $item ) {
 $title = $item[title];
 $title = mb_convert_encoding($title, "UTF-8", "auto");
 $url   = $item[link];
 $youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
 $mday = date('w',$item['date_timestamp']);
 $date_str = date("n/d", $item['date_timestamp']);
 if ($date >= time() - 3600 * 24 * 7) {
  $date_str = "<EM>" . $date_str . "</EM>";
 }

 $days = 2;
 $rssdate = strtotime("$date_str");
 $today = strtotime(date("Y/m/d H:i"));
 $diff = date("U", ($today - $rssdate))/86400;
 if ($days > $diff) {
 echo " <div style=¥"float:left;¥"><BLINK><font color=¥"red¥" size=¥"1¥"><B>NEW</B></font></BLINK></div>";
 }

 echo "<li style=¥"list-style-type:none;¥"><div style=¥"float:right;¥">$date_str$youbi[$mday]</div><a href=¥"$url¥" target=¥"_top¥">&nbsp;$title</a></li>¥n";
 }
 echo "</ul>¥n";
 ?>

    ここからはCSSやHTML、PHPをいじって整えてください。
私は<BLINK>でNEWを点滅させたり、CLASS指定で見栄えを整えたりしました。


★MagpieのRSS取得が遅いと感じる場合
  rss_cache.incの21行目でRSSをキャッシュする時間の間隔を変更します。
デフォルトでは「var $MAX_AGE = 3600;」となっている。(1時間=3600秒)


(以上は全て自己責任において行ってください)
2007/9/27