-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
113 lines (88 loc) · 2.8 KB
/
app.py
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#info={'pid':35320,'apikey':'WNHTx5ihhIafnXoE62PW6NLn7zL2'}
#req=requests.get('http://cricapi.com/api/playerStats',params=(info));
#request=json.loads(req.text);
#pprint(request);
from __future__ import print_function
from future.standard_library import install_aliases
install_aliases()
from urllib.parse import urlparse, urlencode
from urllib.request import urlopen, Request
from urllib.error import HTTPError
import json
import os
import requests
import csv
from flask import Flask
from flask import request
from flask import make_response
from pprint import pprint
# Flask app should start in global layout
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
req = request.get_json(silent=True, force=True)
print("Request:")
print(json.dumps(req, indent=4))
res = processRequest(req)
res = json.dumps(res, indent=4)
# print(res)
r = make_response(res)
r.headers['Content-Type'] = 'application/json'
return r
def processRequest(req):
if req.get("result").get("action") != "PlayerStats":
return {}
pid= generate_pid(req);
if pid is None:
return {}
info={'pid':pid,'apikey':'WNHTx5ihhIafnXoE62PW6NLn7zL2'}
result=requests.get('http://cricapi.com/api/playerStats',params=(info));
data = json.loads(result.text)
res = makeWebhookResult(data,req)
return res
def generate_pid(req):
result = req.get("result")
parameters = result.get("parameters")
player_name = parameters.get("PlayerData")
if player_name is None:
return None
with open('PlayerData.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if(row[0]==player_name):
pid=row[1]
if pid is None:
return None
return pid
def makeWebhookResult(data,res):
form=res["result"]["parameters"]["format"]
query=res["result"]["parameters"]["Stats"]
if form is None:
return {}
if query is None:
return {}
stats = data.get("data")
if stats is None:
return {}
if query=='Runs'or query=='SR' or query=='ave' or query=='Ct':
sol=stats["batting"][form][query]
elif query=='Wkts' or query=='Econ':
sol=stats["bowling"][form][query]
else :
sol=data['majorTeams']
if sol is None:
return {}
speech = data['fullName']+" has the following stats in "+form+": "+query+": "+sol
print("Response:")
print(speech)
return {
"speech": speech,
"displayText": speech,
# "data": data,
# "contextOut": [],
"source": "cric-api-webhook-sample"
}
if __name__ == '__main__':
port = int(os.getenv('PORT', 5000))
print("Starting app on port %d" % port)
app.run(debug=False,port=port,host='0.0.0.0')