maimaiDX-Api/HelperUnlockThing.py
2025-01-23 19:49:10 +08:00

73 lines
2.5 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, 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
})
currentUserData = implGetUser_("Data", userId)
currentUserData2 = currentUserData['userData']
currentUploadUserPlaylogApiResult = apiUploadUserPlaylog(userId, musicDataToBeUploaded, currentUserData2, currentLoginResult['loginId'])
logger.debug(f"上传 UserPlayLog 结果: {currentUploadUserPlaylogApiResult}")
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
currentUserAll['upsertUserAll']['isNewItemList'] = "1" * len(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:
raise Request500Error("多次尝试后仍无法成功上传 UserAll")
logger.info("解锁东西:结果:"+ str(currentUserAllResult))
return currentUserAllResult