del.icio.us の自分のブックマークを気をつかって全部取得してみる

del.icio.us の自分のブックマークを全部取得する API、https://api.del.icio.us/v1/posts/get ですが、あんまし呼びすぎると怒られてデータを取得できなくなっちゃいます。使う方もちょっとは賢くやれよというわけで、ドキュメントにもあるように、まずは https://api.del.icio.us/v1/posts/update で最終更新時刻を調べて、取る必要があるなら取りに来いということで、やってみます。

というのも、自分がご飯を食べたご飯マップを Google Map でも貼り付けて作ったろかいなというわけで、お店のページを del.icio.us に登録、ページ表示時にそのデータから緯度経度を取ってマーカを貼り付け、クリックされたらぐるなびくらいからお店の情報持ってきて表示させよかなと思いまして。会社を休みながら。

つうわけで、先日作った MultiHttpRequest にちょっと手を入れて、それを使って API は呼びます。

PHP:
  1. require_once('MultiHttpRequest.inc');
  2.  
  3. $mhr = new MultiHttpRequest;
  4. $delicious_id = 'delicious';
  5. $url = 'https://api.del.icio.us/v1/posts/update';
  6. if (false === $mhr->add_post($delicious_id, $url, "")) {
  7.     return;
  8. }
  9. if (false === $mhr->set_opt($delicious_id, CURLOPT_USERPWD, 'YOUR_ID:YOUR_PASSWORD')) {
  10.     return;
  11. }
  12. if (false === $mhr->exec()) {
  13.     return;
  14. }
  15. $ret = $mhr->get_content($delicious_id);
  16. if ($ret === false) {
  17.     return;
  18. }

してやると、

XML:
  1. <?xml version='1.0' standalone='yes'?>
  2. <update time="2007-08-10T09:29:28Z" />

こんなんが返ってくるわけですが、Unix タイム値じゃないのね。Unix タイム値に変換しないと比較できないし、とか思ってちょっと調べてみたら、strtotime って関数があるんですね。

PHP:
  1. echo(date(DATE_RSS, strtotime('2007-08-10T09:29:28Z')));

とかしてやると、Fri, 10 Aug 2007 18:29:28 +0900 とかなりました。へー。

この値をどっかに覚えてローカルにファイル作っといて、先の update がその値より大きかったら全部取得、みたいな感じにしてあげればええのんですな。にゃるほど。

続きをやりたいところですが、中目黒はいろは寿司に行かないといけないので、今日はここまで。


About this entry