こちらの記事で、今弊社で話題沸騰のカードゲーム「コヨーテ」の使用済みカードをメモするフロントエンドを実装しました。
その後、各カードの出現率がわかるともっといいなと思い、フロントエンドだけでも完結できそうですが、Python & FlaskでAPIを実装してみました。
flaskのインストール
Flaskをインストールします。
グローバルを汚したくないのでカレントディレクトリ以下にpipインストールしました。
$ pip install flask -t site-packages
APIの実装
早速APIの実装です。
少しダサいですが、GETパラメータで使ったカードのJSON文字列を受け取って、総カード数から引き算をして出現率を算出するような実装にしました。
シンプルですが以下のような感じです。
api.py
# -*- coding: utf-8 -*-
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), 'site-packages'))
from flask import Flask, request, make_response
import json
api = Flask(__name__)
@api.route('/coyote', methods=['GET'])
def get_cards():
cards = {
"20": 1,
"15": 2,
"10": 3,
"5": 4,
"4": 4,
"3": 4,
"2": 4,
"1": 4,
"0": 3,
"0 CLEAR": 1,
"-5": 2,
"-10": 1,
"x2": 1,
"MAX->0": 1,
"?": 1,
}
used_cards = json.loads(request.args.get('cards', ''))
for key in used_cards:
cards[key] = cards[key] - used_cards[key]
total_cards = 0
for key in cards:
total_cards+=cards[key]
rate = {}
for key in cards:
rate[key] = cards[key] / total_cards * 100
return make_response(rate)
if __name__ == '__main__':
api.run(host='0.0.0.0', port=8080)
試してみる
Postmanで試してみました。
$ python3 api.py
* Serving Flask app 'api' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://192.168.31.33:8080/ (Press CTRL+C to quit)
で起動して、
こんな感じです!
パーセンテージが返ってきてますね。
Github
Githubはこちらです。
IssueやPRお待ちしています。