mirror of
https://github.com/Remik1r3n/maimaiDX-Api.git
synced 2025-05-20 04:17:28 +08:00
198 lines
9.6 KiB
Python
198 lines
9.6 KiB
Python
# UserAll 有关的一些辅助函数
|
|
|
|
import pytz
|
|
from datetime import datetime
|
|
from Config import *
|
|
from HelperGetUserThing import implGetUser_
|
|
|
|
from HelperGetUserMusicDetail import getUserMusicDetail
|
|
from loguru import logger
|
|
|
|
def isNewMusicType(userId, musicId, level) -> str:
|
|
"""判断这首 musicId 在 isNewMusicDetailList 应该填什么
|
|
0: Edit
|
|
1: Insert
|
|
一次只能处理一首歌,所以返回值是 str
|
|
|
|
未完工,仅供测试
|
|
"""
|
|
userMusicDetailList = getUserMusicDetail(userId, musicId, 1)['userMusicList'][0]['userMusicDetailList']
|
|
logger.info(userMusicDetailList)
|
|
try:
|
|
if userMusicDetailList[0]['musicId'] == musicId and userMusicDetailList[0]['level'] == level:
|
|
logger.info(f"We think {musicId} Level {level} should use EDIT.")
|
|
return "0"
|
|
except:
|
|
return "1"
|
|
|
|
|
|
def generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentPlaySpecial):
|
|
"""从服务器取得必要的数据并构建一个比较完整的 UserAll"""
|
|
|
|
# 先构建一个基础 UserAll
|
|
currentUserAll = generateUserAllData(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentPlaySpecial)
|
|
|
|
# 然后从服务器取得必要的数据
|
|
currentUserExtend = implGetUser_("Extend", userId, True)
|
|
currentUserOption = implGetUser_("Option", userId, True)
|
|
currentUserRating = implGetUser_("Rating", userId, True)
|
|
currentUserActivity = implGetUser_("Activity", userId, True)
|
|
currentUserCharge = implGetUser_("Charge", userId, True)
|
|
|
|
# 把这些数据都追加进去
|
|
currentUserAll['upsertUserAll']['userExtend'] = [currentUserExtend['userExtend']]
|
|
currentUserAll['upsertUserAll']['userOption'] = [currentUserOption['userOption']]
|
|
currentUserAll['upsertUserAll']['userRatingList'] = [currentUserRating['userRating']]
|
|
currentUserAll['upsertUserAll']['userActivityList'] = [currentUserActivity['userActivity']]
|
|
currentUserAll['upsertUserAll']['userChargeList'] = currentUserCharge['userChargeList']
|
|
|
|
# 完事
|
|
return currentUserAll
|
|
|
|
|
|
def generateUserAllData(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentPlaySpecial):
|
|
"""构建一个非常基础的 UserAll 数据,必须手动填充一些数据"""
|
|
|
|
data = {
|
|
"userId": userId,
|
|
"playlogId": currentLoginResult['loginId'],
|
|
"isEventMode": False,
|
|
"isFreePlay": False,
|
|
"upsertUserAll": {
|
|
"userData": [
|
|
{
|
|
"accessCode": "",
|
|
"userName": currentUserData2['userName'],
|
|
"isNetMember": 1,
|
|
"iconId": currentUserData2['iconId'],
|
|
"plateId": currentUserData2['plateId'],
|
|
"titleId": currentUserData2['titleId'],
|
|
"partnerId": currentUserData2['partnerId'],
|
|
"frameId": currentUserData2['frameId'],
|
|
"selectMapId": currentUserData2['selectMapId'],
|
|
"totalAwake": currentUserData2['totalAwake'],
|
|
"gradeRating": currentUserData2['gradeRating'],
|
|
"musicRating": currentUserData2['musicRating'],
|
|
"playerRating": currentUserData2['playerRating'],
|
|
"highestRating": currentUserData2['highestRating'],
|
|
"gradeRank": currentUserData2['gradeRank'],
|
|
"classRank": currentUserData2['classRank'],
|
|
"courseRank": currentUserData2['courseRank'],
|
|
"charaSlot": currentUserData2['charaSlot'],
|
|
"charaLockSlot": currentUserData2['charaLockSlot'],
|
|
"contentBit": currentUserData2['contentBit'],
|
|
"playCount": currentUserData2['playCount'],
|
|
"currentPlayCount": currentUserData2['currentPlayCount'],
|
|
"renameCredit": 0,
|
|
"mapStock": currentUserData2['mapStock'],
|
|
"eventWatchedDate": currentUserData2['eventWatchedDate'],
|
|
"lastGameId": "SDGB",
|
|
"lastRomVersion": currentUserData2['lastRomVersion'],
|
|
"lastDataVersion": currentUserData2['lastDataVersion'],
|
|
#"lastLoginDate": currentLoginResult['lastLoginDate'], # sb
|
|
"lastLoginDate": currentUserData2['lastLoginDate'], # 等待测试
|
|
"lastPlayDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0',
|
|
"lastPlayCredit": 1,
|
|
"lastPlayMode": 0,
|
|
"lastPlaceId": placeId,
|
|
"lastPlaceName": placeName,
|
|
"lastAllNetId": 0,
|
|
"lastRegionId": regionId,
|
|
"lastRegionName": regionName,
|
|
"lastClientId": clientId,
|
|
"lastCountryCode": "CHN",
|
|
"lastSelectEMoney": 0,
|
|
"lastSelectTicket": 0,
|
|
"lastSelectCourse": currentUserData2['lastSelectCourse'],
|
|
"lastCountCourse": 0,
|
|
"firstGameId": "SDGB",
|
|
"firstRomVersion": currentUserData2['firstRomVersion'],
|
|
"firstDataVersion": currentUserData2['firstDataVersion'],
|
|
"firstPlayDate": currentUserData2['firstPlayDate'],
|
|
"compatibleCmVersion": currentUserData2['compatibleCmVersion'],
|
|
"dailyBonusDate": currentUserData2['dailyBonusDate'],
|
|
"dailyCourseBonusDate": currentUserData2['dailyCourseBonusDate'],
|
|
"lastPairLoginDate": currentUserData2['lastPairLoginDate'],
|
|
"lastTrialPlayDate": currentUserData2['lastTrialPlayDate'],
|
|
"playVsCount": 0,
|
|
"playSyncCount": 0,
|
|
"winCount": 0,
|
|
"helpCount": 0,
|
|
"comboCount": 0,
|
|
"totalDeluxscore": currentUserData2['totalDeluxscore'],
|
|
"totalBasicDeluxscore": currentUserData2['totalBasicDeluxscore'],
|
|
"totalAdvancedDeluxscore": currentUserData2['totalAdvancedDeluxscore'],
|
|
"totalExpertDeluxscore": currentUserData2['totalExpertDeluxscore'],
|
|
"totalMasterDeluxscore": currentUserData2['totalMasterDeluxscore'],
|
|
"totalReMasterDeluxscore": currentUserData2['totalReMasterDeluxscore'],
|
|
"totalSync": currentUserData2['totalSync'],
|
|
"totalBasicSync": currentUserData2['totalBasicSync'],
|
|
"totalAdvancedSync": currentUserData2['totalAdvancedSync'],
|
|
"totalExpertSync": currentUserData2['totalExpertSync'],
|
|
"totalMasterSync": currentUserData2['totalMasterSync'],
|
|
"totalReMasterSync": currentUserData2['totalReMasterSync'],
|
|
"totalAchievement": currentUserData2['totalAchievement'],
|
|
"totalBasicAchievement": currentUserData2['totalBasicAchievement'],
|
|
"totalAdvancedAchievement": currentUserData2['totalAdvancedAchievement'],
|
|
"totalExpertAchievement": currentUserData2['totalExpertAchievement'],
|
|
"totalMasterAchievement": currentUserData2['totalMasterAchievement'],
|
|
"totalReMasterAchievement": currentUserData2['totalReMasterAchievement'],
|
|
"playerOldRating": currentUserData2['playerOldRating'],
|
|
"playerNewRating": currentUserData2['playerNewRating'],
|
|
"banState": 0,
|
|
"dateTime": currentLoginTimestamp
|
|
}
|
|
],
|
|
"userExtend": [], #需要填上
|
|
"userOption": [], #需要填上
|
|
"userGhost": [],
|
|
"userCharacterList": [],
|
|
"userMapList": [],
|
|
"userLoginBonusList": [],
|
|
"userRatingList": [], #需要填上
|
|
"userItemList": [], #可选,但经常要填上
|
|
"userMusicDetailList": [],#需要填上
|
|
"userCourseList": [],
|
|
"userFriendSeasonRankingList": [],
|
|
"userChargeList": [], #需要填上
|
|
"userFavoriteList": [],
|
|
"userActivityList": [], #需要填上
|
|
"userGamePlaylogList": [
|
|
{
|
|
"playlogId": currentLoginResult['loginId'],
|
|
"version": "1.41.00",
|
|
"playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0',
|
|
"playMode": 0,
|
|
"useTicketId": -1,
|
|
"playCredit": 1,
|
|
"playTrack": 1,
|
|
"clientId": clientId,
|
|
"isPlayTutorial": False,
|
|
"isEventMode": False,
|
|
"isNewFree": False,
|
|
"playCount": currentUserData2['playCount'],
|
|
"playSpecial": currentPlaySpecial,
|
|
"playOtherUserId": 0
|
|
}
|
|
],
|
|
"user2pPlaylog": {
|
|
"userId1": 0,
|
|
"userId2": 0,
|
|
"userName1": "",
|
|
"userName2": "",
|
|
"regionId": 0,
|
|
"placeId": 0,
|
|
"user2pPlaylogDetailList": []
|
|
},
|
|
"isNewCharacterList": "",
|
|
"isNewMapList": "",
|
|
"isNewLoginBonusList": "",
|
|
"isNewItemList": "",
|
|
"isNewMusicDetailList": "", #可选但经常要填上
|
|
"isNewCourseList": "0",
|
|
"isNewFavoriteList": "",
|
|
"isNewFriendSeasonRankingList": ""
|
|
}
|
|
}
|
|
return data
|