RSS Rich Site Summary ---RDFファイルの作成---   (03Mar2007)    >>TOP


RDFファイル作成

HPを効率よく見ていただくのに有用な方法の一つと考えられる。ニュース・サイトやブログなどでは、更新情報をRSSで公開するところが増えている。
RSSを公開しているニュース・サイトの様にタイトルと日付などを確認できれば必要な情報を閲覧できる。
定期的に巡回してくるソフトに対して,対応したフォーマットで記述されたファイルを置いておけば情報を渡すことが可能になる。
これを一般のHPの What's new! などに利用すればと思ってやってみたが,意外と簡単だった。
ファーマット(RDF)で記述するFreeのソフトがあるので,それを利用してファイルを作成してUPすればよい。
(自作ソフト RDF EDITOR(perl版) もあるので,参考にしてください。)
  • PoriPori World から RSS Writer をダウンロードして解凍して RSSWriter.exe を実行。
  • 必要項目を入力して, index.rdf などとして保存。
  • この index.rdf ファイルをHPの任意のところ(例えば,rssフォルダを作成してそのフォルダ内にUPすればOK。
  • RDFファイルのパスをHP上で示しておけばよい。例:
  • サーバの環境によって異なるが,.htaccessファイルもrssフォルダにUPしておく。(解凍時 htaccess になっているので,UPした後ファイル名を .htaccess に変更する)
  • できれば,HPのソースでヘッダに 
    <LINK rel="alternate" type="application/rss+xml" title="優友遊" href="http://www.ayu-fishing.info/rss/index.rdf">
    を追加しておくとよい。緑の箇所はタイトルとRDFファイルのパスを書いておく。
    ブラウザFirefoxではライブブックマークとして(Ver.1.0.7では右下のステータスバー,次バージョン1.5ではアドレスバーに)表示されるようになる。ツールバーに登録すれば,HPを開かずに最新情報を知ることができる。

配信側としては,とりあえずこれでOK。
受信としては,専用のソフトを使う以外に上記の様にFirefoxかサーバがPHPに対応しているのであれば,以下のようにHTMLで表示することが出来る(サーバの環境によっては不可能の場合もあるかも)。
Fedora core 3,Fedora core 4では動作確認。

HTML表示例1:

安ちゃんの鮎友釣り


PHPソース例:
<?php
require_once '../../rss_fetch.inc';//パスは環境に合わせる
$url = 'http://www.ayu-fishing.info/rss/index.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "UTF-8", "auto");
echo "<h4>$title</h4>\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\">$title</a></li>\n";
}
echo "</ul>\n";
?>
PHPで表示するには MagpieRSS をインストールする必要がある。
magpierss-0.72.tar.gzをダウンロードして解凍して,incファイルすべてとextlibフォルダをHTMLファイルと同じディレクトリにUPする。
しかし,日本語は文字化けをするようなので rss_fetch.inc ファイルのソースで 358行 辺りの以下を
define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
次の様に変更すると文字化けは解消するようだ。

define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

また,このままではincファイルに直接アクセスすると,ソースが丸見えなので
.htaccessファイルに,以下を追加するとよいかもしれない。

<Files *.inc>
deny from all
</Files>

日付の表示は以下のようにするとOK。表示方法はPHP関数などを使用すれば変更可能。
PHPソース例2:
<?php
require_once '../../rss_fetch.inc';
$url = 'http://www.ayu-fishing.info/rss/index.rdf';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "UTF-8", "auto");
echo "<h4>$title</h4>\n";
echo "<ul>\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
$date = $item[dc][date];//日付の取込
echo "<li><a href=\"$url\">$title</a>$date</li>\n";
}
echo "</ul>\n";
?>

表示結果:

安ちゃんの鮎友釣り


オリジナルでは1時間キャッシュされるので,更新時間を変更したい場合は rss_cache.inc ファイルのソース(18行くらいの所)に以下の1行を追加。

define('MAGPIE_CACHE_AGE',1800);

上記の例だと1800秒(30分)までキャッシュされる。