Google Wave @ pySpa

pySpa こと、python 温泉 2 日目です。昨日から今日にかけて、@atusi さんと、Google Wave のロボットを作ってみました。pyzon (旧 pyAWWS) を使って、asin:[ASINコード] をタイトルに変換するというボットです。アカウントをお持ちの方は、amzbot@appspot.com を追加すると試すことができます。今のところ、html を blip に表示することはできないので、リンクもテキストになっています。
参考にさせていただいたサイト、およびコード
以下が実際のコードです。

# coding:utf-8

from waveapi import events
from waveapi import model
from waveapi import robot
from pyzon import AWSECommerceService

ROBOT_NAME = 'amzbot'
PROFILE_URL = 'http://%s.appspot.com/' % ROBOT_NAME
IMAGE_URL = PROFILE_URL + 'icon.gif'

awsecapi = AWSECommerceService(
  ACCESS_KEY_ID,
  SECRET_ACCESS_KEY,
  associate_tag = ASSOCIATE_TAG,
  locale = LOCALE
)

DEBUG = True

def get_title_from_asin(contents):
  pass
  """
  contents の中身を変換するための関数
  """

def OnBlipSubmitted(properties, context):
  # blip の取得
  blip = context.GetBlipById(properties['blipId'])
  logging.info(u'blip (%s -> %s' % (blip.GetWaveId(), blip.GetId()))

  # blip のテキストを取得
  contents = blip.GetDocument().GetText()

  # テキストを変換
  result = get_title_from_asin(contents)

  # blip に変換後のテキストをセット
  if result:
    blip.GetDocument().SetText(result)

if __name__ == '__main__':
  # ボットの作成
  bot = robot.Robot(
    ROBOT_NAME.capitalize(),
    '1',
    image_url=IMAGE_URL,
    profile_url=PROFILE_URL
  )

  # サブミット時のハンドリング
  bot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
  bot.Run(debug=DEBUG)

appengine で bot 書いて wave に突っ込むというのは、すっごい楽ですね。メールやチャットでのコミュニケーションではできない、情報に付加価値をつけていくことが wave では可能となると思います。

コメント

このブログの人気の投稿

Python から Win32 API 経由で印刷する

Disqus のスケール - Django 編

#PySpa アドベント (23 日目)