forked from Kohaku/maimaiDX-Api
139 lines
4.5 KiB
Python
139 lines
4.5 KiB
Python
# 上传一个占位用的游玩记录的 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
|
|
|