# 删除成绩 import json from loguru import logger from Static_Settings import * from API_TitleServer import apiSDGB, calcSpecialNumber, WahlapServerBoomedError, Request500Error from HelperLogInOut import apiLogin, apiLogout, generateTimestamp from HelperGetUserThing import implGetUser_ from HelperUploadUserPlayLog import apiUploadUserPlaylog from HelperUserAll import generateFullUserAll def implDeleteMusicRecord(musicToBeDeleted: int, diffLevelId:int, userId: int, currentLoginTimestamp:int, currentLoginResult) -> str: ''' 删除成绩的实现 需要在外部先登录并传入登录结果 ''' # 上传上去的歌曲记录 musicDataToBeUploaded = ({ "musicId": musicToBeDeleted, "level": diffLevelId, "playCount": 1, "achievement": 0, "comboStatus": 0, "syncStatus": 0, "deluxscoreMax": 0, "scoreRank": 0, "extNum1": 0 }) # 取得 UserData currentUserData = implGetUser_("Data", userId) currentUserData2 = currentUserData['userData'] # 构建并上传一个游玩记录 currentUploadUserPlaylogApiResult = apiUploadUserPlaylog(userId, musicDataToBeUploaded, currentUserData2, currentLoginResult['loginId']) logger.debug(f"上传 UserPlayLog 结果: {currentUploadUserPlaylogApiResult}") # 构建并上传 UserAll retries = 0 while retries < 3: currentSpecialNumber = calcSpecialNumber() currentUserAll = generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentSpecialNumber) currentUserAll['upsertUserAll']["userMusicDetailList"] = [musicDataToBeUploaded] currentUserAll['upsertUserAll']['isNewMusicDetailList'] = "0" #0为编辑 即可删除掉成绩 data = json.dumps(currentUserAll) try: currentUserAllResult = json.loads(apiSDGB(data, "UpsertUserAllApi", userId)) except Request500Error: logger.warning("500 Error Triggered. Rebuilding data.") retries += 1 continue except Exception: raise WahlapServerBoomedError("邪门错误") break else: # 重试次数超过3次 raise Request500Error("多次尝试后仍无法成功上传 UserAll") logger.info("删除成绩:结果:"+ str(currentUserAllResult)) return currentUserAllResult if __name__ == "__main__": userId = testUid currentLoginTimestamp = generateTimestamp() loginResult = apiLogin(currentLoginTimestamp, userId) musicId = 11548 #229 is guruguru wash levelId = 3 #3 is MASTER if loginResult['returnCode'] != 1: logger.info("登录失败") exit() try: logger.info(implDeleteMusicRecord(musicId, levelId, userId, currentLoginTimestamp, loginResult)) logger.info(apiLogout(currentLoginTimestamp, userId)) except: logger.info(apiLogout(currentLoginTimestamp, userId)) logger.warning("Error")