curlで叩ける年齢計算サイト
本日のやっつけ仕事です。
きっかけ
curlで簡単に取得できる生年月日入力したら年齢がかえってくるサービスないの。
— 勇士Q (@ucq) January 22, 2014
作った
- 使用例
-
http://age.x86-64.jp/1991/12/29 …
Age: 22
というレスポンスを得る。
しくみ
WebフレームワークはFlask, アプリケーションサーバはこのTrac同様にuWSGIです。フロントエンドはnginx
です。
ソースコード
from flask import Flask from datetime import date app = Flask(__name__) app.config.update( DEBUG=False, ) @app.route('/') def usage(): return "Usage: http://age.x86-64.jp/yyyy/mm/dd <br> curl recommended." @app.route('/<int:yyyy>/<int:mm>/<int:dd>') def calculate(yyyy, mm, dd): """This part is from Stack Overflow: http://stackoverflow.com/a/2217537/1402144""" birthday = date(yyyy, mm, dd) today = date.today() years = today.year - birthday.year if all((x >= y) for x,y in zip(today.timetuple(), birthday.timetuple())): age = years else: age = years - 1 """End StackOverflow""" return "Age: %d" % age if __name__ == '__main__': app.run() # Change this to "pass" in order to run this via uwsgi.
はまってたところ
最初、calculate(yyyy, mm, dd)
の返り値にage
という変数を直接使おうとしていた (つまりreturn age
) が、
TypeError: 'int' object is not callable.
というエラーを得た。上記のようにsprintf
っぽく、return "%d" % age"
として解決。
Comments
No comments.