mirror of
https://github.com/Lost-MSth/Arcaea-server.git
synced 2026-02-09 09:17:26 +08:00
[Enhance] Recent 30
- Update Recent 30 mechanism. - Alter Recent 30 table structure. Note: 1. This is a TEST version. Maybe there are many bugs. 2. This special version is a line of demarcation.
This commit is contained in:
@@ -1,16 +1,19 @@
|
||||
import os
|
||||
import time
|
||||
|
||||
from core.init import FileChecker
|
||||
from core.operation import RefreshAllScoreRating, RefreshBundleCache, RefreshSongFileCache, SaveUpdateScore, UnlockUserItem, DeleteUserScore
|
||||
from core.rank import RankList
|
||||
from core.sql import Connect
|
||||
from core.user import User
|
||||
from flask import Blueprint, flash, redirect, render_template, request, url_for
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
import web.system
|
||||
import web.webscore
|
||||
from core.init import FileChecker
|
||||
from core.operation import (DeleteUserScore, RefreshAllScoreRating,
|
||||
RefreshBundleCache, RefreshSongFileCache,
|
||||
SaveUpdateScore, UnlockUserItem)
|
||||
from core.rank import RankList
|
||||
from core.score import Potential
|
||||
from core.sql import Connect
|
||||
from core.user import User
|
||||
from web.login import login_required
|
||||
|
||||
UPLOAD_FOLDER = 'database'
|
||||
@@ -97,8 +100,11 @@ def single_player_ptt():
|
||||
user_id = user_id[0]
|
||||
user = web.webscore.get_user(c, user_id)
|
||||
posts = web.webscore.get_user_score(c, user_id, 30)
|
||||
recent, recentptt = web.webscore.get_user_recent30(
|
||||
c, user_id)
|
||||
u = User()
|
||||
u.user_id = user_id
|
||||
p = Potential(c, u)
|
||||
recentptt = p.recent_10 / 10
|
||||
recent = p.recent_30_to_dict_list()
|
||||
if not posts:
|
||||
error = '无成绩 No score.'
|
||||
else:
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import time
|
||||
|
||||
from core.score import Potential
|
||||
|
||||
|
||||
def get_user_score(c, user_id, limit=-1, offset=0):
|
||||
# 返回用户的所有歌曲数据,带排名,返回字典列表
|
||||
@@ -74,37 +76,3 @@ def get_user(c, user_id):
|
||||
}
|
||||
|
||||
return r
|
||||
|
||||
|
||||
def get_user_recent30(c, user_id):
|
||||
# 获取玩家recent30信息并计算recent10的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
|
||||
|
||||
Reference in New Issue
Block a user