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