[Enhance][Bug fix] download songlist & new skill & API null recent

- Add `amane` and add support for `skill_amane`
- Add a parser for `songlist` to specify downloadable files
- Fix a bug that users with no recent scores cannot get `recent30` via API
This commit is contained in:
Lost-MSth
2022-11-10 18:00:27 +08:00
parent b70bfd6081
commit e1ce4d9ec4
11 changed files with 168 additions and 60 deletions

View File

@@ -66,7 +66,7 @@ def users_get(data, user):
def users_user_get(user, user_id):
'''查询用户信息'''
if user_id <= 0:
return error_return(InputError(api_error_code=-4))
return error_return(InputError(api_error_code=-110))
# 查别人需要select权限
if user_id != user.user_id and not user.role.has_power('select'):
return error_return(NoAccess('No permission', api_error_code=-1), 403)
@@ -114,7 +114,7 @@ def users_user_put(data, user, user_id):
def users_user_b30_get(user, user_id):
'''查询用户b30'''
if user_id <= 0:
return error_return(InputError(api_error_code=-4))
return error_return(InputError(api_error_code=-110))
# 查别人需要select权限
if user_id != user.user_id and not user.role.has_power('select'):
return error_return(NoAccess('No permission', api_error_code=-1), 403)
@@ -123,6 +123,9 @@ def users_user_b30_get(user, user_id):
x = UserScoreList(c, UserInfo(c, user_id))
x.query.limit = 30
x.select_from_user()
if not x.scores:
raise NoData(
f'No best30 data of user `{user_id}`', api_error_code=-3)
x.select_song_name()
r = x.to_dict_list()
rating_sum = sum([i.rating for i in x.scores])
@@ -136,7 +139,7 @@ def users_user_b30_get(user, user_id):
def users_user_best_get(data, user, user_id):
'''查询用户所有best成绩'''
if user_id <= 0:
return error_return(InputError(api_error_code=-4))
return error_return(InputError(api_error_code=-110))
# 查别人需要select权限
if user_id != user.user_id and not user.role.has_power('select'):
return error_return(NoAccess('No permission', api_error_code=-1), 403)
@@ -145,6 +148,9 @@ def users_user_best_get(data, user, user_id):
x = UserScoreList(c, UserInfo(c, user_id))
x.query.from_dict(data)
x.select_from_user()
if not x.scores:
raise NoData(
f'No best score data of user `{user_id}`', api_error_code=-3)
r = x.to_dict_list()
return success_return({'user_id': user_id, 'data': r})
@@ -156,7 +162,7 @@ def users_user_r30_get(user, user_id):
'''查询用户r30'''
if user_id <= 0:
return error_return(InputError(api_error_code=-4))
return error_return(InputError(api_error_code=-110))
# 查别人需要select权限
if user_id != user.user_id and not user.role.has_power('select'):
return error_return(NoAccess('No permission', api_error_code=-1), 403)
@@ -173,7 +179,7 @@ def users_user_role_get(user, user_id):
'''查询用户role和powers'''
if user_id <= 0:
return error_return(InputError(api_error_code=-4))
return error_return(InputError(api_error_code=-110))
if user_id == user.user_id:
return success_return({'user_id': user.user_id, 'role': user.role.role_id, 'powers': [i.power_id for i in user.role.powers]})