にしし ふぁくとりー
にししふぁくとりーフリーCGI → Fumy Merge RSS
複数のRSSフィードやAtomフィードを統合(マージ)して1つの大きなRSS・Atomフィードを作成できるCGI

Fumy Merge RSS

CGIの紹介

サンプル表示
複数のRSS(Atom)フィードをいくつでも合体できる
結合結果のRSS(Atom)フィードは「直接表示」も「ファイル化」も可能
結合パターンも複数用意できる
Update Pingの送信先(Pingサーバ)に指定可能
使用は簡単
「Fumy Merge RSS」は、フリーCGIとして配布しています。どなたでも無料でご利用頂けます。個人サイト・商用サイト共に、ご自由にご利用下さい。

CGIのダウンロード

[Version] 1.00 [File] fmergerss.zip [Size] 8.75KB [Date] 2007,03,07.
Ver 1.00 をダウンロードする (このサイトから)
ZIP形式で圧縮しています。
ダウンロード後、展開して下さい。

必須モジュールのダウンロード

XML::FeedPP , XML::TreePP
このCGIには、以下の2つのモジュールが必要です。サーバにインストールされていない場合は、以下の公開サイトからダウンロードして、このCGIと同じディレクトリに格納する必要があります。
上記のモジュール作者サイトのほか、CPANからも入手可能です。
もし、サーバにPerlモジュールをインストールする権限があるなら、ppmを使ってインストールすることをお勧め致します。

CGIの設置方法・設置環境

CGIの設置環境

CGIの設置方法(パーミッションの設定)

CGIとデータファイルを、同一のディレクトリに格納して、次のパーミッションに設定して下さい。
ファイル名パーミッション補足
実行ファイル
mergerss.cgi755メインCGI
データファイル
sample1.dat など644データファイル(※自由な名称で好きなだけ作成可)
※データファイル名は何でも自由に付けることができます。データファイルの個数に制限はありません。サンプルとして付属しているデータファイルは不要ならアップロードしなくて構いません。
※結合したRSS(Atom)フィードをファイル化する場合は、このCGIを格納するディレクトリそのもののパーミッションを「777」にする必要がある場合があります。書き込みに失敗するようなら「777」に設定して下さい。(※ディレクトリを777にできない場合やしたくない場合は、生成される予定のファイル名でダミーファイルを作成しておき、そのファイルのパーミッションを「666」(=書き込み権限を付加)にしておけばOKです。このCGIは、余計な一時ファイルなどは生成しませんから、出力するのはユーザが指定したファイルのみです。)

モジュールも一緒に格納する場合は、次のパーミッションに設定して下さい。
ファイル名パーミッション補足
Perlモジュール
TreePP.pm644XMLを解析・作成するPerlモジュール
FeedPP.pm644RSS・RDF・Atomフィードを解析・作成するPerlモジュール
※上記のPerlモジュールは、CGIと同じディレクトリ内に「XML」というサブディレクトリを作成し、そこにアップロードします。(詳しくは後述のディレクトリ構造図を参照)

CGIの設置方法(アップロード)

アップロードは、すべて「アスキーモード」(テキストモード)で行います。(Perlモジュールもテキストモードでアップロードします。)
CGIの文字コードは、SHIFT-JISのままアップロードされることをお勧めしますが、他の文字コードに変換してアップロードしても構いません。(※その場合は、CGIの39行目にある文字コードの記述を修正する必要がある点に注意して下さい。)

ディレクトリ構造は以下のようにして下さい。

※Perlモジュールをアップロードしない場合は、XMLサブディレクトリは不要です。

CGIの設置方法(CGIファイルの書き換え)

* mergerss.cgi をエディタで開いて、次の箇所を必要に応じて書き換えます。
※1行目以外、特に書き換えなくても動きます。
(1行目) #! /usr/bin/perl
▲Perlの位置を必要に応じて書き換えます。 /usr/local/bin/perl など。

(35行目) my $default_feed_type = 'RSS';
▲生成フィードの種類を指定しなかった場合の種類を指定( RSS , RDF , Atom )
(36行目) my $default_output = 'show';
▲直接表示するかファイル化するかを指定しなかった場合にどうするか( show , file , file-ping )
−表示する場合は「show」を、ファイル化する場合は「file」を指定。ファイル化した後、Pingサーバの応答を模倣する場合は「file-ping」を指定。
(37行目) my $default_charcode = 'UTF-8';
▲生成フィードの文字コードを指定しなかった場合の文字コード( Shift_JIS , UTF-8 )

※36〜38行目の指定は、「どうするかが指示されなかった場合」の設定です。実際にどんな種類のフィードをどうやって出力するかは、各データファイル内に記述することで指定できます。

(39行目) my $cgi_charcode = 'Shift_JIS';
▲このCGI自体の文字コード。標準では「Shift_JIS」。CGIの文字コードを変更した場合は、その文字コード名に修正して下さい。( Shift_JIS , UTF-8 , EUC など )

CGIのカスタマイズ方法

シンプルなCGIなので、特別なカスタマイズはありません。
データファイルの作成方法は、下記をご参照下さい。(サンプルのデータファイルを見るだけでも分かると思います。)

