GData 3.0 に対応したクライアントライブラリのアルファバージョンがリリースされましたので、手元で動かしてみます。 作者のブログ記事 (API Client Alpha) でリリースアナウンスが出ています。 たぶん中心人物と思われる Joe Gregorio は、AtomPub (RFC5023) や URI-Templates (URI Template Library) などを設計している人です。
google-api-python-client は gdata-python-client と後方互換はなさそうです。 discovery-based でない API は気にしない!と書いてあります。 設計ドキュメント (Client Design) は英語ですが分かりやすいので良いですね。
インストール
プロジェクトのページ (google-api-python-client) に手順が記載されていますので、それに沿ってサンプルを動かします。 ソースコード管理には Mercurial を使っていますので、あらかじめインストールしておきます。
ソースコードを取得して、中身を確認します。
$ hg clone https://google-api-python-client.googlecode.com/hg/ google-api-python-client $ cd google-api-python-client $ hg log | tail changeset: 1:7b3703f5df5e user: Joe Gregorio <jcgregorio@google.com> date: Wed Aug 18 13:19:21 2010 -0400 summary: Starting to cleanup, organize files, and make it look like a real p roject. changeset: 0:6cf14b65fc0e user: jcgregorio@wpgntai-ubiq72.hot.corp.google.com date: Mon Apr 19 11:12:52 2010 -0700 summary: initial $ ls apiclient/ Makefile samples/ TODO buzz_gae_client.py oacurl.py setpath.sh upload-diffs.py buzz_gae_client_tests.py oauth_wrap.py setup.py uritemplate/ discovery_extras.py oauth2/ setup_utils.py functional_tests/ README simplejson/ httplib2/ runtests.py tests/
apiclient がメインのソースコードで samples が サンプルコード です。 httplib2, oauth2, simplejson, uritemplate は依存するライブラリです。 あとは雰囲気を読み取るなり中身を読むなり、ということで。
サンプルを動かす
Buzz のサンプルを動かします。まずはパスを通して認証用の URL を出力させます。 Python の webbrowser モジュールを使えばこのコピペ作業は省略できますので、パッチを書いても良いかもしれません。 なお、きちんとインストールしたい場合には setup.py の install ターゲットを使いますが、今回は環境を書き換えることにします。
$ cat setpath.sh export PYTHONPATH=`pwd`:$PYTHONPATH $ source setpath.sh $ cd samples/buzz $ python three_legged_dance.py !!! 認証画面の URL が表示されますので、ブラウザのアドレスバーに貼り付けます。 !!!
認証のフローは次のようになります。 Google の認可はサービスごとに独立しています (scope 制御が厳密) ので、Twitter などの単機能のサービスに比べると若干複雑です。
最後の画面で確認コードが表示されますので、これをコピーして、元のコマンドラインのプロンプトに書き戻します。 認証が終わると buzz.dat というファイルに認証情報が書き込まれます。 これは Python の pickle で書き出されます。
それでは、Buzz の API 経由でデータを読み込んでみます。 細かいことはさておき、何か JSON データが返ってくれば良いと思います。
$ python buzz.py Retrieved the first two activities Retrieved the next two activities Added a new activity Added a comment to the new activity {u'actor': {u'id': u'{{ 一応伏せる }}', u'name': u'{{ 一応伏せる }}', u'profileUrl': u'{{ 一応伏せる }}'}, u'content': u'This is a comment', u'id': u'tag:google.com,2010:buzz-comment:z13qx31zhmq0djcue221j14jbobexpftt:1289614289594000', u'kind': u'buzz#comment', u'links': {u'alternate': [{u'href': u'http://www.google.com/buzz/110902178337618378991/DRZRUz6oTiU', u'type': u'text/html'}], u'inReplyTo': [{u'href': u'http://www.google.com/buzz/110902178337618378991/DRZRUz6oTiU', u'ref': u'tag:google.com,2010:buzz:z13qx31zhmq0djcue221j14jbobexpftt'}], u'self': [{u'href': u'https://www.googleapis.com/buzz/v1/activities/110902178337618378991/@self/B:z13qx31zhmq0djcue221j14jbobexpftt/@comments/C:z13q x31zhmq0djcue221j14jbobexpftt:1289614289594000?alt=json', u'type': u'application/json'}]}, u'originalContent': u'This is a comment', u'published': u'2010-11-13T02:11:29.594Z', u'updated': u'2010-11-13T02:11:29.594Z'}
まとめ
アルファ版ですが、何か動いているらしい、ということを確認できました。 次は、ソースコードを確認しながら実際の動作を見ていきます。
0 件のコメント:
コメントを投稿