forked from Kohaku/maimaiDX-Api
74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
# 解锁东西的一个通用的助手,不可独立使用
|
|
|
|
import json
|
|
from loguru import logger
|
|
|
|
from Static_Settings import *
|
|
from API_TitleServer import apiSDGB, calcSpecialNumber, WahlapServerBoomedError, Request500Error
|
|
from HelperGetUserThing import implGetUser_
|
|
from HelperUploadUserPlayLog import apiUploadUserPlaylog
|
|
from HelperUserAll import generateFullUserAll
|
|
|
|
def implUnlockThing(newUserItemList:list, userId: int, currentLoginTimestamp:int, currentLoginResult) -> str:
|
|
'''
|
|
解锁东西的实现
|
|
Note: itemKind 如下
|
|
PLATE = 1 # 姓名框
|
|
TITLE = 2 # 称号
|
|
ICON = 3 # 头像
|
|
PRESENT = 4
|
|
MUSIC = 5 # 乐曲
|
|
MUSIC_MASTER = 6
|
|
MUSIC_RE_MASTER = 7
|
|
MUSIC_STRONG = 8
|
|
CHARACTER = 9 # 旅行伙伴
|
|
PARTNER = 10 # 搭档
|
|
FRAME = 11 # 背景板
|
|
TICKET = 12 # 功能票
|
|
'''
|
|
# 上传上去的歌曲记录
|
|
musicDataToBeUploaded = ({
|
|
"musicId": 229, #洗衣机
|
|
"level": 0,
|
|
"playCount": 2,
|
|
"achievement": 0,
|
|
"comboStatus": 0,
|
|
"syncStatus": 0,
|
|
"deluxscoreMax": 0,
|
|
"scoreRank": 0,
|
|
"extNum1": 0
|
|
})
|
|
|
|
# UserData を取得
|
|
currentUserData = implGetUser_("Data", userId)
|
|
currentUserData2 = currentUserData['userData']
|
|
|
|
# UserPlayLog を構築してアップロード
|
|
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'] = "1" # Insert mode(Not overriding)
|
|
currentUserAll['upsertUserAll']['userItemList'] = newUserItemList
|
|
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
|