CGIの使用方法

CGIの使用

CGIをパラメータなしで実行すれば、データファイルの一覧が表示されます。
http://〜/mergerss.cgi
パラメータにデータファイル名を指定すると、そのデータファイル内に記述されたRSSフィードのリストを読み込んで、RSSフィードの統合処理を行います。
http://〜/mergerss.cgi?データファイル名
例えば、データファイル名として「 favorite.dat 」を指定する場合は、
http://〜/mergerss.cgi?favorite.dat
というURLにアクセスすることになります。

どのようなRSSフィードを作成するかの設定は、各データファイル内に記述することで行えます。(下記参照)

データファイルの作成

データファイルは、自由なファイル名で作成可能です。サンプルの「 sample1.dat 」などを参考にすると分かりやすいと思います。
データファイルの拡張子を「.dat」にすれば、CGI上から一覧で表示されます。(表示させたくない場合は、「dat」以外の拡張子で作って下さい。)

データファイルの中身は、以下のような感じになります。
#RSS
%Shift_JIS
@show
http://www.example.com/feeds/rss.xml
http://www.example.com/feeds/atom.xml
http://feeds.example.net/index.xml
上記の例では、最初の3行でフィードの種類・出力文字コード・出力方法を指定し、4行目以降で統合するRSSフィードのURLを指定しています。 (3つのRSSフィードを、RSS2.0形式でSHIFT-JISコードで画面に表示する設定です。) 結合したいフィードのURL以外は、すべて省略可能です。省略すると、CGI内で指定したデフォルトの設定が使われます。
同じ種類の設定を2回以上記述した場合は、後に書いた方が採用されます。

※ファイル化する際のファイル名には、データファイルと同じファイル名で拡張子を「.xml」に変えたものが使われます。
たとえば、データファイル名が「 apple.dat 」なら、出力されるRSS(Atom)フィードは「 apple.xml 」となります。(データファイル名に制限はありませんが、拡張子をxmlにはしないで下さい。また、拡張子のないファイル名にしないで下さい。何らかの要因でファイル名が生成できなかった場合は「default.xml」で生成します。)
ファイルに出力する場合は、ディレクトリに書き込み権限を付加する必要がある点に注意して下さい。(ディレクトリに書き込み権源を付加できない場合は、生成される予定のファイル名でダミーファイルを作成し、そのファイルに書き込み権限を付加しておけばOKです。)

書き方の例:
#RDF
%UTF-8
@show
http://www.example.com/feeds/rss.xml
http://www.example.com/feeds/atom.xml
上記は、2つのフィードを結合させ、「RSS 1.0」形式(RDF)で文字コード「UTF-8」にして画面に表示します。

#Atom
%UTF-8
@file
http://www.example.com/feeds/rss.xml
http://www.example.com/feeds/atom.xml
http://sakura.example.net/~tomoyo/rss/feed.rdf
http://www.example.org/~misaki/feeds/index.xml
上記は、4つのフィードを結合させ、「Atom」形式で文字コード「UTF-8」にしてファイルに主力します。(画面には、出力が完了した旨のメッセージとリンクが表示されます。)
このデータファイル名が「 sakura.dat 」だとすると、出力されるファイル名は「 sakura.xml 」になります。

#RSS
%Shift_JIS
@file-ping
http://www.example.com/feeds/rss.xml
http://www.example.com/feeds/atom.xml
http://sakura.example.net/~tomoyo/rss/feed.rdf
上記は、3つのフィードを結合させ、「RSS 2.0」形式で文字コード「SHIFT-JIS」にしてファイルに出力し、その後、標準的なPingサーバと同じ応答(XML)を返します。
このデータファイル名が「 tomoyo.txt 」だとすると、出力されるファイル名は「 tomoyo.xml 」になります。

※どの行も順不同です。(設定がURLの後でも構いませんし、途中に混ざっても構いません。ただし、フィードの結合は記述した順番で行われます。)

CGIのエラーについて

指定されたデータファイルが読めなかった(見つからなかった)場合には、その旨のエラーメッセージが表示されます。

データファイル中に指定されたURLに、フィードが見つからなかった場合や、指定されたURLがRSS(またはAtom)フィードではなかった場合は、500 Internal Server Errorになってしまいます。この場合、エラーの内容を示すメッセージは表示されないのでご注意下さい。

フィードバックのお願い(ご意見・ご要望募集)

このCGIを使ってみたご感想、ご意見などをぜひお送り下さい。
ご要望にはできるだけ応じたいと考えています。
ご連絡はメールなどでどうぞ。

謝辞

XML::FeedPP と XML::TreePP という、非常に高機能なPerlモジュールを開発された作者の方に感謝致します。 このCGIのメイン機能は、ハッキリ言ってこのモジュールをそのまま使っているだけです。(^_^;)
このCGIに関するお問い合わせは、メールなどでお送り下さい。
このページの製作者は、にししです。
このページで公開されているCGIを利用した結果発生するいかなる問題にも、製作者および公開者は一切責任を負いません。
使用者個人の責任でご使用下さい。