はじまりは、「社内 SNS(OpenPNE)から RSS をはいたらどうかっ!」。
まあ、せっかくなので、RSS を吐くというよりもデータエクスポータとして用意した方が自分が楽しいかなと思ったので、RSS と JSON はくようにしてみた。日記とコメントについて、みんなか個別で吐く。
URL は "OPENPNE_URL/export.php/diary|comment[/nickname]/rss|json"。最新 15 件のアイテムを掲載。日記にコメントをバッグな感じで入れようかと思ったんだけど、めんどかったので省略。
認証処理はなし。その辺は、利用するクライアントの実装に左右される現状だと思うので、.htaccess に Order 書くなり、Basic 認証かけるなり、WSSE とか使ってみるなり、とご自由にがポリシー。cookie 使えばスマートなのかも(Plagger はそうしてるんだっけ?)。
サーバ用件としては、php-json と PATH_INFO が使える事。mod_rewrite は利用せず。スクリプトは OpenPNE のライブラリを完全無視。半使い捨てスクリプトなので。php-json は json で出力しなければ必要ないはず。Debian で php5-json があったので嬉しくなって(?)無理矢理対応してみただけです。
かなりやっつけなので、バグがどうとかここがどうとかはやる気次第で fix。
とりあえず、最近借りた CVSDude に置いてみたんだけど、認証無しの checkout/export がよく分からなかったので、危機回避だって言い訳してみる。ので、ZIP で置いときます。
OpenPNEデータエクスポータ
mod_openpne の下の、"public_html"以下は、OpenPNE の構成に従ってます。
DB 直読みなので、OpenPNE のバージョン次第で動かなくなる予定。ちなみにテスト環境では、2.0.7.2 だと思う。'06/06/04 よりは前に落としてきたと思うんだけど、自信無し。"OpenPNE/setup/sql/mysql_001_table_structure.sql"を見る限りは大丈夫だと思う。Excel 無いので、2.0 の DB 定義は見れなかった…。
本当は、OpenPNE のライブラリを利用して DB がどうとかは考えない作りにすべきなんだろうけど、まあネタ的に還元できるものじゃないし、内輪ネタで終わるだろう事を予想して、です。
そういうわけ(?)なので、明日暇を見て社内 SNS に仕込んでみます。
!注意!
ライセンス云々はまったくなし(GPL にひっぱられるのかな?)なので、どうぞご自由に。添削とかは嬉しいのでよろしくお願いします。DB 内のデータを壊す事はありませんが、下手においてデータが外部に公開されても責任とれません。必ずサーバ設定なりなんなりでアクセス制限かけてください(特に、WWW 上で利用中の方)。認証かけた RSS を外部サービスでどう読むかとかは Google 先生と相談してください。最後に、『やっつけスクリプト』だと言う事をお忘れなく。
中で使ってる PEAR::DB と Smarty は OpenPNE 付属のやつをロードしてるんだけど、MySQL と PHP の相性しだいで、PEAR::DB が使えないかも。会社のサーバでは PEAR::DB は最新のをインストールして使うようにしました。
[それPla]をいただいたんですが、OpenPNE側の対応への期待と、Plagger 入れるのめんどくさい、あたりで使ってません。インストール地獄を乗り切る自信がなかったのもので…。
たぶん、必要な時間は手作りと大差ない気がする(Perl 環境から用意するので)。長期的に遊んでみたい気もするので、ただいまインストール中です。


かなり便利でした。thanks!
おもしろそうですね。
本体でもRSS出力は対応しようと考えています。
modules/api あたりにおきたいと思います。
本家での実装期待してます。
認証周りの実装をどうするかをそちらのコミュニティで議論していただきたく。
認証API/cookie/Basic認証+https などなど、どれがデファクトになるのか興味あります。
OpenPNE だとセッション cookie とかが自然ですかね?
では、今後の発展を期待してます。