muumoo.jp


ニュース記事検索


過去ログ 2007年12月07日 - ニュース過去ログ

ニュース過去ログ

2007/12/07 管理人日記 SBM bookmarks APIの時差問題を解消 (管理人日記)

以前作ったSBM bookmarks APIってのがあって、これはURLを渡すと、4つのソーシャルブックマークにおけるそのURLの登録内容を返すYahoo! Pipesです。

で、そのAPIを使ったアプリでpageinfoというのを作りました。これは、ブックマークレットをクリックすると、今見てるページの裏側を表示するやつ。

そのpageinfoがどうもおかしかった。各種ソーシャルブックマークの登録状況が出るんだけど、どうも時間がズレてる。まあ時間は表示はしてないんだけど、表示順とかもおかしいし、データによっては日付までズレてる。おそらく数時間単位で時間がズレてるんだと思う。

調べてみた

ってことで調べてみた。調査には、多数のSBMサービスにほぼ同時にブックマークを投稿しているtsupoさんのデータが非常に参考になりました。感謝しています。

はてなブックマーク

はてなブックマークのデータは、Yahoo! Pipesに取り込むと9時間ほど未来になるようです。なので32,400秒を引いた値を使うことで、(日本では)正確な時刻になりました。

Loopモジュールの中にSimpleMathモジュールを入れて、全要素の時刻を引いています。

livedoorクリップ

livedoorクリップのデータは、最初からエポック秒で取得でき、そのまま正確な時刻になっていたので、補正は不要でした。

まあ楽だから良かったのですが、Yahoo! Pipesにはエポック秒を時刻に変換する機能はないので、いつまでもエポック秒のまま扱う必要がある。Yahoo! Pipes内で時刻として処理することはできないわけです。なので場合によっては困るかも。

del.icio.us

del.icio.usのデータは、以前これとは別なSBM comments APIのときにYahoo! Pipesに取り込ませたら時差があったので25,200秒を引くという補正をかけていて、今回のSBM bookmarks APIでも同じことをやっていたのですが、いつからから補正が不要になったようです。

del.icio.usの返すデータの仕様が変わったのか、Yahoo! Pipesが解釈する仕組みが変わったからなのかはわかりませんが(それともユーザやUSER_AGENTのタイムゾーン?)、補正を何もやらないように修正したことで、正確な時刻になりました。これは結構良い感じ。

Buzzurl

そしてBuzzurlのデータは、まったくトンチンカンな時刻がYahoo! Pipes上で認識されていました。なんか現在時刻のような感じ。これは、どうやらBuzzurlが吐いてるRSSのdc:date要素が、

2007-12-07T12:30+09:00

みたいな書式、つまり秒のデータを含まないものになっていて、Yahoo! Pipesが時刻であることを認識できていないようでした。

そこで、Regexモジュールで、まずdc:dateに「:00」を追加して秒として扱えるように補正し、Loopモジュールの中にDateBuilderモジュールを入れたもので時刻として認識させます。さらにこれは9時間後の時刻になっているので、はてなブックマークのときと同じように32,400秒を引いて完成。

しかし、秒をすべて00秒に固定しているので、これでも正確な時刻とは言えません。秒単位では誤差が残ったということです。だってRSSフィードに秒を含んでないんだもん、仕方ないよね。

直った

これで、以前までよりブックマークのソート順がかなりマトモな感じになったと思います。

ソースの画像を貼りたいところですが、めちゃくちゃ巨大なのでキャプチャすら大変。Yahoo.comのアカウントさえあればソースは見れるので、それで我慢してください。

この記事のURI:
http://muumoo.jp/news/2007/12/07/0sbmbookmarksapitime.html
関連記事 最新の関連記事
関連記事 直後の関連記事
関連記事 直前の関連記事


Copyright© 2002-2007 muumoo.jp All Rights Reserved.