例によって、タイトルは書いてみたかっただけで、特に意味はありません。
FireFoxの GMarks と Live HTTP Headers というエクステンションを使って、いろいろためしてみました。
個人的に調べて、やってみたら、なんとなくできたっていうものなので、間違ってるところがあるかもしれませんので、ご注意下さい。
基本的に、前のGoogleTasksと同じような感じで、ログインして、色々とPOSTするって感じです。
参考にしたサイト
Google Bookmarks API Guide
http://lnkr.mobi/bm/google_bookmarks_api/
以下では、クッキーの内容などが一部変更してあります。基本的に文字数(桁数)は合わせて有ります。
1.ログイン
(追記)
ログインの仕様変更があったようで、ログイン出来なくなっているので、消しました。
2.リストの取得
とりあえずリストの取得。
URLでオプションを設定して取得します。xmlでの取得と、RSS形式での取得が可能です。
https://www.google.com/bookmarks/lookup?output=xml&sort=date&start=0&num=1000
output = (xml or rss)
sort = (date or title)
start = 取得を開始するインデックスの番号
num = 取得する個数(デフォルトでは1000のようです)
出力例。
上のURLで取得してみました。ブックマークが2つ登録されていて、それぞれに TestLabel3 と TestLabel2 というラベルが設定されています。またYahooの方には、Memo3というメモが設定されています。
XMLデータで取得したときには、メモは表示されません。
XMLでの出力
<xml_api_reply version="1">
<bookmarks>
<bookmark>
<title>Yahoo!</title>
<url>http://www.yahoo.com/</url>
<timestamp>1282888873616828</timestamp>
<id>0000000069406972623</id>
<labels>
<label>TestLabel3</label>
</labels>
</bookmark>
<bookmark>
<title>Google</title>
<url>http://www.google.com/</url>
<timestamp>1282888865530908</timestamp>
<id>0000000016497197774</id>
<labels>
<label>TestLabel2</label>
</labels>
</bookmark>
</bookmarks>
</xml_api_reply>
rssでの出力
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:smh="http://www.google.com/history/"
xmlns:recommend="http://www.google.com/history/items">
<channel>
<title>Google ブックマーク</title>
<link>http://www.google.com/bookmarks/</link>
<description>Google - ブックマーク RSS フィード</description>
<smh:signature>kk4KKKkDwCQplnaJcEZRQ</smh:signature>
<smh:homepage_label>ホームページ</smh:homepage_label>
<item>
<title>Yahoo!</title>
<link>http://www.yahoo.com/</link>
<pubDate>Fri, 27 Aug 2010 06:01:13 GMT</pubDate>
<category>bookmark result</category>
<description></description>
<guid isPermaLink="false">qVR3TPzSJYGAgLAPAA</guid>
<smh:bkmk>yes</smh:bkmk>
<smh:bkmk_id>0000000069406972623</smh:bkmk_id>
<smh:bkmk_title>Yahoo!</smh:bkmk_title>
<smh:bkmk_label>TestLabel3</smh:bkmk_label>
<smh:bkmk_annotation>Memo3</smh:bkmk_annotation>
</item>
<item>
<title>Google</title>
<link>http://www.google.com/</link>
<pubDate>Fri, 27 Aug 2010 06:01:05 GMT</pubDate>
<category>bookmark result</category>
<description></description>
<guid isPermaLink="false">oVR3TNyzIICAgLAPAA</guid>
<smh:bkmk>yes</smh:bkmk>
<smh:bkmk_id>0000000016497197774</smh:bkmk_id>
<smh:bkmk_title>Google</smh:bkmk_title>
<smh:bkmk_label>TestLabel2</smh:bkmk_label>
</item>
</channel>
</rss>
見ればすぐにわかりますが、RSSで取得したほうが情報量が多いです。
RSSの方の一番上の方に出ている
kk4KKKkDwCQplnaJcEZRQ
このシグネチャの値は、後ほど色々とPOSTするときに使うので、一度はRSSのデータを取得する必要があると思います(XMLの方には出力されないようです)。この値はリストを特定するためのもので、リストを削除しない限り変更されないと思われます。
リストのそれぞれの要素
ほとんど要素の意味は、タグを見れば意味がわかると思います。見てもわからないところは、不明なままです。
使うのは、見てわかる部分だけなの問題ないと思います。
使いそうなのは、以下の部分ぐらいです。
URL http://www.yahoo.com/
ブックマークを特定するID
タイトル
ラベル
メモ
3.ブックマークを操作するときの共通の設定
下のURLに色々とPOSTすることで、ブックマークを操作します。
http://www.google.com/bookmarks/mark
ログインで取得したクッキーを忘れずにセットする。
他にセットしているリクエストヘッダは以下のものです。
HOST: www.google.com
User-Agent: ListBookmarks
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: deflate
Connection: keep-alive
Keep-Alive: 115
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Cookie: ******************
4.新規作成
s=aabbCCdDEehX7y_PAKj6kg&bkmk=http%3A%2F%2Fwww.google.com%2Fm%3Fclient%3Dms-nullnull&title=Google&labels=&annotation=
各要素に分解すると。
最初に取得したシグネチャ s=aabbCCdDEehX7y_PAKj6kg
URL &bkmk=http%3A%2F%2Fwww.google.com
タイトル &title=Google
ラベル &labels=
メモ &annotation=
イコール以下をUTF-8でURLエンコードする必要があります。イコールまで含めて全てエンコードしないように注意する。
ラベルやメモが無いときは、オプション名だけで何もいれないままにします。
成功したときのレスポンスコードは200で、IDが返ってきます。
5.削除
dlq=00000000000453115329&s=aabbCCdDEehX7y_PAKj6kg
各要素に分解すると。
ブックマークのID dlq=00000000000453115329
シグネチャ &s=aabbCCdDEehX7y_PAKj6kg
成功したときのレスポンスコードは200です。
このときIDのような数列が返ってくるのですが、よく分かりません。
6.変更
基本的にまったく同じURLはタイトルが異なっていても登録できないようです。同じURLを登録すると変更になります。
URL以外の変更したい部分を変更後、新規作成と同じようにPOSTすると変更になります。
だらだらと書いたので、分かりにくい文章になったかもしれません。分かりにくいところ、おかしなところがあればコメント欄からお願いします。
以上です。