WiLiKi:RSSMix

WiLiKi:RSSMix

複数のWiLiKiからの更新情報をまとめる

http://practical-scheme.net/wiliki/rssmix.cgi

RSSMixは複数のサイトからRDF Site Summaryを取得して、 項目をいっしょくたにしてdate属性をもとに新しい順に並べて表示する スクリプトです。RSSを使うクローラー等、似たようなものは既にありますが、 こちらは複数のWiLiKiサイトをうまくつなげることを重視するつもりです。

ただ、RSS対応したWiLiKi-0.3で運用してる ところもまだあんまりなさそうだし、自分のところだけだと 寂しいので、RSSを公開している他のサイトも入れさせてもらっています。 RDFを取るのが迷惑でしたらお知らせ下さい。 一応、取得したRDFはキャッシュしてあって、 30分以内には再アクセスにいかないようにしています。 (逆に、各サイトの更新情報は最高30分遅れて反映されます)。

また、WiLiKi-0.3を運用していて、実験に参加しても良いという 方がいらっしゃいましたらお知らせ下さい。

WiLiKiに限らず、RSSにitemの作成/更新日時が入っているサイトなら 追加できます。(YukiWiki等、RSSにdateを入れていないところだとだめですが)。

RSSには最新の10〜15項目を入れるのが普通のようなので、 リストに現われるのもその項目までとなります。

たまにrssmix.cgiがスタックする件

Shiro (2003/06/13 00:37:17 PDT): 時々rssmix.cgiが固まることがある。 今利用しているサーバはLinux 2.4.20。OS specificなのか 一般的なバグかは不明。

固まった状態でデバッガをattachすると、gc中でデッドロックしている。 どうやら、子スレッド中でgethostbyname_rを呼んで、そいつが何かの ライブラリをdlopen()していて、その中に入った時にgcがトリガされると まずい模様。

2004/05/23 17:14:15 PDT: 最近見てない。

rdfが取れない場合がある件

iriyak (2004/05/15 21:57:45 PDT): こちらの rssmix.cgi の出力にSHIMADAさんが出てこないようです。目下、切り分け中です。運営しているサイトの wget で blosxom.rdf を取得したら取れました。ですので、そこから後のシーケンスのどこか、もしくは rssmix.cgi の設定値そのものに原因があるのではないかとあたりをつけています。

