[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:
Lost-MSth
2024-04-30 00:27:23 +08:00
parent efedd96908
commit 5c539bdf59
10 changed files with 201 additions and 215 deletions

View File

@@ -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:

View File

@@ -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