Index > 写真管理サービス Picasa Web Albums と GAE(Google App Engine)のマッシュアップ
Fri, December 19, 2008

写真管理サービス Picasa Web Albums と GAE(Google App Engine)のマッシュアップ

Google App Engine上から、googleが提供している各種サービスにアクセスすることができます。 今回は、GAEから gdata API を使って、Picasa Web Albumsにアクセスして、 画像データを取得するサンプルを作成します。

実装手順

これは、Picasa Web Service上で公開されている画像を GAEから取得して一覧表示するサンプルです。 非公開に設定されている画像は取得できません。

  1. あなたのアカウントでPicasa Web Albums上に公開画像を用意
  2. Google App Engine SDKのバージョンの確認
  3. python版 gdata-API のダウンロード
  4. 必要なファイルの配置
  5. 作動テスト

非公開画像の取得

技術的には、 自分のPicasa Accountを使って、 AuthSubと呼ばれる認証の仕組み経由で、非公開設定の画像を取得することもできます。

AuthSubについては、こちらのブログ http://jugyo.org/blog/2924が非常に参考になります。

ステップ1 あなたのアカウントでPicasa Web Albums上に公開画像を用意

既に、Picasa Web Albums を使っていて、公開画像をアップロードしている場合は 次のステップへ。

Picasa Web Albums にアカウントを作成し、画像をアップロードします。 その際、公開画像として設定しておきます。

※ 以下では、foo@hoge.com のアカウントを使用しているとして説明します。

ステップ2 Google App Engine SDKのバージョンの確認

使っている Google App Engine SDK のバージョンを確認します。
1.1.7 より古い場合は、以下のページからダウンロードしてセットアップします。

ステップ3 python版 gdata-API のダウンロード

以下のページにアクセスして、gdata-py-1.2.3.tar.gz をダウンロード

ステップ4 必要なファイルの配置

今回作成する google app engine 用 作業ディレクトリ ./photo を作成します。

作業用ディレクトリ ./photo/ は以下のようになります。

ポイントの説明

GAE上からではなく、gdata-py から直接Picasaウェブアルバムにアクセスする場合は、

client = gdata.photos.service.PhotosService()

の記述だけでPhotosServiceクラスのインスタンスを取得でき、使用可能になるのですが、 GAE上ではさらにもう一行記述の追加が必要です。

client = gdata.photos.service.PhotosService()
gdata.alt.appengine.run_on_appengine(client)

以上の記述手順でPhotoServiceのインスタンスを取得したら、 あとはユーザ名を指定して、公開されているフォトアルバム→画像にアクセスします。

以下のメソッドで、公開写真の一覧を photolist 配列に入れています。(photo.pyからの抜粋)

def getPhotolist(client,username):
        photolist=[]
        photos=None 
        albums = client.GetUserFeed(user=username)
        for album in albums.entry:
                photos = client.GetFeed(
                    '/data/feed/api/user/%s/albumid/%s?kind=photo' 
                    % ( username, album.gphoto_id.text)
                )
                for photo in photos.entry:
                        photolist.append( photo.media.thumbnail[2].url )

        return photolist

ステップ5 作動テスト

GAEのテストサーバを起動し、

$ python dev_appserver.py photo/

http://localhost:8080/ にアクセスします。
foo@hoge.com(あなたのアカウントに読み替えてください)でログインします。

追記

GAEから googleの各種サービスに gdata API 経由でアクセスするのは、 わかってしまえば簡単なのですが、 GAE の SDK が古いとうまく作動しなかったり、 ネット上に情報が少なかったり、 今回の例で言えば、picasa web service上に画像データの用意がない場合は、 事前に用意する作業が必要だったり、 結構、苦労しました。

 Twitter
follow me on Twitter
 Categories