ふじさわ 2004/05/16 15:56:29 PDT : たぶんblosxom.rdfのdc:date項目を読めていないのが原因です。dc:date項目は何通りかの表記が可能なのですが(cf. http://www.kanzaki.com/docs/html/dtf.html )、一般的に流通しているRDFのdc:dateは「YYYY-MM-DDThh:mm:ssTZD」形式で、SHIMADAさんちのblosxom.rdfは「YYYY-MM-DDThh:mmTZD」形式です。そして、rssmix.cgiのdc:date切り出し処理はad hocなものなので、後者の形式に対応していないのです。これが原因なら、rssmix.cgiのparse-date関数を少しいじることで直ります。

Shiro 2004/05/23 16:10:04 PDT: 0.5リリースで直しておきました。

SHIMADA (2004/05/27 20:07:21 PDT): ここのやりとりに気づいていませんでした。BlosxomのRSS10フレーバーを適当にコピペ・修正した代物なのですが、秒が抜けてたとは気づきませんでした。今度追加しときます。

Setu 2004/08/19 15:00:15 PDT: 初めまして。rdfで、<title></title> とタイトルが空の場合、そのサイトのrdfが全く表示されないです。tDiary で作られる rdf を取り込んだ所、表示されないのでデータを切り捨てながら試してみました。空のタイトルを "<title>無題</title>" とするとRSSの一覧に並びました。tDiaryでは、本文も rdf に取り込んでいて、本文中に副見出しが付いている場合、それ以降が独立の<item>となり、タイトルが空で <item>が作られる様です。

対応の仕方ですが、tDiaryの使い方としては文章/記事の一部に過ぎませんので、この タイトルが空な <item> は、まるごと捨てちゃって良いと思います。http://mixi.jp/ で、この rdf を取り込んだ所、やはり捨てています。

なお、shell から rssmix.cgi を実行した所、エラー出力に 『pair required, but got ()』と、出力されます。

Shiro (2004/08/19 20:17:30 PDT): ちゃんと試してはいないのですが、src/wiliki/rssmix.scmの 最後の関数extract-form-rdfの本体で、タイトルを扱ってる部分をこうすると どうでしょうか。今ならGaucheRefj:util.matchあたりを使ってもっと綺麗にかけそうですが。

     (and (pair? chan-title)
          (pair? (cdr chan-title))
          (if (and (pair? (cadr chan-title)) (eq? (caadr chan-title) '@))
              (caddr chan-title)
              (cadr chan-title)))

Setu (2004/11/09 23:36:02 PST): rdf が取れないサイトがあったので調べたら、rss 2.0 を使っていました。rssmixは rss 2.0 をサポートしていないです。今度、気が向いた時にrss 2.0を少しサポートするようにしてみようと思ってます。

Setu (2004/11/09 23:36:02 PST): itemの時間がないとそのitemは捨てられます。巡回の一部にいれておきたいRSSでitem に時間が入っていないサイトがあるのでどうしようかと思っています。「今」を自動的にいれるといつでも最新にならんでしまうので、「今日の午前0時」を自動的に入れてみようかなと思っています。

Shiro(2004/11/14 17:50:57 PST): しばらくこっち手をつけていませんが、 年末にかけて少しいじると思うので、その時にまとめて処理します。 気がついたことがあれば書き込んでおいて下さい。

Zu 2005/07/12 01:29:43 PDT:


議論はこちらに

Shiro (2003/02/17 21:36:03 PST): んー、時々えらく時間がかかるのは何故だろう。 今はフェッチするrdf毎にthread作ってhttp-getさせて、thread-join!で まとめるところでタイムアウト切っているんで、もし全てのhttp-getが スタックしてるとスレッド数×タイムアウト分待たされる。 各http-getをタイムアウトさせたい場合はもう一段threadをかませるしか ないのかなあ。

あ、まてよ。thread-join!のタイムアウトを絶対時間でやればいいのか。

Shiro (2003/02/18 18:51:41 PST): cgiキック時点から30秒で全部タイムアウトするようにした。 が、やっぱり一つでもひっかかると30秒待つのはいやんな感じだ。

各サイトの、キャッシュされたデータの取得時間と、最近のhttp-getにかかった時間は

  http://practical-scheme.net/wiliki/rssmix.cgi?c=info

で見られる。

Shiro: ishinaoさんが同様にRSSを集める wikistmaniaという実験を始めました。

これ見てるとRSSに<description>も載せたくなります。

Shiro (2003/02/24 05:32:30 PST): たまーにrssmix.cgiがスタックすることがあるようだ。 サーバーにログインしてみると、スレッドをclone()で作ったあと 元プロセスが死んでるっぽい。本来ならそこでスレッドも殺されるはずなんだが… 変なところでスタックするとキャッシュDBのロックが握られたままになるから 後が全部つっかえてしまう。困ったな。

yaegashi (2003/03/04 09:44:38 PST): よろしければ うちの WiLiKi も実験に加えてください。 くだらんコンテンツしかなくて恐縮ですが…。 なお WiLiKi はすでにいろいろなところで 細かな改良を加えつつ活用させていただいています。 そのほとんどが表に出せるところにないのが残念です。

kou (2003/03/04 21:14:24 PST) : RWikiにも同じような機能をつけてみたのですが、WiLiKiの提供するRSS(1.0ですよね?)には/rdf:RDF/item要素にrdf:about属性がないのはどうしてですか?http://web.resource.org/rss/1.0/spec#s5.5 には

  Required Attribute(s): rdf:about

と書いてあるので必須属性だと思ったのですが。

kou (2003/06/16 06:08:24 PDT): /rdf:RDF/channel/items/rdf:Seq/rdf:li要素のresource属性のrdf接頭辞は http://www2.xml.gr.jp/log.html?MLID=xmlusers&N=8353&FORMAT=MIN ということだそうです.

makoto (2004/12/17 00:04:34 PST): http://www.mozilla-japan.org/products/firefox/live-bookmarks.html の右下に あるように、RSSをフィードしていることをFireFoxに知らせるためのlinkタグを WiLiKi 0.5のwiliki.scmのwiliki:default-head-elementsにベタで追加したら、 ちゃんとFireFoxのウィンドウの右下にRSSマークが出て、ライブブックマークとして 機能しています。linkタグのhref属性には、うんたら/wiliki.cgi?c=rssと 書きました。wiliki.cgiに、:rss-feed?とかあるといいのではないでしょうか?

More ...