# 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