Skip to content

Commit bd67dc3

Browse files
committed
add code
1 parent 35ebcbb commit bd67dc3

File tree

10 files changed

+1511
-4
lines changed

10 files changed

+1511
-4
lines changed

doudou/2020-04-04-greedy-snake/greedy_snake.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def run():
154154
# 按 origin_direction 方向运动
155155
snake_body.insert(0, list(snake_head))
156156
# 吃到食物后重新生成
157-
if snake_head[0] == food_position[0] and snake_head[1] == food_position[1]:
157+
if snake_head == food_position:
158158
food_position = create_food()
159159
current_score += score
160160
else:
@@ -174,7 +174,7 @@ def run():
174174
# 更新分数
175175
display_message(f"{current_score}/{max_score}", text_color, 30, (pixel * 2, pixel * 2))
176176
if is_dead:
177-
display_message(f"Game Over", text_color, 50, (pixel * 16, pixel * 15))
177+
display_message("Game Over", text_color, 50, (pixel * 16, pixel * 15))
178178
# 控制游戏速度
179179
time_clock.tick(speed)
180180

Binary file not shown.
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
from flask import Flask, render_template
2+
import datetime
3+
import json
4+
import redis
5+
import pandas as pd
6+
7+
app = Flask(__name__)
8+
9+
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
10+
r = redis.Redis(connection_pool=pool)
11+
12+
13+
@app.route('/')
14+
def index():
15+
return render_template('a.html')
16+
17+
18+
@app.route('/global')
19+
def global_index():
20+
context = {
21+
'date': get_date(),
22+
'statistics_data': json.loads(r.get('foreign_data')),
23+
'country_data': get_rank_data(),
24+
'article_data': json.loads(r.get('article_data'))
25+
}
26+
return render_template('global.html', **context)
27+
28+
29+
@app.route('/china')
30+
def china_index():
31+
china_data = get_china_data()
32+
context = {
33+
'date': get_date(),
34+
'statistics_data': china_data[0],
35+
'country_data': china_data[1],
36+
'article_data': json.loads(r.get('article_data'))
37+
}
38+
return render_template('china.html', **context)
39+
40+
41+
def get_date():
42+
today = datetime.date.today()
43+
yesterday = today + datetime.timedelta(days=-1)
44+
return {'today': today.strftime('%Y.%m.%d'), 'yesterday': yesterday.strftime('%m月%d日')}
45+
46+
47+
# 国外详细数据
48+
def get_rank_data():
49+
df = pd.DataFrame(json.loads(r.get('rank_data')), columns=['name', 'confirmAdd', 'confirm', 'heal', 'dead'])
50+
return df.sort_values('confirm', ascending=False).values.tolist()
51+
52+
53+
# 国内详细数据
54+
def get_china_data():
55+
china_data = json.loads(r.get('china_data'))
56+
statistics_data = {'nowConfirmAdd': china_data['chinaAdd']['confirm'],
57+
'healAdd': china_data['chinaAdd']['heal'],
58+
'deadAdd': china_data['chinaAdd']['dead'],
59+
'nowConfirm': china_data['chinaTotal']['nowConfirm'],
60+
'confirm': china_data['chinaTotal']['confirm'],
61+
'heal': china_data['chinaTotal']['heal'],
62+
'dead': china_data['chinaTotal']['dead'],
63+
}
64+
65+
df = pd.DataFrame(china_data['province'],
66+
columns=['name', 'import_abroad', 'now_confirm', 'confirm', 'heal', 'dead'])
67+
province_list = df.sort_values('now_confirm', ascending=False).values.tolist()
68+
69+
return statistics_data, province_list
70+
71+
72+
@app.route('/global_top10')
73+
def get_global_top10():
74+
df = pd.DataFrame(json.loads(r.get('rank_data')), columns=['name', 'confirmAdd', 'confirm', 'heal', 'dead'])
75+
top10 = df.sort_values('confirmAdd', ascending=True).tail(10)
76+
result = {'country': top10['name'].values.tolist(), 'data': top10['confirmAdd'].values.tolist()}
77+
return json.dumps(result)
78+
79+
80+
@app.route('/global_map')
81+
def get_global_map():
82+
df = pd.DataFrame(json.loads(r.get('rank_data')), columns=['name', 'confirmAdd', 'confirm', 'heal', 'dead'])
83+
records = df.to_dict(orient="records")
84+
china_data = json.loads(r.get('china_data'))
85+
result = {
86+
'confirmAdd': [{'name': '中国', 'value': china_data['chinaAdd']['confirm']}],
87+
'confirm': [{'name': '中国', 'value': china_data['chinaTotal']['confirm']}],
88+
'heal': [{'name': '中国', 'value': china_data['chinaTotal']['heal']}],
89+
'dead': [{'name': '中国', 'value': china_data['chinaTotal']['dead']}]
90+
}
91+
92+
for item in records:
93+
result['confirmAdd'].append({'name': item['name'], 'value': item['confirmAdd']})
94+
result['confirm'].append({'name': item['name'], 'value': item['confirm']})
95+
result['heal'].append({'name': item['name'], 'value': item['heal']})
96+
result['dead'].append({'name': item['name'], 'value': item['dead']})
97+
98+
return json.dumps(result)
99+
100+
101+
@app.route('/china_top10')
102+
def get_china_top10():
103+
china_data = json.loads(r.get('china_data'))
104+
df = pd.DataFrame(china_data['province'],
105+
columns=['name', 'import_abroad', 'now_confirm', 'confirm', 'heal', 'dead'])
106+
top10 = df.sort_values('import_abroad', ascending=True).tail(10)
107+
result = {'country': top10['name'].values.tolist(), 'data': top10['import_abroad'].values.tolist()}
108+
return json.dumps(result)
109+
110+
111+
@app.route('/china_map')
112+
def get_china_map():
113+
china_data = json.loads(r.get('china_data'))
114+
df = pd.DataFrame(china_data['province'], columns=['name', 'import_abroad', 'now_confirm', 'confirm', 'heal', 'dead'])
115+
records = df.to_dict(orient="records")
116+
result = {
117+
'now_confirm': [],
118+
'confirm': [],
119+
'heal': [],
120+
'dead': []
121+
}
122+
123+
for item in records:
124+
result['now_confirm'].append({'name': item['name'], 'value': item['now_confirm']})
125+
result['confirm'].append({'name': item['name'], 'value': item['confirm']})
126+
result['heal'].append({'name': item['name'], 'value': item['heal']})
127+
result['dead'].append({'name': item['name'], 'value': item['dead']})
128+
129+
return json.dumps(result)
130+
131+
132+
if __name__ == '__main__':
133+
app.run(host='127.0.0.1', port=5200, debug=True)
134+
# print(get_china_data()[1])
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
"""
2+
右侧:最新动态
3+
https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoNewsArticleList
4+
5+
左侧:地区柱状图:新增 确诊 死亡
6+
https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist
7+
8+
9+
中间上方:国内:现有确诊 确诊 治愈 死亡 境外输入 无症状感染者 国外:现有确诊 确诊 治愈 死亡
10+
# 国内数据 https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5
11+
# 国外数据 https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoGlobalStatis
12+
13+
14+
中间下方:地图:确诊、治愈、死亡
15+
# 国内数据:https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5
16+
# 国外数据:https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist
17+
18+
"""
19+
20+
import requests
21+
import json
22+
import redis
23+
24+
header = {
25+
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
26+
}
27+
28+
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
29+
r = redis.Redis(connection_pool=pool)
30+
31+
32+
def pull_data_from_web(url):
33+
response = requests.get(url, headers=header)
34+
return json.loads(response.text) if response.status_code == 200 else None
35+
36+
37+
# 获取最新动态数据
38+
def get_article_data():
39+
data = pull_data_from_web('https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoNewsArticleList')
40+
if data is None:
41+
return ''
42+
return [[item['publish_time'], item['url'], item['title']] for item in data['data']['FAutoNewsArticleList']]
43+
44+
45+
# 获取各个国家当前【新增、确诊、治愈、死亡】数据
46+
def get_rank_data():
47+
data = pull_data_from_web('https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist')
48+
if data is None:
49+
return ''
50+
return [[item['name'], item['confirmAdd'], item['confirm'], item['heal'], item['dead']] for item in data['data']]
51+
52+
53+
# 获取国内统计数据【现有确诊 确诊 治愈 死亡 境外输入 无症状感染者】 & 各省份详细数据(确诊、治愈、死亡)
54+
def get_china_data():
55+
data = pull_data_from_web('https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5')
56+
if data is None:
57+
return ''
58+
dict = json.loads(data['data'])
59+
province_res = []
60+
for province in dict['areaTree'][0]['children']:
61+
name = province['name']
62+
now_confirm = province['total']['nowConfirm']
63+
confirm = province['total']['confirm']
64+
heal = province['total']['heal']
65+
dead = province['total']['dead']
66+
import_abroad = 0
67+
for item in province['children']:
68+
if item['name'] == '境外输入':
69+
import_abroad = item['total']['confirm']
70+
break
71+
province_res.append([name, import_abroad, now_confirm, confirm, heal, dead])
72+
return {'chinaTotal': dict['chinaTotal'], 'chinaAdd': dict['chinaAdd'], 'province': province_res}
73+
74+
75+
# 获取国外统计数据【现有确诊 确诊 治愈 死亡】
76+
def get_foreign_data():
77+
data = pull_data_from_web('https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoGlobalStatis')
78+
if data is None:
79+
return ''
80+
return data['data']['FAutoGlobalStatis']
81+
82+
83+
article_data = get_article_data()
84+
r.set('article_data', json.dumps(article_data))
85+
86+
rank_data = get_rank_data()
87+
r.set('rank_data', json.dumps(rank_data))
88+
89+
china_data = get_china_data()
90+
r.set('china_data', json.dumps(china_data))
91+
92+
foreign_data = get_foreign_data()
93+
r.set('foreign_data', json.dumps(foreign_data))
Binary file not shown.
Loading
Binary file not shown.

0 commit comments

Comments
 (0)