2010年9月17日金曜日

あるいは、GoogleBookmarksにアクセスする方法。








例によって、タイトルは書いてみたかっただけで、特に意味はありません。



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 0000000069406972623


タイトル Yahoo!


ラベル TestLabel3


メモ             Memo3







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すると変更になります。











だらだらと書いたので、分かりにくい文章になったかもしれません。分かりにくいところ、おかしなところがあればコメント欄からお願いします。











以上です。