import os import urllib import wsgiref.handlers from google.appengine.ext import webapp from google.appengine.ext.webapp import template import feedparser import random class TwitterHandler(webapp.RequestHandler): base = "http://search.twitter.com/search.atom?q=" def get(self): result = feedparser.parse(self.base + self.request.get("tag")) #self.response.out.write(result) data = [] encoding = result["encoding"] for entry in result["entries"]: dct = { "content":entry["content"][0]["value"].encode(encoding), "tag": self.request.get("tag").encode(encoding) } for k in ["author", "updated", "href", "link", "id"]: dct[k] = entry[k].encode(encoding) data.append(dct) if self.request.get("callback"): data = "%s(%s)" % (self.request.get("callback"), data) self.response.out.write(data) class JSONHandler(webapp.RequestHandler): def get(self): url = self.request.get("url") data = feedparser.parse(url) if self.request.get("callback"): data = "%s(%s)" % (self.request.get("callback"), data) self.response.out.write(data) class Index(webapp.RequestHandler): def get(self, data={}): template_path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.headers['Content-Type'] = 'text/html' self.response.out.write(template.render(template_path, data)) if __name__ == '__main__': application = webapp.WSGIApplication([ ('/', Index), ('/twitter.json', TwitterHandler), ('/atom.json', JSONHandler) ], debug=True) wsgiref.handlers.CGIHandler().run(application)