This repository was archived by the owner on Nov 2, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.py
More file actions
64 lines (46 loc) · 1.24 KB
/
api.py
File metadata and controls
64 lines (46 loc) · 1.24 KB
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
import os
import codecs
import json
from flask import Blueprint
from flask import jsonify
api = Blueprint('api', __name__)
datasets_dir = "../datasets"
def info(page, domain):
r = {
"title": page,
"domain": domain
}
return r
def metrics(page, domain):
excludes = [ "reading_maps", "graphs" ]
r = []
for root, dirs, files in os.walk("/".join([datasets_dir, domain])):
if len(dirs) > 0:
r.extend(dirs)
r = [ d for d in r if d not in excludes ]
return r
def dataset(page, metric, domain):
filename = "/".join([datasets_dir, domain, metric, page+".json"])
with codecs.open(filename,"r", encoding="utf-8-sig") as f:
r = json.load(f)
return r
@api.route("/<page>")
@api.route("/<page>/in-<domain>/")
def get_page_list(page, domain=None):
r = {
"info": info(page, domain),
"metrics": metrics(page, domain)
}
return jsonify(r)
@api.route("/<page>/<metric>")
@api.route("/<page>/in-<domain>/<metric>")
def get_page_metric(page, metric, domain=None):
r = {
"info": info(page, domain),
"data": dataset(page, metric, domain)
}
return jsonify(r)
@api.route("/<page>/graph:<graph>")
@api.route("/<page>/in-<domain>/graph:<graph>")
def get_page_graph(page, graph, domain=None):
return "graph"