● モジュール概要
このモジュールは、 登録されたサイトを巡回し、RDF/RSS/ATOM 記事を収集し、データベースに格納する。
格納されたデータは検索が可能であり、検索結果をRDF/RSS/ATOM形式で出力することも可能である。
このモジュールは、 WebLinks の RDF/RSS/ATOM 記事収集機能を独立し、機能拡張したものである。
RDF/RSS/ATOM 収集のプラットホームとなる方向を目指している。
応用例としては、ヘッドライン・モジュール や 未来検索
http://sf.livedoor.com/ を想定している。
現在、ベータ版です。
今後、大幅に仕様や実装が変わる可能性があります。
何か問題が出ても、自分でなんとか出来る人のみお使いください。
仕様や応用例の提案、またはバグ報告やバグ解決やハックなどは歓迎します。
デモはこちら● 機能概要
1.サイト登録
サイト名、サイトURL、RDF/RSS/ATOM のURL、キャッシュ時間などを入力する。
2.「RDF/RSS/ATOM Auto Discovery」
サイトが「RDF/RSS/ATOM Auto Discovery」に対応してるときは、
サイトのURLを登録すると、RDF/RSS/ATOM のURL を自動検出し登録される。
3.ブラックリスト登録
未来検索などのブログ検索サイトを登録すると、好ましくない記事が収集されることがある。
好ましくない記事のURLをブラックリストに登録すると、以降の収集は停止される。
なお「好ましくない記事」は人により異なる。
4.RDF/RSS/ATOM記事の取得
どういう契機でRSS/ATOM記事を取得するか。
3つの方法を用意しています。
4.1 誰かが WEBブラウザでアクセスしたときに、取得する
誰かが簡易ヘッドラインのページやブロックにアクセスしたときに実行されます。
巡回するサイトは簡易ヘッドラインに表示しているサイトだけです。
表示するサイトが多いと、タイムアウトする可能性があります。
4.2 管理者が手動で取得する
管理者画面にアーカイブ更新があります。
4.3 コマンドラインモードで、自動的に取得する。
「コマンドラインの設定」を参照ください。
5.RDF/RSS/ATOM記事のXML解析
5.1 文字コード
任意の文字コードに対応している。
ただし、XMLデータに文字コードの指定がないか、
PHPのマルチバイト関数が対応していない文字コードでは、文字化けすることがある。
また、日本語版では、ドイツ語やフランス語のウムラウトなどは文字化けすることがある。
なお、PHPのXMLパーサー関数は US-ASCII あるいは UTF-8 しか使用できないため、
EUC-JPなどはUTF-8に変換してから、解析している。
5.2 パーサーの選択
XMLデータの形式に応じて、RDF/RSS/ATOMのパーサーを自動的に選択する。
さらに、パーサーは複数 用意され、好きなものが選択できる。
XOOPSコアのRSSパーサーと、RSSCモジュール独自のパーサーが用意されている。
後者の方がパースできる項目が多い。
6.RDF/RSS/ATOM記事の表示
(1) HTMLタグの有効・無効
タイトルや本文にHTMLタグの使用をするか/しないかが選択できる。
使用する場合でも、JavaScript が含まれていると、サニタイズされ無効になる。
7.不備なRDF/RSS/ATOM記事の処理
(1) タイトルなし
タイトルがないものは、「---」を表示する。
(2) 日付なし
日付がないものは、常に最下位に表示される。
DBに格納するときに、現在の時刻を設定する。
(3) 未来の日付
未来の日付になっていると、常に上位に表示される。
表示するときに、3日以上未来のものを省いている。
8.サーバー環境
(1) PHP環境変数 allow_url_fopen off に対応した。
9.データの移行
9.1 XoopsHeadline モジュール
XoopsHeadline モジュール からヘッドライン・テーブルの過去のデータを移行できる。
9.1 WebLinks モジュール
WebLinks モジュールから、リンク・テーブル、フィード・テーブル、ブラックリストなどの過去のデータを移行できる。
現時点では、WebLinksとの連携機能がないので、
WebLinks側でも継続してRDF/RSS/ATOM記事を収集する必要がある。
10.モジュール複製
コピーするだけでモジュールが複製できます。
TinyD モジュールなどで実装されているものと同じ機能です。
用意されているモジュール名は "rssc" と "rssc0" の2つです。
それ以外の場合は、sql と templates と images ディレクトリに必要なファイルを作成してください。