Yahoo! Pipes で日付でソート

| コメント(0) | トラックバック(0)

Yahoo! Pipes で複数のフィードをまとめて日付でソートしたいときがあります。でもフィードによって日付の表記が違ってうまくソートできないことがある。
Pipes ではフィードの日付を日付データとして解釈するわけではなく、あくまで文字列のまま扱うのです。

フィードの中で使われる日付の表記は、W3C-DTF 形式と RFC2822 形式が多いみたいです。RSS にしろ ATOM にしろ、その辺はちゃんと定義があるはずですが調べてません。
ソートするためにはどちらかの形式に統一する必要があります。しかし、そういうのをパッとやってくれるモジュールは今のところ用意されていません(Date Formatter というのがありますが、これは User Input なんかで得たデータは入力できるけどフィードの中に含まれてる日付データには使えないみたい)。
この問題は Pipes の discuss を見ても何個かスレッドが立ってます。みんな苦労してる。

最近、文字列を正規表現で置換できる Regex というモジュールが追加されました。
これを使って、お粗末な物ですが RFC2822 形式を W3C-DTF 形式に変換する Pipe を作りました。

Date format converter (RFC2822 to W3C)

動作するためには条件がいくつかあります。
・日付は "pubDate" 要素決めうち。
・変換元の形式は、"Thu, 01 Mar 2007 19:30:42 +0900"(日時は一例)のみ。
・変換先の形式は、"2007-03-01T19:30:42+09:00"(日時は一例)のみ。
少しでも形式が違うとうまく動かないはずです。

なお、RFC2822 形式には曜日のデータが必要ですが、W3C-DTF 形式にはありません。
有る方から無い方へは削ればいいだけなので楽ですが、逆はめんどくさそうなのでこの方向の変換を選択しました。
それこそ Date Formatter が使えればなんとかなるんですが、今のところ Pipes ではこれが年月日から曜日を得る唯一の手段の様子。使えないと無理っぽいです。

で、これ単体では役に立たないので、こんな風に組み込んで使います。

RSS Concatenater

日付が W3C-DTF 形式なフィード3つまでと、RFC2822 形式なフィード2つまで。これらを1つにまとめて、新しい物から順にソートします。

Pipes は面白いんですが、ちょっと手の込んだことをやろうとするとまだまだカベが多い感じです。
お手軽さとシンプルさをキープしたままうまいこと高機能化することを期待しましょう。

トラックバック(0)

トラックバックURL: http://okoge.org/MTOS/mt-tb.cgi/500

コメントする

このブログ記事について

このページは、管理者が2007年3月 1日 19:43に書いたブログ記事です。

ひとつ前のブログ記事は「ついに DC5 が・・・」です。

次のブログ記事は「珍しく寝覚めの良い木曜日」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。