# 上传一个占位用的游玩记录的 API 实现 import json import pytz import time import random from datetime import datetime from loguru import logger from API_TitleServer import apiSDGB from Config import * def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, loginId:int) -> str: """ 上传一个 UserPlayLog。 注意:成绩为随机的空成绩,只用作占位 返回 Json String。""" # 构建一个 PlayLog data = json.dumps({ "userId": int(userId), "userPlaylog": { "userId": 0, "orderId": 0, "playlogId": loginId, "version": 1041000, "placeId": placeId, "placeName": placeName, "loginDate": int(time.time()), #似乎和登录timestamp不同 "playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d'), "userPlayDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0', "type": 0, "musicId": int(musicDataToBeUploaded['musicId']), "level": int(musicDataToBeUploaded['level']), "trackNo": 1, "vsMode": 0, "vsUserName": "", "vsStatus": 0, "vsUserRating": 0, "vsUserAchievement": 0, "vsUserGradeRank": 0, "vsRank": 0, "playerNum": 1, "playedUserId1": 0, "playedUserName1": "", "playedMusicLevel1": 0, "playedUserId2": 0, "playedUserName2": "", "playedMusicLevel2": 0, "playedUserId3": 0, "playedUserName3": "", "playedMusicLevel3": 0, "characterId1": currentUserData2['charaSlot'][0], "characterLevel1": random.randint(1000,6500), "characterAwakening1": 5, "characterId2": currentUserData2['charaSlot'][1], "characterLevel2": random.randint(1000,6500), "characterAwakening2": 5, "characterId3": currentUserData2['charaSlot'][2], "characterLevel3": random.randint(1000,6500), "characterAwakening3": 5, "characterId4": currentUserData2['charaSlot'][3], "characterLevel4": random.randint(1000,6500), "characterAwakening4": 5, "characterId5": currentUserData2['charaSlot'][4], "characterLevel5": random.randint(1000,6500), "characterAwakening5": 5, "achievement": int(musicDataToBeUploaded['achievement']), "deluxscore": int(musicDataToBeUploaded['deluxscoreMax']), "scoreRank": int(musicDataToBeUploaded['scoreRank']), "maxCombo": 0, "totalCombo": random.randint(700,900), "maxSync": 0, "totalSync": 0, "tapCriticalPerfect": 0, "tapPerfect": 0, "tapGreat": 0, "tapGood": 0, "tapMiss": random.randint(1,10), "holdCriticalPerfect": 0, "holdPerfect": 0, "holdGreat": 0, "holdGood": 0, "holdMiss": random.randint(1,15), "slideCriticalPerfect": 0, "slidePerfect": 0, "slideGreat": 0, "slideGood": 0, "slideMiss": random.randint(1,15), "touchCriticalPerfect": 0, "touchPerfect": 0, "touchGreat": 0, "touchGood": 0, "touchMiss": random.randint(1,15), "breakCriticalPerfect": 0, "breakPerfect": 0, "breakGreat": 0, "breakGood": 0, "breakMiss": random.randint(1,15), "isTap": True, "isHold": True, "isSlide": True, "isTouch": True, "isBreak": True, "isCriticalDisp": True, "isFastLateDisp": True, "fastCount": 0, "lateCount": 0, "isAchieveNewRecord": True, "isDeluxscoreNewRecord": True, "comboStatus": 0, "syncStatus": 0, "isClear": False, 'beforeRating': currentUserData2['playerRating'], 'afterRating': currentUserData2['playerRating'], "beforeGrade": 0, "afterGrade": 0, "afterGradeRank": 1, 'beforeDeluxRating': currentUserData2['playerRating'], 'afterDeluxRating': currentUserData2['playerRating'], "isPlayTutorial": False, "isEventMode": False, "isFreedomMode": False, "playMode": 0, "isNewFree": False, "trialPlayAchievement": -1, "extNum1": 0, "extNum2": 0, "extNum4": 3020, "extBool1": False } }) # 发送请求 result = apiSDGB(data, "UploadUserPlaylogApi", userId) logger.info("上传游玩记录:结果:"+ str(result)) # 返回响应 return result