日記
メモ情報取得APIEdit

主にメモデータバックアップ目的のためのメモ情報取得APIを用意しました。すみません。API仕様を変更してます。戻り値を直接ルートノードから返すのではなく、必ず"result"ノード下に収納することにしました。

リスト取得

  • URL - http://1470.net/api/memo/list
  • パラメータ(QUERY_STRING)
    • userName - 1470.netユーザーID(省略可)。指定すると、そのユーザーのメモ情報のみが対象となる。
    • updt - 更新日時(省略可)。指定するとその更新日時以降に更新されたメモのみが対象となる。
  • リクエストメソッド - GET
  • 戻り値
    • データ形式 - JSON
    • 例 {"info": {"totalCount": 1234}, "result": [{"id" : 998, "updt" : "2006-06-30 02:16:20"}, {"id" : 999, "updt" : "2006-06-30 02:16:21"}, ...]}
    • info.totalCount - 該当した総項目数(2000を超えている場合、各項目として返るのは最初の2000件)
    • result.* - 各項目
      • id - メモID。メモにつけられたユニークなID。
      • updt - メモの更新日時(JST)
    • ソートオーダー
      • updt asc。
  • 制約
    • 結果が2000件を超える場合は、最初の2000件のみを返す。その場合updtパラメータ指定などを使って、続きの情報を取得し直す必要がある。

メモ情報取得

  • URL - http://1470.net/api/memo/[メモID]
  • パラメータ - なし
  • リクエストメソッド - GET
  • 戻り値
    • データ形式 - JSON
    • 例 {"result": {"id" : 34553, "url" : "http://1470.net/user/ishinao/2006/07/01#m_34553", "title" : "集英社 ハチミツとクローバー 9 (9) 羽海野 チカ", "comment" : null, "eval" : null, "tags" : ["羽海野 チカ", "ハチクロ", "マンガ"], "groups" : {}, "uri" : {}, "mono" : [{"asin" : 4088653521, "uri" : "http://www.amazon.co.jp/exec/obidos/ASIN/4088653521/ref=nosim/ishinao-22", "title" : "集英社 ハチミツとクローバー 9 (9) 羽海野 チカ"}], "map" : {}, "event" : [{"name" : "集英社 ハチミツとクローバー 9 (9) 羽海野 チカ 発売日", "stdt" : "2006-07-14 00:00:00", "eddt" : null}], "todo" : null, "rgdt" : "2006-07-01 14:04:38", "updt" : "2006-07-16 20:55:51"}}
    • 項目
      • id - メモID
      • userName - ユーザーID
      • url - メモURL
      • title - メモタイトル
      • comment - コメント
      • eval - 評価
      • tags - タグ(配列)
      • groups - グループ(配列)
      • uri - メモに添付されたURI情報(配列)
        • url - URL文字列。
        • title - URIで示されたドキュメントのタイトル。
      • mono - メモに添付されたMONO情報(配列)
        • asin - ASINコード。
        • url - Amazon個別商品ページURL。
        • title - 商品情報(タイトル+著作者情報)。
      • map - メモに添付された位置情報(配列)
        • name - 位置情報名。
        • latitude - 緯度。
        • longitude - 経度。
        • zoom - Google Maps APIにおけるズーム情報。
      • event - メモに添付されたイベント情報(配列)
        • name - イベント名。
        • stdt - イベント開始日
        • use_sttime - イベント開始日で時間要素も有効かどうか
        • eddt - イベント終了日
        • use_edtime - イベント終了日で時間要素も有効かどうか
      • todo - メモに添付されたToDo情報
        • name - 次に行うToDo名。
        • tododt - その予定日。
      • rgdt - メモ登録日
      • updt - メモ更新日

バックアップクライアントサンプル実装

require_once 'Zend/Json.php';
$userName = 'ishinao';
$dataDir = '/tmp/backup';
$listUrl = 'http://1470.net/api/memo/list';
$itemUrl = 'http://1470.net/api/memo/';
$touchFile = $dataDir . '/touch';
$updt = filemtime($touchFile);
$rawListData = file_get_contents($listUrl . '?userName=' . urlencode($userName) . '&updt=' . urlencode(date('Y-m-d H:i:s', $updt)));
$decodedListData = Zend_Json::decode($rawListData);
$list = $decodedListData['result'];
foreach ($list as $row) {
$memoId = intval($row['id']);
if (!$memoId) {continue;}
$dataFile = $dataDir . '/' . $memoId . '.txt';
if (file_exists($dataFile) && (filemtime($dataFile) == strtotime($row['updt']))) {continue;}
$rawItemData = file_get_contents($itemUrl . $memoId);
$decodedItemData = Zend_Json::decode($rawItemData);
$item = $decodedItemData['result'];
if ($item['id'] != $memoId) {
throw new Exception('memo cannot read: ' . $memoId);
}
file_put_contents($dataFile, $rawItemData);
touch($dataFile, strtotime($row['updt']));
touch($touchFile, strtotime($row['updt']));
}

Published At2006-07-17 00:00Updated At2006-07-17 00:00