-
Notifications
You must be signed in to change notification settings - Fork 0
/
app_kaobei.py
136 lines (123 loc) · 5.05 KB
/
app_kaobei.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
from flask import *
from datetime import datetime
from dbKaobei import *
import datetime
TODAY = datetime.date.today()
INTHREEDAYS = datetime.timedelta(days = 2)
app = Flask(__name__)
def get_KaobeiID():
kaobeiid = KaobeiID.query.all()
return kaobeiid
def get_KaobeiData():
kaobeidata = KaobeiData.query.all()
return kaobeidata
@app.route('/')
@app.route('/index')
def index():
kaobeiid = get_KaobeiID()
KaobeiID_dic = {}
KaobeiID_list = []
for _id in kaobeiid:
total_like = 0
total_comment = 0
total_share = 0
totalrank = 0
count = KaobeiData.query.filter_by(PageID = _id.FansPageID).count()
datainfo = KaobeiID.query.filter_by(FansPageID=_id.FansPageID).first()
for info in datainfo.pages:
total_like += info.PostLike*1
total_comment += info.PostComment*1.5
total_share += info.PostShare*2
totalrank = (total_like + total_comment + total_share)/count
KaobeiID_dic['Rank'] = totalrank
KaobeiID_dic['FansPageID'] = _id.FansPageID
KaobeiID_dic['KaobeiName'] = _id.KaobeiName
KaobeiID_dic['KaobeiPicture'] = _id.KaobeiPicture
KaobeiID_list.append(KaobeiID_dic)
KaobeiID_dic = {}
rank_list = sorted(KaobeiID_list, key = lambda e:e.__getitem__('Rank'), reverse=True)
kaobeidata = get_KaobeiData()
KaobeiData_dic = {}
KaobeiData_list = []
for _data in kaobeidata:
total_like = 0
total_comment = 0
total_share = 0
total = 0
posttime = _data.PostTime.date()
if (posttime + INTHREEDAYS) >= TODAY:
total_like = _data.PostLike*1
total_comment = _data.PostComment*1.5
total_share = _data.PostShare*2
total = (total_like + total_comment + total_share)/4.5
KaobeiData_dic['Rank'] = total
KaobeiData_dic['PageID'] = _data.PageID
KaobeiData_dic['PostID'] = _data.PostID
KaobeiData_dic['PostTime'] = posttime
KaobeiData_list.append(KaobeiData_dic)
KaobeiData_dic = {}
top_five = sorted(KaobeiData_list, key = lambda e:e.__getitem__('Rank'), reverse=True)
top_five = top_five[:5]
return render_template('index.html', **locals())
@app.route('/<kid>/<int:page_num>')
def kaobeifans(kid, page_num):
kaobedata_pages = KaobeiData.query.filter_by(PageID=kid).order_by(KaobeiData.PostTime.desc()).paginate(per_page=5, page=page_num, error_out=True)
pageid_list = []
kaobedata_all = get_KaobeiData()
for info in kaobedata_all:
pageid = info.PageID
pageid_list.append(pageid)
if kid not in pageid_list:
kid = None
return render_template("kaobeifans.html", kid=kid, kaobedata_pages=kaobedata_pages)
@app.route('/graph')
def echart():
kaobeiid = get_KaobeiID()
post_count = {}
post_list = []
for kid in kaobeiid:
post_count['count'] = KaobeiData.query.filter_by(PageID = kid.FansPageID).count()
post_count['name'] = kid.KaobeiName
post_list.append(post_count)
post_count = {}
post_list = sorted(post_list, key = lambda e:e.__getitem__('count'), reverse=True)
rank_weight_dic = {}
rank_weight_list = []
rank_unweight_dic = {}
rank_unweight_list = []
for item in kaobeiid:
rank_like = 0
rank_comment = 0
rank_share = 0
un_rank_like = 0
un_rank_comment = 0
un_rank_share = 0
rank_weight = 0
rank_unweight = 0
count = KaobeiData.query.filter_by(PageID = item.FansPageID).count()
datainfo = KaobeiID.query.filter_by(FansPageID=item.FansPageID).first()
for info in datainfo.pages:
rank_like += info.PostLike*1
rank_comment += info.PostComment*1.5
rank_share += info.PostShare*2
un_rank_like += info.PostLike
un_rank_comment += info.PostComment
un_rank_share += info.PostShare
rank_weight = (rank_like + rank_comment + rank_share)/count
rank_unweight = (un_rank_like + un_rank_comment + un_rank_share)/count
rank_weight_dic['Rank'] = rank_weight
rank_unweight_dic['Rank'] = rank_unweight
rank_weight_dic['KaobeiName'] = item.KaobeiName
rank_unweight_dic['KaobeiName'] = item.KaobeiName
rank_weight_list.append(rank_weight_dic)
rank_unweight_list.append(rank_unweight_dic)
rank_weight_dic = {}
rank_unweight_dic = {}
rank_weight_list = sorted(rank_weight_list, key = lambda e:e.__getitem__('Rank'), reverse=True)
rank_unweight_list = sorted(rank_unweight_list, key = lambda e:e.__getitem__('Rank'), reverse=True)
return render_template("echart.html", **locals())
@app.errorhandler(404)
def page_not_found(e):
return render_template('not_found.html'), 404
if __name__ == '__main__':
app.run(debug=True)