44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
from API_TitleServer import *
|
|
from HelperLogInOut import apiLogin, apiLogout, generateTimestamp
|
|
from Config import *
|
|
import rapidjson as json
|
|
from HelperMusicDB import getMusicTitle
|
|
from loguru import logger
|
|
import sys
|
|
|
|
def getUserMusicDetail(userId:int, nextIndex:int=0, maxCount:int=50) -> dict:
|
|
data = json.dumps({
|
|
"userId": int(userId),
|
|
"nextIndex": nextIndex,
|
|
"maxCount": maxCount
|
|
})
|
|
return json.loads(apiSDGB(data, "GetUserMusicApi", userId))
|
|
|
|
def getUserFullMusicDetail(userId: int):
|
|
currentUserMusicDetailList = []
|
|
nextIndex:int|None = None
|
|
while nextIndex != 0 or nextIndex is None:
|
|
userMusicResponse = getUserMusicDetail(userId, nextIndex or 0)
|
|
nextIndex = userMusicResponse['nextIndex']
|
|
logger.info(f"NextIndex: {nextIndex}")
|
|
|
|
if not userMusicResponse['userMusicList']:
|
|
break
|
|
for currentMusic in userMusicResponse['userMusicList']:
|
|
for currentMusicDetail in currentMusic['userMusicDetailList']:
|
|
if not currentMusicDetail['playCount'] > 0:
|
|
continue
|
|
currentUserMusicDetailList.append(currentMusicDetail)
|
|
return currentUserMusicDetailList
|
|
|
|
def parseUserFullMusicDetail(userFullMusicDetailList: list):
|
|
musicDetailList = []
|
|
for currentMusicDetail in userFullMusicDetailList:
|
|
musicDetailList.append({
|
|
'歌名': getMusicTitle(currentMusicDetail['musicId']),
|
|
'难度': currentMusicDetail['level'],
|
|
'分数': currentMusicDetail['achievement'] / 10000,
|
|
'DX分数': currentMusicDetail['deluxscoreMax']
|
|
})
|
|
return musicDetailList
|