271 lines
11 KiB
Python
271 lines
11 KiB
Python
# UserAll 有关的一些辅助函数
|
|
|
|
import pytz
|
|
from datetime import datetime
|
|
from loguru import logger
|
|
|
|
from HelperGetUserThing import implGetUser_
|
|
from HelperGetUserMusicDetail import getUserMusicDetail
|
|
|
|
from Config import (
|
|
clientId,
|
|
placeName,
|
|
placeId,
|
|
regionId,
|
|
regionName,
|
|
)
|
|
|
|
|
|
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)
|
|
currentUserMissionData = implGetUser_("MissionData", 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"
|
|
]
|
|
currentUserAll["upsertUserAll"]["userWeeklyData"] = currentUserMissionData[
|
|
"userWeeklyData"
|
|
]
|
|
|
|
# 完事
|
|
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,
|
|
"point": currentUserData2["point"],
|
|
"totalPoint": currentUserData2["totalPoint"],
|
|
"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,
|
|
"friendRegistSkip": currentUserData2["friendRegistSkip"],
|
|
"dateTime": currentLoginTimestamp,
|
|
}
|
|
],
|
|
"userExtend": [], # 需要填上
|
|
"userOption": [], # 需要填上
|
|
"userGhost": [],
|
|
"userCharacterList": [],
|
|
"userMapList": [],
|
|
"userLoginBonusList": [],
|
|
"userRatingList": [], # 需要填上
|
|
"userItemList": [], # 可选,但经常要填上
|
|
"userMusicDetailList": [], # 需要填上
|
|
"userCourseList": [],
|
|
"userFriendSeasonRankingList": [],
|
|
"userChargeList": [], # 需要填上
|
|
"userFavoriteList": [],
|
|
"userActivityList": [], # 需要填上
|
|
"userMissionDataList": [],
|
|
"userWeeklyData": [], # 应该需要填上
|
|
"userGamePlaylogList": [
|
|
{
|
|
"playlogId": currentLoginResult["loginId"],
|
|
"version": "1.51.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": [],
|
|
},
|
|
"userIntimateList": [],
|
|
"userShopItemStockList": [],
|
|
"userGetPointList": [],
|
|
"userTradeItemList": [],
|
|
"userFavoritemusicList": [],
|
|
"userKaleidxScopeList": [],
|
|
"isNewCharacterList": "",
|
|
"isNewMapList": "",
|
|
"isNewLoginBonusList": "",
|
|
"isNewItemList": "",
|
|
"isNewMusicDetailList": "", # 可选但经常要填上
|
|
"isNewCourseList": "0",
|
|
"isNewFavoriteList": "",
|
|
"isNewFriendSeasonRankingList": "",
|
|
"isNewUserIntimateList": "",
|
|
"isNewFavoritemusicList": "",
|
|
"isNewKaleidxScopeList": "",
|
|
},
|
|
}
|
|
return data
|