maimaiDX-Api/HelperUploadUserPlayLog.py
2025-01-23 18:52:09 +08:00

147 lines
4.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 上传一个占位用的游玩记录的 API 实现
import json
import pytz
import time
import random
from datetime import datetime
from loguru import logger
from API_TitleServer import apiSDGB
from Static_Settings import *
def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, loginId:int) -> str:
'''返回 Json String。'''
# 暂存,优化可读性(迫真)
musicId = musicDataToBeUploaded['musicId']
level = musicDataToBeUploaded['level']
#playCount = musicDataToBeUploaded['playCount']
achievement = musicDataToBeUploaded['achievement']
#comboStatus = musicDataToBeUploaded['comboStatus']
#syncStatus = musicDataToBeUploaded['syncStatus']
deluxscoreMax = musicDataToBeUploaded['deluxscoreMax']
scoreRank = musicDataToBeUploaded['scoreRank']
#extNum1 = musicDataToBeUploaded['extNum1']
# 构建一个 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(musicId),
"level": int(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(achievement),
"deluxscore": int(deluxscoreMax),
"scoreRank": int(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