Update to v1.4

This commit is contained in:
Lost-MSth
2020-10-30 20:17:21 +08:00
parent bb7ba249e9
commit 123554e24d
46 changed files with 9758 additions and 9638 deletions

View File

@@ -0,0 +1,104 @@
import time
def get_user_score(c, user_id, limit=-1):
# 返回用户的所有歌曲数据,带排名,返回字典列表
if limit >= 0:
c.execute('''select * from best_score where user_id =:a order by rating DESC limit :b''',
{'a': user_id, 'b': limit})
else:
c.execute(
'''select * from best_score where user_id =:a order by rating DESC''', {'a': user_id})
x = c.fetchall()
r = []
if x:
rank = 0
for i in x:
rank += 1
r.append({
"song_id": i[1],
"difficulty": i[2],
"score": i[3],
"shiny_perfect_count": i[4],
"perfect_count": i[5],
"near_count": i[6],
"miss_count": i[7],
"health": i[8],
"modifier": i[9],
"time_played": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(i[10])),
"best_clear_type": i[11],
"clear_type": i[12],
"rating": i[13],
"rank": rank
})
return r
def get_user(c, user_id):
# 得到user表部分用户信息返回字典
c.execute('''select * from user where user_id = :a''', {'a': user_id})
x = c.fetchone()
r = None
if x:
join_date = None
time_played = None
if x[3]:
join_date = time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime(int(x[3])//1000))
if x[20]:
time_played = time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime(int(x[20])//1000))
r = {'name': x[1],
'user_id': user_id,
'join_date': join_date,
'user_code': x[4],
'rating_ptt': x[5],
'song_id': x[11],
'difficulty': x[12],
'score': x[13],
'shiny_perfect_count': x[14],
'perfect_count': x[15],
'near_count': x[16],
'miss_count': x[17],
'time_played': time_played,
'clear_type': x[21],
'rating': x[22]
}
return r
def get_user_recent30(c, user_id):
# 获取玩家recent30信息并计算这一部分的ptt返回字典列表和一个值
c.execute('''select * from recent30 where user_id=:a''', {'a': user_id})
sumr = 0
x = c.fetchone()
r = []
if x is not None:
r30 = []
s30 = []
for i in range(1, 61, 2):
if x[i] is not None:
r30.append(float(x[i]))
s30.append(x[i+1])
else:
r30.append(0)
s30.append('')
r30, s30 = (list(t) for t in zip(*sorted(zip(r30, s30), reverse=True)))
songs = []
i = 0
while len(songs) < 10 and i <= 29 and s30[i] != '' and s30[i] is not None:
if s30[i] not in songs:
sumr += r30[i]
songs.append(s30[i])
i += 1
for i in range(0, 30):
if s30[i]:
r.append({
'song_id': s30[i][:-1],
'difficulty': int(s30[i][-1]),
'rating': r30[i]
})
return r, sumr / 10