mirror of
https://github.com/Remik1r3n/maimaiDX-Api.git
synced 2025-06-15 13:47:28 +08:00
Compare commits
No commits in common. "39b8d805bfbe931b33b88912b34cd29e9a69cb69" and "1b852dee9a0d2790b8e686d656f1caf9d7c486d7" have entirely different histories.
39b8d805bf
...
1b852dee9a
@ -23,10 +23,6 @@ def apiQueryLoginBonus(userId:int) -> str:
|
|||||||
def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, bonusGenerateMode=2):
|
def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, bonusGenerateMode=2):
|
||||||
'''
|
'''
|
||||||
ログインボーナスデータをアップロードする
|
ログインボーナスデータをアップロードする
|
||||||
bonusGenerateMode は、ログインボーナスを生成する方法を指定します。
|
|
||||||
0 : 何もしない、リセットのみ
|
|
||||||
1 : 全部 MAX にする
|
|
||||||
2 : 選択したボーナスのみ MAX にする(選択したボーナスはないの場合は False を返す)
|
|
||||||
'''
|
'''
|
||||||
musicDataToBeUploaded = {
|
musicDataToBeUploaded = {
|
||||||
"musicId": 229, #ぐるぐるWASH
|
"musicId": 229, #ぐるぐるWASH
|
||||||
@ -40,28 +36,18 @@ def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, b
|
|||||||
"extNum1": 0
|
"extNum1": 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# サーバーから UserData を取得
|
# UserData を取得
|
||||||
currentUserData = implGetUser_("Data", userId)
|
currentUserData = implGetUser_("Data", userId)
|
||||||
currentUserData2 = currentUserData['userData']
|
currentUserData2 = currentUserData['userData']
|
||||||
|
|
||||||
# サーバーからログインボーナスデータを取得
|
|
||||||
data = json.dumps({
|
|
||||||
"userId": int(userId),
|
|
||||||
"nextIndex": 0,
|
|
||||||
"maxCount": 2000
|
|
||||||
})
|
|
||||||
UserLoginBonusResponse = json.loads(apiSDGB(data, "GetUserLoginBonusApi", userId))
|
|
||||||
UserLoginBonusList = UserLoginBonusResponse['userLoginBonusList']
|
|
||||||
|
|
||||||
# UserPlayLog を構築してアップロード
|
# 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}")
|
||||||
|
|
||||||
# ログインボーナスリストを生成
|
# ログインボーナスリストを生成
|
||||||
if not bonusGenerateMode == 0:
|
finalBonusList = generateLoginBonusList(userId,bonusGenerateMode)
|
||||||
finalBonusList = generateLoginBonusList(UserLoginBonusList, bonusGenerateMode)
|
if not finalBonusList:
|
||||||
if not finalBonusList:
|
return False
|
||||||
return False
|
|
||||||
|
|
||||||
# UserAllを構築してアップロード
|
# UserAllを構築してアップロード
|
||||||
retries = 0
|
retries = 0
|
||||||
@ -70,13 +56,9 @@ def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, b
|
|||||||
currentUserAll = generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentSpecialNumber)
|
currentUserAll = generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentSpecialNumber)
|
||||||
|
|
||||||
currentUserAll['upsertUserAll']["userMusicDetailList"] = [musicDataToBeUploaded]
|
currentUserAll['upsertUserAll']["userMusicDetailList"] = [musicDataToBeUploaded]
|
||||||
if not bonusGenerateMode == 0:
|
currentUserAll['upsertUserAll']['userLoginBonusList'] = finalBonusList
|
||||||
currentUserAll['upsertUserAll']['userLoginBonusList'] = finalBonusList
|
|
||||||
currentUserAll['upsertUserAll']['isNewLoginBonusList'] = "0" * len(finalBonusList)
|
|
||||||
|
|
||||||
currentUserAll['upsertUserAll']['isNewMusicDetailList'] = "1"
|
currentUserAll['upsertUserAll']['isNewMusicDetailList'] = "1"
|
||||||
currentUserAll["upsertUserAll"]["userData"][0]["dailyCourseBonusDate"] = "1970-01-01 08:00:00" # リセット
|
currentUserAll['upsertUserAll']['isNewLoginBonusList'] = "0" * len(finalBonusList)
|
||||||
|
|
||||||
data = json.dumps(currentUserAll)
|
data = json.dumps(currentUserAll)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -101,18 +83,16 @@ def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, b
|
|||||||
"maxCount": 2000
|
"maxCount": 2000
|
||||||
})
|
})
|
||||||
finalLoginBonusData = json.loads(apiSDGB(data, "GetUserLoginBonusApi", userId))
|
finalLoginBonusData = json.loads(apiSDGB(data, "GetUserLoginBonusApi", userId))
|
||||||
return finalLoginBonusData
|
|
||||||
###### PRODUCTION 用には、上記のコードを削除してください
|
###### PRODUCTION 用には、上記のコードを削除してください
|
||||||
|
|
||||||
return currentUserAllResult
|
return finalLoginBonusData
|
||||||
|
|
||||||
def generateLoginBonusList(UserLoginBonusList, generateMode=1):
|
def generateLoginBonusList(userId, generateMode=1):
|
||||||
'''
|
'''
|
||||||
ログインボーナスリストを生成します。
|
ログインボーナスリストを生成します。
|
||||||
generateMode は、ログインボーナスを生成する方法を指定します。
|
generateMode は、ログインボーナスを生成する方法を指定します。
|
||||||
1: 選択したボーナスのみ MAX にする(選択したボーナスはないの場合は False を返す)
|
1: 全部 MAX にする
|
||||||
2: 全部 MAX にする
|
2: 選択したボーナスのみ MAX にする(選択したボーナスはないの場合は False を返す)
|
||||||
|
|
||||||
'''
|
'''
|
||||||
# HDDから、ログインボーナスデータを読み込む
|
# HDDから、ログインボーナスデータを読み込む
|
||||||
# アップデートがある場合、このファイルを更新する必要があります
|
# アップデートがある場合、このファイルを更新する必要があります
|
||||||
@ -126,6 +106,15 @@ def generateLoginBonusList(UserLoginBonusList, generateMode=1):
|
|||||||
# その全部のボーナスIDをこのリストに追加してください
|
# その全部のボーナスIDをこのリストに追加してください
|
||||||
# 必ず最新のデータを使用してください
|
# 必ず最新のデータを使用してください
|
||||||
Bonus5Id = [12, 29, 30, 38, 43, 604]
|
Bonus5Id = [12, 29, 30, 38, 43, 604]
|
||||||
|
|
||||||
|
# サーバーからUserのログインボーナスデータを取得
|
||||||
|
data = json.dumps({
|
||||||
|
"userId": int(userId),
|
||||||
|
"nextIndex": 0,
|
||||||
|
"maxCount": 2000
|
||||||
|
})
|
||||||
|
UserLoginBonusResponse = json.loads(apiSDGB(data, "GetUserLoginBonusApi", userId))
|
||||||
|
UserLoginBonusList = UserLoginBonusResponse['userLoginBonusList']
|
||||||
|
|
||||||
# UserBonusList から bonusId を取得
|
# UserBonusList から bonusId を取得
|
||||||
UserLoginBonusIdList = [item['bonusId'] for item in UserLoginBonusList]
|
UserLoginBonusIdList = [item['bonusId'] for item in UserLoginBonusList]
|
||||||
@ -135,21 +124,7 @@ def generateLoginBonusList(UserLoginBonusList, generateMode=1):
|
|||||||
logger.debug(f"存在しないボーナス: {NonExistingBonuses}")
|
logger.debug(f"存在しないボーナス: {NonExistingBonuses}")
|
||||||
|
|
||||||
bonusList = []
|
bonusList = []
|
||||||
if generateMode == 1: #選択したボーナスのみ MAX にする
|
if generateMode == 1: # AllMax Mode
|
||||||
for item in UserLoginBonusList:
|
|
||||||
if item['isCurrent'] and not item['isComplete']:
|
|
||||||
point = 4 if item['bonusId'] in Bonus5Id else 9
|
|
||||||
data = {
|
|
||||||
"bonusId": item['bonusId'],
|
|
||||||
"point": point,
|
|
||||||
"isCurrent": True,
|
|
||||||
"isComplete": False
|
|
||||||
}
|
|
||||||
bonusList.append(data)
|
|
||||||
if len(bonusList) == 0:
|
|
||||||
logger.warning("このユーザーはログインボーナスを選択していませんから失敗")
|
|
||||||
return False
|
|
||||||
elif generateMode == 2: #全部 MAX にする
|
|
||||||
# 存在しているボーナスを追加
|
# 存在しているボーナスを追加
|
||||||
for item in UserLoginBonusList:
|
for item in UserLoginBonusList:
|
||||||
if not item['isComplete']:
|
if not item['isComplete']:
|
||||||
@ -177,9 +152,20 @@ def generateLoginBonusList(UserLoginBonusList, generateMode=1):
|
|||||||
"isComplete": False
|
"isComplete": False
|
||||||
}
|
}
|
||||||
bonusList.append(data)
|
bonusList.append(data)
|
||||||
else:
|
elif generateMode == 2: # OnlyCurrent Mode
|
||||||
logger.error("generateMode は 1 または 2 でなければなりません")
|
for item in UserLoginBonusList:
|
||||||
return False
|
if item['isCurrent'] and not item['isComplete']:
|
||||||
|
point = 4 if item['bonusId'] in Bonus5Id else 9
|
||||||
|
data = {
|
||||||
|
"bonusId": item['bonusId'],
|
||||||
|
"point": point,
|
||||||
|
"isCurrent": True,
|
||||||
|
"isComplete": False
|
||||||
|
}
|
||||||
|
bonusList.append(data)
|
||||||
|
if len(bonusList) == 0:
|
||||||
|
logger.warning("このユーザーはログインボーナスを選択していませんから失敗")
|
||||||
|
return False
|
||||||
|
|
||||||
logger.debug(f"ログインボーナスリスト: {bonusList}")
|
logger.debug(f"ログインボーナスリスト: {bonusList}")
|
||||||
return bonusList
|
return bonusList
|
||||||
@ -193,8 +179,8 @@ if __name__ == "__main__":
|
|||||||
logger.info("登录失败")
|
logger.info("登录失败")
|
||||||
exit()
|
exit()
|
||||||
try:
|
try:
|
||||||
# Remember to change the mode!!!
|
# Remember to change the mode to 1 if you want to give all bonuses
|
||||||
logger.info(implLoginBonus(userId, currentLoginTimestamp, loginResult, 0))
|
logger.info(implLoginBonus(userId, currentLoginTimestamp, loginResult, 1))
|
||||||
logger.info(apiLogout(currentLoginTimestamp, userId))
|
logger.info(apiLogout(currentLoginTimestamp, userId))
|
||||||
except:
|
except:
|
||||||
logger.info(apiLogout(currentLoginTimestamp, userId))
|
logger.info(apiLogout(currentLoginTimestamp, userId))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user