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フィードを表示させたい箇所に下記のコードを記述してファイルをまとめてサーバにアップ(アスキーモード)して指定のパーミッションに変更。

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

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

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

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

index.cgiの134行目。

unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";}

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

unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";
last;}
取得するサイトorブログ名を任意のテキストに変更する

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

index.cgiの41行目。

@url = ('RSSフィードURL1', 'RSSフィードURL2', 'RSSフィードURL3', 'RSSフィードURL4', 'RSSフィードURL5');

下記に変更。

@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';

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

unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";}

下記に変更。

unshift @inp, "$tix<>$title<>$link<>$des<>$mytitle{$xxx}<>$site_l\n";
管理者名を取得して表示

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

index.cgiの124行目。

my $title = $item->title;

これを下記に変更。

my $title = $item->title . '(' . $item ->author . ')';

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


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

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

:roll: more »

:roll: more »

*