Google App Engine Test (source)

ちなみに中身はこんな感じ。

フィードの解析に Universal Feed Parser を利用している。 feedparser.py を同じディレクトリに放り込んでおけばOK。

# -*- coding: utf-8 -*-
from google.appengine.api import urlfetch
from google.appengine.ext import webapp
import wsgiref.handlers
import cgi, feedparser, re

# Amazon ベストセラーフィードの URL
feed_url = 'http://www.amazon.co.jp/rss/bestsellers/books/466280?num=100'
# 画像 URL 検索のための正規表現
re_img_url = re.compile('img src="(http://ec.\.images[^"]*\.jpg)"')

# エントリーをリンク付画像に変換する関数
def make_image(entry):
  # 画像へのリンクを検索
  match = re_img_url.search(entry.description)
  # マッチしなければ空白にする
  if not match: return ''
  # 画像サイズの調整
  url = match.group(1).replace('_SL500_SS150_', '_SY120_')
  # 画像の生成
  return '<a href="%s" target="_blank">' % entry.link + \
    '<img border="0" src="%s" /></a>' % url

class MainPage(webapp.RequestHandler):
  def get(self):
    # フィードの取得
    result = urlfetch.fetch(feed_url)
    # 失敗した場合はサーバーエラーにしてしまう
    if result.status_code != 200:
      self.error(500)
      return
    # フィードの解析
    entries = feedparser.parse(result.content).entries
    # 本文の生成
    body = ''.join(map(make_image, entries))
    # HTML の生成
    html = u'''
      <html><head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      </head><body bgcolor="#406040">
        <h2>電脳書店平積みコーナー</h2>
        %s<p>Amazon のコミックセクションのベストセラーを表示しています。</p>
      </body></html>''' % body
    # レスポンスの出力
    self.response.out.write(html.encode('utf-8'))

if __name__ == "__main__":
  application = webapp.WSGIApplication([('/', MainPage)], debug = True)
  wsgiref.handlers.CGIHandler().run(application)