世間ではFacebookなどの「いいね」ボタンがすごく注目されていますが、敢えて、「いい」「だめ」ぼたんを自分で実装してみました。
何ができるの?
個別記事に以下のソースを埋めてると「いい」「だめ」ボタンが表示されます。いいの数のランキングも見れます。
※site=の後ろのxxxxを自分を識別するコードに書き換えてください。英数で適当に・・
1 2 |
このブログランキングは以下のアドレスで確認できます。
http://like-or-dislike.appspot.com/?site=001
何でつくったの?
なんでつくったんだろうね。理由あげるとすると、こんなところかな。
改良予定
OAuthでログインして、自分専用のコードを発行できるようにする予定です。
ソースコード
おやくそくのソースコードです。まだバージョン管理してません。明日、Githubに登録するよていです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #!/usr/bin/env python # -*- coding: utf-8 -* from google.appengine.ext import webapp, db from google.appengine.ext.webapp import util import urllib class MainHandler(webapp.RequestHandler): def get(self): if self.request.get('cmd'): page = Page.all().filter("referer =", self.request.get("referer")).get() if self.request.get('cmd') == "like": page.like = page.like + 1 else: page.dislike = page.dislike + 1 page.put() self.redirect("?done=1&referer=" + urllib.quote(self.request.get("referer"))) elif self.request.referer: if self.request.get("referer"): referer = self.request.get("referer") else: referer = self.request.referer page = Page.all().filter("referer =", referer).get() if not page: page = Page(referer = referer, title = self.request.get("title"), site = self.request.get("site")) page.put() if self.request.get("done"): disabled = "disabled" else: disabled = "" self.response.out.write(u""" <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head> <body style="margin:0"> <input type="button" onclick="this.disabled = true;location.href='/?cmd=like&referer=%s'" value="いい" %s> %d : <input type="button" onclick="this.disabled = true;location.href='/?cmd=dislike&referer=%s'" value="だめ" %s> %d </body></html> """ % (urllib.quote(referer), disabled, page.like, urllib.quote(referer), disabled, page.dislike)) class ListHandler(webapp.RequestHandler): def get(self): for page in Page.all().filter("site =", self.request.get("site")).order("-like").filter("like > ", 0).fetch(20): self.response.out.write("""<body style="font-size:8px"><div>%d : %d <a href="%s?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0">%s</a></div></body>""" % (page.like, page.dislike, page.referer, page.title)) class Page(db.Model): site = db.StringProperty() title = db.StringProperty() referer = db.StringProperty() like = db.IntegerProperty(default = 0) dislike = db.IntegerProperty(default = 0) def main(): application = webapp.WSGIApplication([('/', MainHandler), ('/list', ListHandler)], debug=True) util.run_wsgi_app(application) if __name__ == '__main__': main() |