Info

前回はPHPとFlickrAPIを使って自分の写真を表示するようなことをやってみましたが、今回は最近人気上昇中のGoogleAppEngine(GAE)を使ってFlickrタグ検索をやってみたいと思います。GAEの説明はここでは省略します。が参考になるページを紹介します。
Google Code – Google App Engine
さっそくHello Worldから作ってみた
Google App Engine を使ってみよう

Flickr APIページを見るとPythonのライブラリもありましたが、決して使う気になりませんでした。一つ一つ調べながら遊びたいからです。以下がタグ検索して画面に表示するコードになります。キーワードになるものとしては、google.appengine.api.urlfetch と xml.dom.minidom です。

main.py

#!/usr/bin/env python
#
import cgi,os
import wsgiref.handlers

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.api import urlfetch
from xml.dom import minidom

class MainPage(webapp.RequestHandler):
  def get(self):
    api_url    = "http://api.flickr.com/services/rest/?"
    api_key    = "5f5ffa7c9fcf9f65bc0aae95ad71****"
    api_method = "flickr.photos.search"
    tag = self.request.get("tag")
    if tag == "":
      tag = "Flower"
    url = api_url+"api_key="+api_key+"&method="+api_method+"&tags="+tag
    result = urlfetch.fetch(url)
    dom = minidom.parseString(result.content)
    photos = dom.getElementsByTagName("photo")
    galleries=[]
    for photo in photos:
      farm   = photo.getAttribute("farm")
      server = photo.getAttribute("server")
      id     = photo.getAttribute("id")
      secret = photo.getAttribute("secret")
      img = "http://farm"+farm+".static.flickr.com/"+server+"/"+\
             id+"_"+secret+"_s.jpg"
      galleries.append(img)
    values = { 'galleries': galleries, 'tag':tag, }
    path = os.path.join(os.path.dirname(__file__), "main.html")
    self.response.out.write(template.render(path, values))
application = webapp.WSGIApplication([
  ('/', MainPage)
], debug=True)

def main():
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
  main()


main.html

<form action="" method="get">
Tag:<input type="text" name="tag" value="{{ tag }}">
<input type="submit" value="Search">
</form>
</div>
<div id="galllery">
	{% for galllery in galleries %}
	<img src="{{ galllery }}" class="gallery-img">
	{% endfor %}
</div>


ちょっと工夫をするとこのようなページが作れます。

http://kings.appspot.com/gallery/

Comments

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS