CANDY CGI RSSリーダー 

以前は複数のサイトのRSSからフィードを取得してサイトに表示させる為に『Google AJAX Feed API』を利用していました。
ただ取得したいサイトのRSSフィードが1つの場合は何の問題も無く読み込み表示してくれるのですが、これが3つ、4つ…とRSSのURLを増やしていくと全てのフィードを正確に表示することは稀で非常に不安定な状態でした。
という事でCANDY CGIのRSSリーダー『RSS reader Type1』を使用することに。
前半はデフォルトの状態での設置について、後半は改造(ググって出てきたものを含め)についてまとめてみました。

早速ダウンロードして解凍する。
index.cgiをテキストエディタで開きログの更新時間や、Perlのパス、表示件数などの必要設定箇所を変更する。

サーバにインストールされてるモジュールのチェック

このスクリプトを動かすにはJcode.pm、FeedPP.pmといったPerlのモジュールが必要になってくるのでサーバにインストールされているのか確認する必要があります。サーバのサイトに記述されていなかったらサーバーアナライザーのようなフリーソフトを利用して調べます。
ダウンロードしてservana.cgiをテキストエディタで開きPerlのパスを設定してFTPソフトでアップ(アスキーモード)する。ブラウザからservana.cgiにアクセスします。調べた後はこのファイルは必ず削除します。
私の利用しているロリポップではJcode.pmはインストールされていたのですが、FeedPP.pmがインストールされていなかったので手動でインストールしました。インストールの仕方もCANDY CGIに分かりやすく記載されてます。

そして取得したRSSフィードを表示させたい箇所に下記のコードを記述してファイルをまとめてサーバにアップ(アスキーモード)して指定のパーミッションに変更。

[html]<iframe src="index.cgi" title="rss" scrolling="yes" width="幅指定" height="高さ指定">
<a href="http://www.candy-cgi.com/">CANDY CGI</a>
</iframe>[/html]

これで完了。ここからは自分の理想どおりにカスタムする方法。

複数のRSSから最新の1件のフィードのみ取得して表示

デフォルトの状態だと例えば5つのRSSフィードのURLを指定した場合、index.cgiの設定で表示件数を5にしたとしても全てをまとめて最新のフィードが5件が表示されるだけです。
5つのRSSフィードから最新の1件のみ取得して表示したい場合は下記のようにソースを変更します。

index.cgiの134行目。

[perl firstline=”134″]unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";}[/perl]

下記のように変更します。

[perl firstline=”134″]unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";
last;}[/perl]

取得するサイトorブログ名を任意のテキストに変更する

フィードだけではなくそのRSSフィードを配信しているサイト名orブログ名を取得し表示することが出来ますが、このサイト名orブログ名を任意のテキストに変更する方法です。
例えば『記事名/ブログ名』と表示されるところを『記事名/指定したテキスト』にします。

index.cgiの41行目。

[perl firstline=”41″]@url = (‘RSSフィードURL1’, ‘RSSフィードURL2’, ‘RSSフィードURL3’, ‘RSSフィードURL4’, ‘RSSフィードURL5’);[/perl]

下記に変更。

[perl firstline=”41″]@url = (‘RSSフィードURL1’, ‘RSSフィードURL2’, ‘RSSフィードURL3’, ‘RSSフィードURL4’, ‘RSSフィードURL5’);
%mytitle;
$mytitle{‘RSSフィードURL1’} = ‘タイトル1’;
$mytitle{‘RSSフィードURL2’} = ‘タイトル2’;
$mytitle{‘RSSフィードURL3’} = ‘タイトル3’;
$mytitle{‘RSSフィードURL4’} = ‘タイトル4’;
$mytitle{‘RSSフィードURL5’} = ‘タイトル5’;[/perl]

index.cgiの134行目。当然ですが、上記のコードを記述した分ズレます。

[perl firstline=”134″]unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";}[/perl]

下記に変更。

[perl firstline=”134″]unshift @inp, "$tix<>$title<>$link<>$des<>$mytitle{$xxx}<>$site_l\n";[/perl]

管理者名を取得して表示

私のブログのRSSだと下記の赤枠の部分ですね。

index.cgiの124行目。

[perl firstline=”112″]my $title = $item->title;[/perl]

これを下記に変更。

[perl firstline=”112″]my $title = $item->title . ‘(‘ . $item ->author . ‘)’;[/perl]

実行結果↓私のブログなので当然こうなりますね。。。複数人でブログを管理している場合は便利かもしれません。

  1. コメントはまだありません。

  1. トラックバックはまだありません。