Minor modifies

This commit is contained in:
Remik1r3n 2025-01-23 19:49:10 +08:00
parent 6e05b211ac
commit a714fc5655
4 changed files with 21 additions and 34 deletions

View File

@ -55,14 +55,14 @@ def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, b
try: try:
currentUserAllResult = json.loads(apiSDGB(data, "UpsertUserAllApi", userId)) currentUserAllResult = json.loads(apiSDGB(data, "UpsertUserAllApi", userId))
except Request500Error: except Request500Error:
logger.warning("500 Error Triggered. Rebuilding data.") logger.warning("500エラーが発生しました。データを再構築します。")
retries += 1 retries += 1
continue continue
except Exception: except Exception:
raise WahlapServerBoomedError("邪门错误") raise WahlapServerBoomedError("不明なエラー")
break break
else: # 重试次数超过3次 else:
raise Request500Error("多次尝试后仍无法成功上传 UserAll") raise Request500Error("500エラーが発生しました。UserAllをアップロードできませんでした。")
###### Debug 機能:ログインボーナスをもう一度取得(確認用) ###### Debug 機能:ログインボーナスをもう一度取得(確認用)
@ -83,21 +83,21 @@ def generateLoginBonusList(userId, generateMode=1):
ログインボーナスリストを生成します ログインボーナスリストを生成します
generateMode ログインボーナスを生成する方法を指定します generateMode ログインボーナスを生成する方法を指定します
1: 全部 MAX にする 1: 全部 MAX にする
2: いま選択したボーナスのみ MAX にする選択したボーナスはないの場合は False を返す 2: 選択したボーナスのみ MAX にする選択したボーナスはないの場合は False を返す
''' '''
# ログインボーナスの MAX POINT は5の場合があります
# その全部のボーナスIDをこのリストに追加してください
Bonus5Id = [12, 29, 30, 38, 43, 604]
# HDDから、ログインボーナスデータを読み込む # HDDから、ログインボーナスデータを読み込む
# アップデートがある場合、このファイルを更新する必要があります # アップデートがある場合、このファイルを更新する必要があります
# 必ず最新のデータを使用してください # 必ず最新のデータを使用してください
with open('loginBonus.json') as file: with open('loginBonus.json') as file:
cache = json.load(file) cache = json.load(file)
loginBonusIdList = [item['id'] for item in cache] loginBonusIdList = [item['id'] for item in cache]
logger.debug(f"ログインボーナスIDリスト: {loginBonusIdList}") logger.debug(f"ログインボーナスIDリスト: {loginBonusIdList}")
# ログインボーナスの MAX POINT は5の場合があります
# その全部のボーナスIDをこのリストに追加してください
# 必ず最新のデータを使用してください
Bonus5Id = [12, 29, 30, 38, 43, 604]
# サーバーからUserのログインボーナスデータを取得 # サーバーからUserのログインボーナスデータを取得
data = json.dumps({ data = json.dumps({
"userId": int(userId), "userId": int(userId),

View File

@ -17,17 +17,18 @@ aesKeyPrism = "A;mv5YUpHBK3YxTy5KB^[;5]C2AL50Bq"
aesIVPrism = "9FM:sd9xA91X14v]" aesIVPrism = "9FM:sd9xA91X14v]"
class AESPKCS7: class AESPKCS7:
# 实现了 maimai 通讯所用的 AES 加密的类
def __init__(self, key: str, iv: str): def __init__(self, key: str, iv: str):
self.key = key.encode('utf-8') self.key = key.encode('utf-8')
self.iv = iv.encode('utf-8') self.iv = iv.encode('utf-8')
self.mode = AES.MODE_CBC self.mode = AES.MODE_CBC
# 加密
def encrypt(self, content: bytes) -> bytes: def encrypt(self, content: bytes) -> bytes:
cipher = AES.new(self.key, self.mode, self.iv) cipher = AES.new(self.key, self.mode, self.iv)
content_padded = pad(content, AES.block_size) content_padded = pad(content, AES.block_size)
encrypted_bytes = cipher.encrypt(content_padded) encrypted_bytes = cipher.encrypt(content_padded)
return encrypted_bytes return encrypted_bytes
# 解密
def decrypt(self, encrypted_content: bytes) -> str: def decrypt(self, encrypted_content: bytes) -> str:
cipher = AES.new(self.key, self.mode, self.iv) cipher = AES.new(self.key, self.mode, self.iv)
decrypted_padded = cipher.decrypt(encrypted_content) decrypted_padded = cipher.decrypt(encrypted_content)

View File

@ -39,15 +39,12 @@ def implUnlockThing(newUserItemList, userId: int, currentLoginTimestamp:int, cur
"extNum1": 0 "extNum1": 0
}) })
# UserData を取得
currentUserData = implGetUser_("Data", userId) currentUserData = implGetUser_("Data", userId)
currentUserData2 = currentUserData['userData'] currentUserData2 = currentUserData['userData']
# UserPlayLog を構築してアップロード
currentUploadUserPlaylogApiResult = apiUploadUserPlaylog(userId, musicDataToBeUploaded, currentUserData2, currentLoginResult['loginId']) currentUploadUserPlaylogApiResult = apiUploadUserPlaylog(userId, musicDataToBeUploaded, currentUserData2, currentLoginResult['loginId'])
logger.debug(f"上传 UserPlayLog 结果: {currentUploadUserPlaylogApiResult}") logger.debug(f"上传 UserPlayLog 结果: {currentUploadUserPlaylogApiResult}")
# UserAllを構築してアップロード
retries = 0 retries = 0
while retries < 3: while retries < 3:
currentSpecialNumber = calcSpecialNumber() currentSpecialNumber = calcSpecialNumber()
@ -68,7 +65,7 @@ def implUnlockThing(newUserItemList, userId: int, currentLoginTimestamp:int, cur
except Exception: except Exception:
raise WahlapServerBoomedError("邪门错误") raise WahlapServerBoomedError("邪门错误")
break break
else: # 重试次数超过3次 else:
raise Request500Error("多次尝试后仍无法成功上传 UserAll") raise Request500Error("多次尝试后仍无法成功上传 UserAll")
logger.info("解锁东西:结果:"+ str(currentUserAllResult)) logger.info("解锁东西:结果:"+ str(currentUserAllResult))

View File

@ -13,17 +13,6 @@ from Static_Settings import *
def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, loginId:int) -> str: def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, loginId:int) -> str:
'''返回 Json String。''' '''返回 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 # 构建一个 PlayLog
data = json.dumps({ data = json.dumps({
"userId": int(userId), "userId": int(userId),
@ -34,12 +23,12 @@ def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, lo
"version": 1041000, "version": 1041000,
"placeId": placeId, "placeId": placeId,
"placeName": placeName, "placeName": placeName,
"loginDate": int(time.time()), #似乎和登录timestamp不同,暂时不作更改 "loginDate": int(time.time()), #似乎和登录timestamp不同
"playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d'), "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', "userPlayDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0',
"type": 0, "type": 0,
"musicId": int(musicId), "musicId": int(musicDataToBeUploaded['musicId']),
"level": int(level), "level": int(musicDataToBeUploaded['level']),
"trackNo": 1, "trackNo": 1,
"vsMode": 0, "vsMode": 0,
"vsUserName": "", "vsUserName": "",
@ -73,9 +62,9 @@ def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, lo
"characterId5": currentUserData2['charaSlot'][4], "characterId5": currentUserData2['charaSlot'][4],
"characterLevel5": random.randint(1000,6500), "characterLevel5": random.randint(1000,6500),
"characterAwakening5": 5, "characterAwakening5": 5,
"achievement": int(achievement), "achievement": int(musicDataToBeUploaded['achievement']),
"deluxscore": int(deluxscoreMax), "deluxscore": int(musicDataToBeUploaded['deluxscoreMax']),
"scoreRank": int(scoreRank), "scoreRank": int(musicDataToBeUploaded['scoreRank']),
"maxCombo": 0, "maxCombo": 0,
"totalCombo": random.randint(700,900), "totalCombo": random.randint(700,900),
"maxSync": 0, "maxSync": 0,